20251026 RAG 开发面对的12个问题

前置知识:检索增强 RAG

1 内容缺失

问题现象:知识库中缺少上下文,导致 RAG 给出一个看似合理但错误的答案

解决方案:

  1. Garbage in, garbage out;清理不合理的数据,避免重复或无关信息
  2. 通过 Prompt 鼓励鼓励模型承认其局限性,并更透明地表达不确定性

2 排序遗漏

问题现象:不合理的检索排序导致关键文档被遗漏,没有被正确返回给 LLM

解决方案:

  1. 调整数据检索相关的超参数,降低计算效率来换取更高质量的检索结果
  2. 扩大初次检索结果的排序范围,并进行重新排序,改善 RAG 性能
  3. 根据具体情况更换其他检索器,或者对已有的检索器进行针对性微调/优化

3 合并遗漏

问题现象:关键信息被正确检索到,但在大量文档的整合过程中被遗漏

解决方案:和上一个问题的解决方案类似,都是重排序、调整或优化检索策略

4 信息忽略

问题现象:关键信息被正确提供,LLM 未正确提取到

该问题一般发生在 LLM 上下文中存在过多噪声或冲突信息时

解决方案:

  1. 数据清洗真的很重要
  2. 上下文压缩,减少冗余信息,提高系统运行速度
  3. 针对长上下文重排序,上下文首尾的信息更容易被重视

5 格式错误

问题现象:LLM 的输出不遵从指令,不满足要求的特定格式(比如表格或JSON)

解决方案:

  1. Prompt 优化,增加清晰的说明,反复强调,提供示例
  2. 集成第三方框架中的输出解析(output parsing)模块
  3. 利用 Pydantic 模块将文本转换为结构化的 Pydantic 对象
  4. 利用 API 接口的输出约束,比如 OpenAI JSON 模式限制

6 模棱两可

问题现象:LLM 的输出过于模糊或笼统,无法满足用户的需求

解决方案:考虑高级 RAG 技术,比如调整搜索结果的粒度

7 输出残缺

问题现象:输出结果不完整,但相关的信息是存在于上下文中的

解决方案:考虑高级 RAG 技术,比如查询转换/查询重写

8 管道瓶颈

问题现象:RAG 系统难以管理和处理海量数据,导致高延迟、低性能等问题

解决方案:添加数据 pipeline 的并行处理功能,避免查询检索的长期堵塞

9 SQL 难题

问题现象:当 LLM 根据文本转 SQL 方面不太灵活,对结构化数据的检索效果差

解决方案:

  1. 利用 ChainOfTablePack 等技术,使用一组受限的操作逐步转换表格类数据
  2. 在必要时,调用编程工具直接进行符号推理(比如 Python、SQL 等)

10 OCR 难题

问题描述:简单的检索方法无法获取 PDF 等复杂文档中的数据

解决方案:利用成熟的第三方格式转换工具;或借助高精度 OCR 技术

11 模型故障

问题描述:在使用 LLM 时,出现报错或速率限制等问题

解决方案:利用路由工具,自适应的选择最佳模型;做好备用的模型方案

12 模型越狱

问题描述:LLM 可能面对提示注入、不安全输出和敏感信息泄露等问题

解决方案:利用第三方 LLM 安全工具,进行内容审核或风险拦截

本文内容主要整理自 《12 RAG Pain Points and Proposed Solutions》

往年同期文章