向量、索引、Faiss、Milvus 到底是什么关系
方案评审里,三类问题经常被混在一起讨论。
第一类是数据问题:embedding 出来的向量质量不够好,换索引能不能救回来?
第二类是算法问题:IVF、PQ、HNSW 都是向量索引,那 Milvus 是不是只是把这些索引包装了一层?
第三类是工程问题:Faiss 已经能搜 topK,为什么还要再引入 Milvus?
这三类问题不能放在同一层回答。向量是模型输出的数据表达,IVF/PQ/HNSW 是加速搜索的索引方法,Faiss 是相似度搜索库,Milvus 是管理向量数据和检索服务的数据库。
这篇先把它们的边界拆清楚。边界清楚之后,后面再谈索引选型、Milvus 实战和 RAG 评估,才不会把问题归因错。
从一条查询链路看全局
假设我们要做一个公司制度知识库。用户问:
TEXT
1异地出差的住宿报销标准是多少?
这条查询会经历几个动作。
第一步,把问题变成 query embedding。模型把一句话编码成一个固定维度的浮点向量,例如 768 维或 1024 维。
第二步,在数据库里找相近的文档向量。每个制度片段也提前被模型编码成向量,系统用 COSINE、IP 或 L2 这类度量判断“近不近”。
第三步,结合业务条件过滤。比如只查“当前有效版本”、只查“员工有权限看的制度”、只查“差旅制度”这个分类。
第四步,返回 topK 片段,必要时做混合检索和重排。dense embedding 能找语义相近,sparse/BM25 能补精确词,reranker 再把候选排得更像最终答案需要的顺序。
第五步,把片段交给 LLM 生成答案,并记录检索效果。
这条链路里,向量、索引、Faiss、Milvus 不是同一层东西。
向量是数据,不是系统
向量是模型对内容的数值表达。文本、图片、商品、音频本来不是搜索引擎容易比较的对象,embedding 模型把它们投到一个向量空间里。两个向量距离近,通常表示模型认为它们在某种语义或视觉特征上相似。
两个点会直接决定后面的检索质量。
第一,向量质量由模型和数据处理决定。chunk 切坏了、模型不适合业务语料、query 和 doc 的编码方式不一致,后面的索引再快也只是更快地找错结果。
第二,“相似”的含义由 metric 决定。COSINE 看方向夹角,L2 看欧氏距离,IP 看内积。Milvus 文档明确把 FLOAT_VECTOR 常见度量列为 COSINE、L2、IP;如果用 IP 模拟 cosine,通常需要先归一化向量。这个选择必须和 embedding 模型的训练方式一致。
向量索引是加速结构,不是业务答案
如果数据库有 100 万条向量,最直接的方法是把 query vector 和每一条向量都算一遍距离。这叫精确搜索,FLAT 就是这类思路。它很适合做基线,因为结果便于解释,但数据变大后延迟和成本会很高。
向量索引的作用,是少算一部分距离,或者用压缩后的表示更快地算距离。
IVF 的思路是先把向量空间分成多个簇。查询时先找 query 靠近哪些簇,再只扫这些簇里的向量。nlist 控制簇数量,nprobe 控制查询时探测多少簇。探测越多,召回通常越高,延迟也会上升。
PQ 的思路是压缩。它把高维向量切成多个低维子空间,对每个子空间做量化,用较短的 code 表示原向量。内存和存储下降,但会引入近似误差。
HNSW 的思路是图搜索。它构建多层近邻图,查询时从上层快速靠近目标区域,再到底层精细搜索。它通常能在低 topK、高召回场景下给出不错延迟,但图结构会带来额外内存开销。
所以,索引不是“哪个最好”的问题,而是四个约束的平衡:召回、延迟、内存、构建和更新成本。
Faiss 是高性能搜索库
Faiss 的定位更接近“向量搜索和聚类算法库”。官方文档把它描述为用于 dense vector 高效相似度搜索和聚类的库,包含大规模向量集搜索、评估、参数调优和 GPU 实现。
在工程里,Faiss 的位置很清楚。
它可以做本地精确基线。用 IndexFlatL2 或 IndexFlatIP 可以得到近似索引的对照组。没有这个基线,就不知道 IVF、HNSW、PQ 损失了多少召回。
它也适合理解索引参数。Faiss 的 IndexIVFFlat、IndexIVFPQ、HNSW、index factory 等能力让你能直接接触索引结构,适合实验和教学。
对于单机、离线、嵌入式、批处理或高度定制场景,Faiss 还可以作为底层高性能搜索模块。
但 Faiss 不是完整数据库。它不会替你设计业务 schema,也不会自然地解决多租户权限、元数据过滤、服务部署、数据导入、删除语义、备份、监控、分布式扩展这些问题。你可以围绕 Faiss 搭出这些能力,但那已经是在自己写一部分向量数据库了。
Milvus 是向量数据库
Milvus 的定位是向量数据库。它不仅要执行向量搜索,还要管理 collection、schema、vector field、scalar field、index、insert、delete、query、load、filter、hybrid search 和不同部署方式。
在 Milvus 里,一个 collection 可以理解为一张带 schema 的表。比如知识库片段可以有:
| 字段 | 类型 | 作用 |
|---|---|---|
| id | INT64/VARCHAR | 主键 |
| text | VARCHAR | 原文片段 |
| source | VARCHAR | 来源文档 |
| category | VARCHAR | 业务分类 |
| updated_at | INT64 | 更新时间 |
| embedding | FLOAT_VECTOR | 稠密向量 |
搜索时,向量字段负责相似度,标量字段负责业务约束。比如只检索制度分类:
PYTHON
1res = client.search(2 collection_name="kb_chunks",3 data=[query_vector],4 anns_field="embedding",5 limit=5,6 filter='category == "travel_policy"',7 output_fields=["text", "source", "updated_at"],8)
这段代码里的 filter 不只是语法糖。它代表一个工程事实:向量相似不等于业务可用。没有元数据过滤,topK 会返回过期、越权、跨业务线或语言不匹配的内容。
Knowhere 是 Milvus 的向量执行层
Milvus 不是从零手写所有索引算法。Milvus 官方文档说明 Knowhere 是 Milvus 的核心向量执行引擎,整合了 Faiss、hnswlib、Annoy 等向量相似度搜索库,并负责在 CPU/GPU 等硬件上执行索引构建和搜索请求。
这解释了 Faiss 和 Milvus 的关系。
Faiss 是 Milvus 可以利用的底层能力之一,但 Milvus 在它上面加了数据库层能力、统一索引接口、过滤机制、服务化能力和部署形态。把 Faiss 和 Milvus 看成简单替代关系,会误解两者的职责。
什么时候用 Faiss,什么时候用 Milvus
如果你只是离线实验 10 万到 100 万条向量,想验证 embedding 模型、做召回基线、比较 IVF/HNSW/PQ 参数,Faiss 往往更直接。
如果你要做一个长期运行的知识库、推荐召回、图片搜索或多租户 RAG 服务,Milvus 更贴近问题本身。因为系统需要的不只是 search(),还包括元数据、过滤、增量写入、删除、索引管理、部署、监控和跨语言 API。
如果你还在选 embedding 模型,不要急着争论 Milvus 还是 Faiss。先用小样本和精确搜索确认语义空间是否可用,再进入索引和数据库选型。
一个实用分工
更稳的做法是按阶段分工。
验证阶段,用 Faiss 或 Milvus Lite 快速跑通 embedding、topK 和人工样本检查。重点看“搜出来的内容是不是语义上对”。
评估阶段,用 FLAT 做 exact baseline,用 IVF/HNSW/PQ 做候选方案。重点看 Recall@K、MRR、P95/P99、内存、构建时间和错误样本。
服务阶段,用 Milvus 这类向量数据库承接 collection、schema、过滤、混合检索、写入删除、部署和监控。重点看稳定性、数据新鲜度、权限、成本和可运维性。
结论
向量是模型输出的数据表达,索引是加速相似度搜索的数据结构,Faiss 是高性能相似度搜索库,Milvus 是把向量搜索变成可管理服务的向量数据库。
IVF、PQ、HNSW 解决的是“怎么更快、更省地找到近邻”;Milvus 还要解决“这些向量如何被组织、过滤、更新、部署和服务”。
真正的工程判断不是问“Faiss 和 Milvus 谁更好”,而是先问:我现在是在做算法实验、离线评估,还是要交付一个会持续写入、过滤、更新和被用户访问的检索服务?

学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多推荐




所有评论(0)