数据与AI
需要编写或维护 Milvus Jupyter…
创建或编辑 Milvus 应用级 Jupyter notebook 示例(如 RAG、语义搜索、混合搜索),以 .md 为源、转换为 .ipynb 后执行测试。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要编写或维护 Milvus Jupyt特定
解决思路
- 用 Markdown-first 工作流:AI 写/编辑 `.md` 文件,不直接编辑 `.ipynb`,因为 `.ipynb` 含复杂 JSON、metadata、outputs 和 execution counts。
- 用 `jupyter-switch` 将 `.md` 转换为可运行的 `.ipynb`。
- 保持 `.md` 和 `.ipynb` 两个文件同步,把 `.md` 作为编辑的事实来源。
- 在 `.md` 中,把 Python 代码块(```python ... ```)对应为 notebook 的 code cells。
- 在 `.md` 中,把非 Python 代码块内容对应为 markdown cells。
- 不把 cell outputs 保存到 `.md`,输出在运行 notebook 时生成。
- 运行 `uvx jupyter-switch example.md`,生成 `example.ipynb`。
- 运行 `uvx jupyter-switch example.ipynb`,生成 `example.md`。
- 转换时不修改或删除原始输入文件。
- 如果输出文件已存在,转换时自动创建 `.bak` 备份。
- 创建新 notebook 时,先创建 `example.md` 并写入内容。
- 创建新 notebook 时,运行 `uvx jupyter-switch example.md`,使 `example.md` 和 `example.ipynb` 同时存在。
- 编辑已有 notebook 时,如果只有 `.ipynb`,先运行 `uvx jupyter-switch example.ipynb` 得到 `.md`。
- 编辑已有 notebook 时,编辑 `.md` 文件。
- 编辑已有 notebook 时,运行 `uvx jupyter-switch example.md` 转回 `.ipynb`。
- 运行 notebook 前,先确定使用哪个 Python 环境,因为系统默认 `jupyter execute` 可能没有所需包。
- 检测可用环境:运行 `conda env list 2>/dev/null || mamba env list 2>/dev/null` 发现 conda/mamba 环境。
- 检测可用环境:运行 `jupyter kernelspec list 2>/dev/null` 发现已注册 Jupyter kernels。
- 检测可用环境:运行 `which python3 2>/dev/null && python3 --version 2>/dev/null` 检查系统默认 Python。
- 检测可用环境:运行 `ls -d .venv/ venv/ 2>/dev/null` 检查工作目录中的本地虚拟环境。
- 检测可用环境:运行 `test -f pyproject.toml && test -d .venv && echo "uv/pip project venv detected"` 检查 uv 管理的项目。
- 向用户询问使用哪个环境,并展示编号列表,包含所有检测到的环境。
- 环境选择列表包含:系统默认,直接运行 `jupyter execute`,不加 `--kernel_name`。
- 环境选择列表包含:每个检测到的 conda/mamba 环境,显示名称和路径。
- 环境选择列表包含:每个已注册 Jupyter kernel,显示 kernel 名称。
- 环境选择列表包含:本地 venv(如果发现 `.venv/` 或 `venv/`),使用该 venv 内的 Python。
- 环境选择列表包含:自定义,让用户输入 Python 路径或环境名。
- 对 uv 项目:如果工作目录有 `pyproject.toml` + `.venv/`,本地 venv 选项覆盖该情况;如果 jupyter 是项目依赖,用户也可运行 `uv run jupyter execute example.ipynb`。
- 应用所选环境:如果已经是注册 Jupyter kernel,使用 `jupyter execute --kernel_name=<name>`。
- 应用所选环境:如果 conda 环境尚未注册为 kernel,先运行 `<env-python> -m ipykernel install --user --name <name> --display-name "<label>"`,然后使用 `--kernel_name=<name>`。
- 应用所选环境:如果是自定义 Python 路径,也先注册为 kernel,再使用 `--kernel_name`。
- 运行前,在 `.md` 文件中注释掉 setup-only cells,这些 cells 面向首次用户但不应在自动化测试环境运行。
- 注释掉 `pip install` cells:依赖应已在所选 Jupyter 环境安装;如果有缺失或需要升级,在目标环境外部用 `--upgrade` 安装,不要在 notebook 内安装。
- 注释掉 API key/凭据占位 cells,例如 `os.environ["OPENAI_API_KEY"] = "sk-***********"`;改为在运行前外部设置环境变量。
- 注释掉 mock/demo-only cells:任何纯演示且会在真实运行中失败或干扰的 cells。
- 注释 cell 时,将内容包裹在块注释中,使 cell 仍执行(产生空输出)但不做任何事。
- 块注释示例:`# # pip install --upgrade langchain pymilvus`、`# import os`、`# os.environ["OPENAI_API_KEY"] = "sk-***********"`。
- 保持 notebook 结构完整(cell 数量、顺序),避免与外部 Jupyter 环境冲突。
- 设置环境变量:在 shell 中 export 后再运行 `jupyter execute`,或把环境变量前缀到命令。
- 环境变量前缀示例:`OPENAI_API_KEY="sk-real-key" jupyter execute --kernel_name=<name> example.ipynb`。
- 如需要,将 `.md` 转换为 `.ipynb`。
- 在目标环境中外部安装缺失依赖:`<env-python> -m pip install --upgrade <packages>`。
- 运行 `jupyter execute --kernel_name=<name> example.ipynb`;如果使用系统默认,省略 `--kernel_name`。
- 如果发现错误,在 `.md` 文件中修复;需要调试时取消注释 setup cells,然后重新转换。
- 按典型 Milvus 示例 notebook 结构组织内容:`# Title`、简要描述。
- 结构中的 `## Prerequisites` 用于安装依赖,例如 `!pip install pymilvus some-other-package`。
- 结构中的 `## Setup` 用于导入和配置,例如 `from pymilvus import MilvusClient` 和 `client = MilvusClient(uri="http://localhost:19530")`。
- 结构中的 `## Prepare Data` 用于加载或生成示例数据。
- 结构中的 `## Create Collection & Insert Data` 用于创建 collection 并插入数据。
- 结构中的 `## Query / Search` 用于搜索或查询示例。
- 结构中的 `## Cleanup` 用于清理,例如 `client.drop_collection("example_collection")`。
- 当写 Milvus 集成教程时,阅读 `references/bootcamp-format.md`。
- Bootcamp 格式覆盖:顶部 Colab + GitHub badges。
- Bootcamp 格式覆盖:文档结构 Header -> Prerequisites -> Main Content -> Conclusion。
- Bootcamp 格式覆盖:依赖安装格式,带 Google Colab restart note。
- Bootcamp 格式覆盖:API key 占位符约定(`sk-***********`)。
- Bootcamp 格式覆盖:每个代码块前有简短文本介绍。
- 当 notebook 涉及 pymilvus 代码时,阅读 `references/milvus-code-style.md`。
- pymilvus 代码规范:始终使用 `MilvusClient` API,绝不使用 legacy ORM layer(`connections.connect()`、`Collection()`、`FieldSchema()` 等)。
- pymilvus 代码规范:始终显式定义 schema(`create_schema` + `add_field`),不要使用 `create_collection(dimension=...)` 这种无 schema 的快捷方式。
- pymilvus 代码规范:创建 collection 前包含 `has_collection` 检查。
- pymilvus 代码规范:在 `create_collection()` 中添加注释掉的 `consistency_level="Strong"` 行。
- pymilvus 代码规范:无需调用 `load_collection()`,collection 创建时自动加载。
- pymilvus 代码规范:第一个 `MilvusClient` 连接必须包含解释 `uri` 选项的 blockquote(Milvus Lite / Docker / Zilliz Cloud)。
- 始终编辑 `.md` 文件,不直接编辑 `.ipynb`;`.md` 更易 AI 读写。
- 保留两个文件:`.md` 用于编辑,`.ipynb` 用于运行/分享。
- 编辑 `.md` 后,总是重新运行 `uvx jupyter-switch example.md` 同步 `.ipynb`。
适用边界 · 注意事项
- 不能使用 uv/uvx 或无法安装 jupyter-switch 时,该 Markdown 转换与同步流程不适用。
- 必须保留 `.ipynb` 中的 outputs、metadata 或 execution counts 并直接编辑时,Markdown-first 不适用,因为 `.md` 不保存 outputs。
- notebook 与 Milvus/pymilvus 无关时,Milvus 结构模板、Bootcamp 格式和 pymilvus 代码规范不适用。