前置知识:检索增强 RAG
1 内容缺失
问题现象:知识库中缺少上下文,导致 RAG 给出一个看似合理但错误的答案
解决方案:
- Garbage in, garbage out;清理不合理的数据,避免重复或无关信息
- 通过 Prompt 鼓励鼓励模型承认其局限性,并更透明地表达不确定性
2 排序遗漏
问题现象:不合理的检索排序导致关键文档被遗漏,没有被正确返回给 LLM
解决方案:
- 调整数据检索相关的超参数,降低计算效率来换取更高质量的检索结果
- 扩大初次检索结果的排序范围,并进行重新排序,改善 RAG 性能
- 根据具体情况更换其他检索器,或者对已有的检索器进行针对性微调/优化
3 合并遗漏
问题现象:关键信息被正确检索到,但在大量文档的整合过程中被遗漏
解决方案:和上一个问题的解决方案类似,都是重排序、调整或优化检索策略
4 信息忽略
问题现象:关键信息被正确提供,LLM 未正确提取到
该问题一般发生在 LLM 上下文中存在过多噪声或冲突信息时
解决方案:
- 数据清洗真的很重要
- 上下文压缩,减少冗余信息,提高系统运行速度
- 针对长上下文重排序,上下文首尾的信息更容易被重视
5 格式错误
问题现象:LLM 的输出不遵从指令,不满足要求的特定格式(比如表格或JSON)
解决方案:
- Prompt 优化,增加清晰的说明,反复强调,提供示例
- 集成第三方框架中的输出解析(output parsing)模块
- 利用 Pydantic 模块将文本转换为结构化的 Pydantic 对象
- 利用 API 接口的输出约束,比如 OpenAI JSON 模式限制
6 模棱两可
问题现象:LLM 的输出过于模糊或笼统,无法满足用户的需求
解决方案:考虑高级 RAG 技术,比如调整搜索结果的粒度
7 输出残缺
问题现象:输出结果不完整,但相关的信息是存在于上下文中的
解决方案:考虑高级 RAG 技术,比如查询转换/查询重写
8 管道瓶颈
问题现象:RAG 系统难以管理和处理海量数据,导致高延迟、低性能等问题
解决方案:添加数据 pipeline 的并行处理功能,避免查询检索的长期堵塞
9 SQL 难题
问题现象:当 LLM 根据文本转 SQL 方面不太灵活,对结构化数据的检索效果差
解决方案:
- 利用 ChainOfTablePack 等技术,使用一组受限的操作逐步转换表格类数据
- 在必要时,调用编程工具直接进行符号推理(比如 Python、SQL 等)
10 OCR 难题
问题描述:简单的检索方法无法获取 PDF 等复杂文档中的数据
解决方案:利用成熟的第三方格式转换工具;或借助高精度 OCR 技术
11 模型故障
问题描述:在使用 LLM 时,出现报错或速率限制等问题
解决方案:利用路由工具,自适应的选择最佳模型;做好备用的模型方案
12 模型越狱
问题描述:LLM 可能面对提示注入、不安全输出和敏感信息泄露等问题
解决方案:利用第三方 LLM 安全工具,进行内容审核或风险拦截