检索优化是在干啥?
基础的 RAG 调用:
用户问题 → embedding → 向量检索 → top-k → 给 LLM可能存在的问题:
- 找到不一定准
- 容易遗漏信息
- 容易拿到“看起来相关但其实不对”的内容
检索优化是让“找资料”更聪明。
优化方式
了解收集到的 6 种方式。
1.Top-K 优化
是什么:
控制取多少个 chunk
问题:
- 太少 -> 信息不够
- 太多 -> 噪音太多
一般根据应用场景进行合适的设定,例如:
- FAQ 类,设置 3
- 文档类,设置 5~10
2.Query Rewrite
是什么:
把用户的问题改写成“更适合检索的形式”
举个🌰
用户:
“他什么时候成立的?”
改写后:
“某公司的成立时间”
常见方式:
- LLM 改写
- 增强关键词
作用:
提高召回率
3.Multi-Query(多路检索)
比 rewrite 更强
举个🌰
问题:
“RAG 有哪些缺点?”
生成多个 query:
- RAG limitations
- RAG problems
- RAG challenges
分别检索,合并结果。
缺点是成本会更高一些。
4.Hybrid Search(混合检索)
是什么:
向量检索 + 关键词检索(BM25)一起用
为什么要混用?
| 类型 | 优点 | 缺点 |
|---|---|---|
| 向量 | 理解语义 | 不精确 |
| 关键词 | 精确匹配 | 不理解语义 |
混合后,又懂意思,又懂精准匹配
常见实现
- BM25 + embedding
- 加权融合
5.Reranker
检索(粗筛) → reranker(精排)先取 top 20 → rerank → 选前5
6.Metadata Filtering
是什么:
检索时加条件过滤
举个🌰
{
"text": "...",
"department": "finance"
}检索时:
只查 finance作用:
- 提高准确率
- 保证安全