方案评审里,三类问题经常被混在一起讨论。

第一类是数据问题: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 的位置很清楚。

它可以做本地精确基线。用 IndexFlatL2IndexFlatIP 可以得到近似索引的对照组。没有这个基线,就不知道 IVF、HNSW、PQ 损失了多少召回。

它也适合理解索引参数。Faiss 的 IndexIVFFlatIndexIVFPQ、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%免费

在这里插入图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐