RAG——3. 索引 度量 检索
目录一、核心索引类型与原理1. FLAT全量扫描2. IVF_FLAT倒排文件3. IVF_PQ倒排 乘积量化4. HNSW分层可导航小世界5. DISKANN磁盘版图索引二、Milvus 索引工作机制三、索引选型速览 四、性能权衡要点五、向量类型与索引对应一、核心索引类型与原理1. FLAT全量扫描原理暴力检索查询向量与数据集中所有向量逐一比较无预处理。特点100% 召回率精度最高但查询速度最慢。适用小数据集、需要绝对精确的场景。index_params MilvusClient.prepare_index_params() index_params.add_index( field_nameyour_vector_field_name, index_typeFLAT, metric_typeL2, params{} )2. IVF_FLAT倒排文件原理先对向量做 k-means 聚类nlist个分区查询时只搜索nprobe个最近的分区。特点速度比 FLAT 快精度较高是平衡性能与召回的经典方案。关键参数nlist聚类分区数量nprobe查询时要检索的分区数3. IVF_PQ倒排 乘积量化原理在 IVF 基础上对每个向量做乘积量化PQ压缩大幅降低内存占用。步骤维度分解将高维向量切分为多个子向量子空间码本生成每个子空间用 k-means 学习质心矢量量化子向量映射到最近质心压缩表示用质心索引编码代替原始向量特点内存占用极低查询速度快但精度有轻微折损。4. HNSW分层可导航小世界原理构建多层图结构上层是下层的采样实现 “高层导航、低层精搜”。查询流程从顶层入口点开始贪婪搜索到达局部最小值后跳转到下层继续搜索逐层下降到底层最终精搜得到结果特点低延迟、高 QPS特别适合小 top-K 场景。5. DISKANN磁盘版图索引原理基于 Vamana 图类似 HNSW将图结构和压缩向量存在 SSD内存只存元数据。特点✅ 支持十亿级海量数据✅ RAM 占用极低❌ 延迟受 SSD IOPS 限制适用数据量远超可用内存、对时延有一定容忍的场景。二、Milvus 索引工作机制Milvus 采用“粗 — 快 — 准” 三层架构数据结构粗过滤如 IVF 分桶、HNSW 建图快速缩小检索范围。量化加速计算如 SQ8/PQ 压缩向量减少内存和计算开销。精炼器精准重排对候选结果用 FP32 精度重算距离弥补量化误差保证最终 top-K 质量。三、索引选型速览表格场景需求推荐索引全量精度第一100% 召回FLAT小 top-K、低延迟、高召回HNSW大 top-K、海量数据IVF_FLAT内存紧张、仍需 ANNIVF_SQ8 / IVF_PQGPU 加速场景GPU_IVF_FLAT / GPU_IVF_PQ数据超内存磁盘级DISKANN四、性能权衡要点构建时间 vs QPS vs 召回率图索引HNSWQPS 最高、延迟最低适合小 top-K。IVF 系列大 top-K 时更高效。PQ vs SQ8同压缩率下 PQ 召回更高SQ8 查询更快。容量与内存数据全入内存优先 HNSW / IVF 精炼。部分数据入内存DISKANN 或 IVF_PQ/SQ8 mmap。过滤率与召回过滤率 85%图索引最优。85%–95%IVF 系列更合适。98%用 FLAT 暴力搜索。五、向量类型与索引对应表格嵌入类型支持索引类型度量类型浮点嵌入FLAT, IVF_FLAT, IVF_SQ8, IVF_PQ, HNSW, DISKANN 等L2, IP, COSINE二进制嵌入BIN_FLAT, BIN_IVF_FLATJACCARD, HAMMING稀疏嵌入SPARSE_INVERTED_INDEXIP, BM256️⃣、ANN 搜索基础ANNApproximate Nearest Neighbor是 Milvus 核心的高效向量相似度检索方式与 kNN 暴力遍历不同它通过预构建索引快速定位相似向量子集大幅提升效率。主要特点支持单向量 / 批量向量搜索可在特定分区内检索支持多种相似度度量L2、IP、COSINE 等支持过滤条件、范围搜索增强效果支持分页查询和输出字段控制7️⃣、距离度量类型与适用场景常用度量对比表格度量类型相似度特性数值范围适用场景L2欧氏距离值越小相似度越高[0, ∞)连续数值特征如图像、点云精确度量几何距离IP内积值越大相似度越高[-1, 1]向量长度有意义的场景未归一化嵌入的匹配强度COSINE余弦相似度值越大相似度越高[-1, 1]文本 / 自然语言语义相似性关注方向一致性JACCARD交并比值越小相似度越高[0, 1]集合 / 二值特征如标签集合、关键词重叠HAMMING海明距离值越小相似度越高[0, dim]二进制向量如感知哈希、人脸二值编码BM25全文检索评分值越大相似度越高[0, ∞)稀疏向量的全文检索文档 / 问答系统向量类型与度量对应表格字段类型支持度量默认度量FLOAT_VECTORCOSINE, L2, IPCOSINESPARSE_FLOAT_VECTORIP, BM25IPBINARY_VECTORHAMMING, JACCARDHAMMING8️⃣、高级搜索能力1. 过滤搜索标准过滤先过滤再搜索迭代过滤边搜索边过滤适合复杂过滤条件效率更高示例filterchunk like %red%配合hints: iterative_filter启用迭代模式2. 范围搜索在 ANN 结果基础上按相似度阈值筛选radius外圈半径相似度下限range_filter内圈半径相似度上限返回落在两个半径之间的所有向量示例search_params{metric_type: COSINE, params: {radius: 0.4, range_filter: 0.6}}3. BM25 全文关键字检索自动将文本分词并映射为稀疏向量SPARSE_FLOAT_VECTOR弥补语义向量检索忽略精确词条匹配的不足适合法律、医药等需要精确命中关键词的场景可与稠密向量检索结合实现 RAG 场景下 “语义 关键词” 双保险4. Text Match 精确文本匹配基于倒排索引Tantivy 引擎快速定位包含指定词条的文档不计算相关性分数仅返回命中实体支持布尔逻辑OR/AND/NOT示例sql-- 包含 machine 或 deep TEXT_MATCH(text, machine deep) -- 包含 machine 且包含 deep TEXT_MATCH(text, machine) AND TEXT_MATCH(text, deep)9️⃣、搜索 vs 查询方法作用输入输出场景Search按度量找相似向量向量、metric、topK相似向量及距离向量相似度检索Get按主键查实体collection_name, ids完整实体已知 ID 快速获取记录Query按过滤表达式查实体collection_name, filter, limit满足条件的实体一次性获取部分结果QueryIterator按批遍历满足条件的实体collection_name, expr, batch_size迭代器分批返回流式 / 分页处理大量数据、核心选型建议语义相似场景优先用COSINE度量 HNSW/IVF 索引精确关键词场景用 BM25 或 Text Match 做精确匹配海量数据 内存受限用 IVF_PQ/SQ8 或 DISKANN小数据集 100% 召回用 FLAT 索引