Milvus + RAG 落地 · 起点

把 RAG 从 demo 推到生产,要在 Milvus 上设计什么

基于 Milvus 2.6.x(截至 2026-06)· 阅读约半天 · 这是一份设计指南,不是代码教程:示例代码只用来钉住决策,未在本机运行(已标注)。它桥接你已有的两篇——通用 RAG 流程,和 Milvus 内部机制。

▸适合谁 / 不适合谁

适合谁

前置

  • 已经用 RAG 跑通过一个 demo:知道分块、嵌入、top-k 检索、把片段塞进 prompt 是怎么回事。缺这块先看 rag 教程。
  • 懂 Milvus 的基本机制:Collection / Segment / 索引 / 一致性级别。缺这块先看 milvus 深潜教程,本篇会反复引用它的章节。
  • 正在或即将把 RAG 放到真实流量下:有多个用户/租户、语料会变、要控成本——而不只是本地玩具。

不适合谁

  • 还在搭第一个 RAG demo → 先用 rag 教程 跑通端到端,再回来做生产化。
  • 只想要"Milvus 怎么工作" → 看 milvus 深潜,那是机制;这里是把机制用到 RAG 场景的决策。
  • 语料 < 几十万、单租户、无运维 → 生产设计大多用不上;深潜 05 的选型辨析多半会告诉你 pgvector 就够。

▸读完之后你能做到什么

这份教程的 USP

你能为一个真实的多租户 RAG 系统做出 Milvus 侧的全部关键设计决策——租户隔离选哪一级、要不要混合检索、一致性选哪一档、哪些元数据字段建什么标量索引、过滤比如何反过来决定索引选型——并对每个决策讲清代价和会静默出错的失败模式。这是只看 RAG 教程或只看 Milvus 文档都拼不出来的那一层。

  • 按租户规模选对隔离级别(Database / Collection / Partition / Partition-Key),并说出每级的硬限制。
  • 设计 RAG 的 schema:一个 chunk 一行、parent_doc_id、按过滤需求定标量字段与索引类型。
  • 搭一条混合检索链路:dense + sparse/BM25 → 融合 → 两阶段 rerank,并选对 RRF / Weighted。
  • 为"刚入库的文档要立刻可检索"选对一致性级别,讲清它和 Bounded 默认的差别与代价。
  • 识别四类生产陷阱:忘了租户 filter(数据泄漏)、过滤太严反伤召回、换模型只换一半、upsert 后短暂掉速。

一句话本质

从 demo 到生产 RAG,真正的工作不是"存检索向量",而是设计四个 Milvus 默认值留给你的面:① 租户隔离(filter 是安全边界,不是优化)、② 混合检索 + 两阶段 rerank、③ 新鲜度/一致性(默认 Bounded ≠ read-your-writes,要 Session)、④ 元数据过滤(过滤越严反而越伤图索引召回)。每一面,都是把深潜教程里的某个 Milvus 机制按 RAG 场景做取舍。

▸现状速览(截至 2026-06)

什么稳定 · 什么在变 · 什么已被取代

稳定:多向量混合检索(hybrid_search + AnnSearchRequest)自 2.4(2024-03);partition-key 多租户、标量索引、upsert 已成熟。

近期变化:全文检索 / BM25 GA 于 2.5(2024-12)(Function + analyzer,灌原始文本);2.6(2025-08)把模型 / 交叉编码器 rerank 移到服务端(TEIRanker / vLLM ranker)、删除引入 L0 segment、partition-key 隔离(2.5.4)。

已被取代:纯 dense 检索、客户端-only rerank、自己托管稀疏模型——本篇默认用新栈,并在涉及处标注。

先读这条 · 流畅感是陷阱

这份教程读起来会很顺,因为每个决策单独看都不难。这三种感觉要警惕:

「我读得很顺」——顺,是因为还没把四个面叠在一个真实场景里同时拍板(04 章的辨析题会逼你这么做)。

「我做题很快」——快,常常是套了单题的标准答案;换一个租户规模或过滤比,结论就反了。

「我没卡壳」——没卡壳,往往是还没碰到"会静默出错"的那些点(忘了租户 filter、换模型只换一半)。

▸概念地图

这张图是后面三章的骨架:四个设计面,每个都落到深潜教程里的某个 Milvus 机制。

生产级 RAG on Milvus demo「embed → insert → search」之外的事 ① 租户隔离 partition key filter = 安全边界 ② 检索质量 dense + sparse / BM25 → 两阶段 rerank ③ 新鲜度 / 一致性 Session ≠ 默认 Bounded upsert · compaction ④ 元数据过滤 scalar 字段 + 索引 过滤比 ↕ 图索引召回 四个面都在用同一套 Milvus 深潜机制 数据模型 · segment(01·02) / 索引 · 度量(03) / 一致性 · TSO(04)
图 0.1生产 RAG = 在 demo 之上设计四个面,每个面都落到深潜教程里的某个 Milvus 机制。注意:这四件事在 demo 阶段用默认值就能跑——但每个默认值在生产里都是错的起点。这张图就是后面三章的地图。

▸学习路径建议

▸章节目录

▸学完之后往哪走

  • 检索评测——给 RAG 检索层接上 recall@k / nDCG 评测与回归,把"调参靠感觉"变成"调参看指标"。
  • Agent 记忆——把同一套租户隔离 + 新鲜度设计用到 Agent 的长期记忆/会话记忆存储上。
  • 生产运维——Distributed 部署的容量规划、监控、compaction 调参(接 深潜 02)。
  • Milvus 3.0 / Vector Lake——外部表、UDF 把检索与离线处理统一(接 深潜现状速览)。