Skip to content

向量检索选型:Embedding、Hybrid Search、Rerank 和 Metadata Filter ​

这篇文章解决什么问题 ​

RAG 项目效果差,很多时候不是模型问题,而是检索问题。常见现象:

  • 召回不到正确文档。
  • 召回了但排在后面。
  • 不同用户查到了越权文档。
  • 文档更新后结果不稳定。
  • 相似问题检索结果差异很大。
  • 表格、代码、短文本召回效果差。

向量检索选型不是只选一个 Vector DB,而是设计完整检索链路。

检索链路 ​

text
Query
  ↓
Rewrite / Normalize
  ↓
Dense Retrieval
  ↓
Sparse / Keyword Retrieval
  ↓
Hybrid Merge
  ↓
Metadata Filter
  ↓
Rerank
  ↓
Context Pack

每一层都可能影响最终答案。

Dense vs Sparse ​

类型优点缺点
Dense Embedding语义相似好,适合同义表达对精确词、编号、代码、型号可能不稳定
Sparse / Keyword精确匹配强,适合编号、术语对语义改写不敏感
Hybrid Search兼顾语义和关键词需要调权重和合并策略

企业知识库通常建议 hybrid,而不是只靠向量。

Metadata Filter ​

metadata 是 RAG 的权限和精度基础。

常见 metadata:

  • tenant_id。
  • user_role。
  • doc_type。
  • product_line。
  • version。
  • language。
  • created_at。
  • source。
  • page。

过滤要在检索阶段完成,不能检索出来后再让模型自己忽略越权文档。

Rerank ​

Rerank 负责把初召回结果重新排序。适合:

  • 初召回 top_k 较大。
  • 文档片段相似度接近。
  • 问题复杂。
  • 需要提升引用准确率。

常见流程:

text
retrieve top 50 -> rerank top 10 -> context top 5

Rerank 会增加延迟和成本,需要按场景使用。

Chunk 策略 ​

Chunk 不是越小越好,也不是越大越好。

文档类型策略
FAQ一问一答为 chunk
手册按章节 + 滑动窗口
表格保留表头和行列结构
代码按函数/类
合同按条款
PDF 图文页面 + block

Chunk 要保留上下文和引用位置。

选型维度 ​

选择向量数据库或检索方案时看:

  • 是否支持 metadata filter。
  • 是否支持 hybrid search。
  • 是否支持 batch upsert。
  • 是否支持多租户隔离。
  • 是否支持删除和更新。
  • 是否支持 rerank 集成。
  • 是否有可观测指标。
  • 本地部署还是托管。
  • 成本和延迟。

不要只看“能不能存向量”。

评测指标 ​

RAG 检索要单独评测:

  • recall@k。
  • precision@k。
  • MRR。
  • gold document hit rate。
  • rerank improvement。
  • metadata filter correctness。
  • citation accuracy。

如果不单独评测检索,就无法判断答案差是检索问题还是生成问题。

面试表达 ​

可以这样讲向量检索选型:

我不会把 RAG 简化成“把文档切 chunk 存向量库”。检索链路通常包括 query rewrite、dense retrieval、keyword retrieval、hybrid merge、metadata filter、rerank 和 context pack。Dense embedding 适合语义相似,但对型号、编号、代码等精确词不一定稳定,所以企业知识库常需要 hybrid search。权限过滤应该在检索阶段通过 metadata 完成,不能让模型自己忽略越权文档。最终要用 recall@k、gold document hit rate、rerank improvement 和 citation accuracy 单独评估检索质量。

相关链接 ​

参考资料 ​