← RAG

Milvus 向量库理解:字段、索引、检索规则与排序因子

这篇主要整理这些概念的分层,后续再结合实际检索结果测试它们对 RAG 召回质量的影响。

样本,财经+医疗+教材

设立的文档字段

字段类型说明
id / chunk_idINT64VARCHAR主键
doc_idVARCHAR文档 ID
textVARCHARchunk 原文
titleVARCHAR文档标题
section / section_pathVARCHAR章节路径
pageINT64页码
embeddingFLOAT_VECTORdense embedding
sparseSPARSE_FLOAT_VECTORBM25 sparse vector
metadataJSON来源、标签、额外信息

主要内容

1. 字段与字段类型

Milvus 的 collection schema 由字段组成,每个字段都有自己的数据类型。

字段类型:

类型作用RAG 中常见用途
INT64整数字段主键、页码、时间戳
VARCHAR字符串字段原文、标题、文档 ID、章节名
FLOAT / DOUBLE数值字段业务分数、置信度、价格等
BOOL布尔字段状态标记
JSON半结构化字段metadata
ARRAY数组字段标签、分类、多个属性
FLOAT_VECTOR稠密向量字段embedding 语义检索
SPARSE_FLOAT_VECTOR稀疏向量字段BM25 / sparse 检索

2. 索引类型

索引用来加速检索,不等于排序字段。

常见向量索引:

索引适用字段说明
FLATFLOAT_VECTOR暴力精确搜索,准确但慢
IVF_FLATFLOAT_VECTOR聚类分桶后搜索,常见 ANN 索引
IVF_SQ8FLOAT_VECTORIVF + 量化压缩
IVF_PQFLOAT_VECTORIVF + PQ 压缩
HNSWFLOAT_VECTOR图索引,常用于高召回低延迟
DISKANNFLOAT_VECTOR面向更大规模数据
SPARSE_INVERTED_INDEXSPARSE_FLOAT_VECTORsparse / BM25 检索

需要重点区分:

IVF_FLAT 是索引类型
COSINE / IP / L2 是相似度 metric
BM25 是 sparse 文本相关性打分

3. 检索规则与相似度度量

Milvus 搜索结果通常按 score 或 distance 返回 Top K。

常见 metric:

metric适用字段排序含义
COSINEFLOAT_VECTOR余弦相似度,越相似越靠前
IPFLOAT_VECTOR / SPARSE_FLOAT_VECTORinner product,越大越靠前
L2FLOAT_VECTOR欧氏距离,越小越靠前
BM25SPARSE_FLOAT_VECTOR文本相关性,越高越靠前

RAG 中常见检索方式:

检索方式使用字段适合场景
Dense SearchFLOAT_VECTOR语义相似、问法改写、概念理解
Sparse / BM25 SearchSPARSE_FLOAT_VECTOR关键词、术语、公司名、编号、表格指标
Hybrid Searchdense + sparse同时兼顾语义和关键词
Scalar Filter标量字段按文档、时间、分类、权限过滤

4. 排序与重排序方法

Milvus 里的排序可以分为几类。

类型例子说明
向量相似度排序COSINE, IP, L2单路向量检索默认排序
BM25 相关性排序BM25全文/sparse 检索排序
标量字段排序created_at, page, rating按 schema 里的普通字段排序
多路结果重排WeightedRanker, RRFRankerhybrid search 后融合结果
应用层排序自定义 score在业务代码里二次排序

常见重排方法:

方法作用
WeightedRanker给 dense、BM25 等多路结果分配权重后融合
RRFRankerReciprocal Rank Fusion,按各路结果排名位置融合

区别:

WeightedRanker 看分数和权重
RRFRanker 看排名位置

5. 关键因子与参数

后续测试时可以重点观察这些参数对召回和排序的影响。

Dense 向量索引参数

参数常见于作用
nlistIVF_FLAT / IVF_SQ8 / IVF_PQ建索引时分多少个聚类桶
nprobeIVF 查询查询时搜索多少个桶
MHNSW图中每个节点的连接数量
efConstructionHNSW建图质量与建索引成本
efHNSW 查询查询时搜索候选范围

BM25 参数

参数作用
bm25_k1控制词频饱和程度
bm25_b控制文档长度归一化强度
TF词在当前文档/chunk 中出现频率
IDF词在全库中的稀有程度

Hybrid / Rerank 参数

参数常见于作用
weightsWeightedRanker控制多路检索分数占比
norm_scoreWeightedRanker是否归一化不同路径分数
kRRFRankerRRF 排名融合的平滑参数
limitsearch最终返回 Top K
filtersearch/query标量过滤条件

测试方向