2025年7月15日

检索增强常见问题

RAG 系统在实践中面临**检索质量**、**生成质量**和**系统工程**三大类共七大痛点,每个痛点都有对应的诊断方法和解决方案。

知识库大模型检索增强ragtroubleshooting

检索增强常见问题

先说结论

RAG 系统在实践中面临检索质量生成质量系统工程三大类共七大痛点,每个痛点都有对应的诊断方法和解决方案。

QUESTION 面试高频:RAG 系统的主要痛点有哪些? 七大核心痛点:①检索不到相关内容 ②检索到了但排序靠后 ③LLM 未利用检索内容(幻觉)④上下文窗口不足 ⑤答案不够完整 ⑥多跳推理失败 ⑦数据更新不及时。

痛点一:检索不到相关内容

症状

  • 查询相关文档存在但检索不到
  • 检索结果与查询完全不相关

诊断方法

  1. 目视检查:人工确认知识库中是否存在相关文档
  2. 向量相似度检查:计算 query 与相关文档的余弦相似度
  3. 分块检查:确认相关信息是否被切分到了不同的 Chunk

解决方案

方案 说明 效果
Hybrid Search Dense + Sparse 融合检索 中等
Query Rewriting 用 LLM 改写查询 中等
HyDE 生成假设性答案辅助检索 中等
换嵌入模型 尝试不同嵌入模型 高(但成本大)
微调嵌入模型 在领域数据上微调 高(需训练数据)
Chunk 优化 调整分块策略和大小 中等

痛点二:检索到了但排序靠后

症状

  • 相关文档在检索结果中但排名不靠前
  • Top-5 或 Top-10 中混入大量不相关内容

解决方案

方案 说明 ROI
Cross-Encoder 重排 对 Top-K 结果精排 极高
Cohere Rerank API 调用的重排服务
LLM 重排 用 LLM 判断相关性并排序 高(成本也高)
元数据过滤 先按元数据筛选再检索 高(需好元数据)

QUESTION 面试高频:重排序为什么是 ROI 最高的优化? 因为向量检索(Bi-Encoder)虽然速度快,但精度有限——它只看了查询和文档各自的向量,没有"交叉注意力"。Cross-Encoder 让查询和文档一起过一遍 Transformer,精度大幅提升。成本方面只需对 Top-20~50 结果重排,延迟和计算量可控。效果方面通常能带来 10-20% 的端到端提升。

痛点三:LLM 未利用检索内容(幻觉)

症状

  • LLM 忽略检索到的上下文,自行编造答案
  • 回答与检索上下文矛盾

解决方案

方案 说明
Prompt 工程 明确要求"仅基于上下文回答,不要使用外部知识"
Few-shot 示例 给出正确利用上下文的回答示例
降低温度 temperature=0 减少随机性
Faithfulness 约束 在生成后增加验证环节
微调模型 在忠实度数据上微调 LLM

痛点四:上下文窗口不足

症状

  • 检索到的内容太多,超出 LLM 上下文窗口限制
  • 长文档检索时只能取部分内容

解决方案

方案 说明
重排 + 截断 重排后只取 Top-N,控制总长度
上下文压缩 用 LLM 压缩检索内容(提取关键信息)
Map-Reduce 分段处理再汇总
长上下文模型 使用支持 128K+ 的模型
递归检索 先检索小 Chunk,再映射到大 Chunk

痛点五:答案不够完整

症状

  • 回答只覆盖了问题的一部分
  • 缺少关键细节或步骤

解决方案

方案 说明
增大 Top-K 检索更多文档,但需配合重排
查询分解 将复杂查询拆分为多个子查询
多轮检索 先检索,生成后根据缺失信息二次检索
Prompt 优化 要求"全面回答,覆盖所有方面"

痛点六:多跳推理失败

症状

  • 回答需要综合多个不同文档的信息
  • 需要先找到 A,再用 A 的信息找到 B

解决方案

方案 说明
Iterative Retrieval 多步检索,每步基于上一步结果
GraphRAG 通过知识图谱支持路径推理
Query Decomposition 拆分为多步子问题
Self-Ask / ReAct 让模型自主决定检索策略

痛点七:数据更新不及时

症状

  • 知识库内容过时,返回旧信息
  • 新增文档未及时被索引

解决方案

方案 说明
增量索引 监听文档变更,自动触发增量索引
时间戳元数据 为 Chunk 附加时间戳,检索时优先最新
定期全量重建 周期性重建索引保证数据一致性
实时数据源 对时效性要求高的内容接入实时 API

RAG 优化策略全景图

                        ┌─ Query Rewriting
          查询优化 ─────├─ HyDE
          (Pre-Retrieval)├─ Query Expansion
                        └─ Query Decomposition

                        ┌─ Hybrid Search (Dense+Sparse)
          检索优化 ─────├─ Multi-Vector Retriever
          (Retrieval)   ├─ Parent-Child Retriever
                        └─ Adaptive Retrieval

                        ┌─ Cross-Encoder Reranking
          后处理优化 ───├─ Contextual Compression
          (Post-Retrieval)├─ Metadata Filtering
                          └─ Deduplication

                        ┌─ Prompt Engineering
          生成优化 ─────├─ Chain-of-Note
          (Generation)  ├─ Self-RAG
                        └─ CRAG

如果要对外讲,可以怎么概括

"RAG 系统的优化应该先定位瓶颈再针对性解决。我会先建立评测管线,区分是检索问题还是生成问题。如果是检索问题——检索不到就优化分块策略、尝试 Hybrid Search 或 HyDE;检索到了但排序靠后就加 Cross-Encoder 重排,这是 ROI 最高的单点优化。如果是生成问题——幻觉就用 Prompt 约束 + Faithfulness 验证;不完整就增大 Top-K 或做查询分解。多跳推理是传统 RAG 的难点,GraphRAG 或 Self-Ask/ReAct 是主要解决方案。核心原则是:先搭基线、量化评估、定位瓶颈、针对性优化,不要一上来就堆高级技巧。"

最后记几条

  1. 七大痛点对应七大解决方案,关键是先诊断是哪个环节的问题
  2. 重排序是 ROI 最高的优化——几乎所有 RAG 系统都应该加
  3. 检索不到时先检查分块策略和嵌入模型,再考虑 HyDE/Query Rewriting
  4. 多跳推理是传统 RAG 的固有弱点,GraphRAG 和 ReAct 是主要解决方向
  5. 评估驱动——没有量化评估的优化是盲人摸象

参考资料

  • Gao, Y. et al. "Retrieval-Augmented Generation for Large Language Models: A Survey" (2024)
  • "Seven Failure Points When Engineering a Retrieval Augmented Generation System" (2024)
  • Asai, A. et al. "Self-RAG" (ICLR 2024)
  • Yan et al. "Corrective Retrieval Augmented Generation" (CRAG, 2024)

延伸阅读