RAG 十二个痛点和解决方案
五个月前看到的一篇文章,作者 @wenqi_glantz 阐述了开发 RAG 系统时遇到的十二个核心挑战和解决方案,时隔几个月重温,我们再重新看看这些挑战,它们是否有解决方案更新?
核心挑战和解决方案:
1. 缺失内容
知识库中缺少上下文,系统可能提供看似合理但实际错误的答案。
解决方案:
数据清洗和更好的提示(prompting)
解决方案更新:
在线实时获取知识库之外的内容作为上下文,使用 @firecrawl_dev @JinaAI_ @scrapegraphai 等获取网络内容,可以参考之前的推文:
https://t.co/jOu8b1jnrA
2. 错过排名靠前的文档
重要文档未出现在检索结果的 Top 排名中。
解决方案:
超参数调整和重排(reranking)
解决方案更新:
采用 Reranking 模型,例如:
Cohere Rerank @cohere @CohereForAI
https://t.co/QAyQ5b0oYE
Voyageai Reranker @Voyage_AI_ https://t.co/ALM3jEjhW9
JinaAI Reranked @JinaAI_
https://t.co/ONziA3BjNH
3. 上下文整合策略限制
检索到的文档未成为生成答案的上下文。
解决方案:
调整检索策略和微调嵌入模型
解决方案更新:
采用不同的嵌入模型,不同阈值和分块策略调试调优。
4. 内容未提取
系统难以从提供上下文中提取正确答案
解决方案:
数据清洗、Prompt 压缩和长上下文重排序。
解决方案更新:
采用上下文更大的 LLM,例如 Gemini 等,增加上下文容量。
5. 格式错误
输出格式不符合要求
解决方案:
更好的 Prompt、输出解析、Pydantic 程序和 OpenAI JSON 模式。
6. 具体性错误
输出缺乏必要的细节或过于笼统
解决方案:
使用高级检索策略。
7. 不完整
输出不完整,未提供所有细节
解决方案:
改变查询方式,增加查询理解层。
8. 数据摄取可扩展性
数据摄取流程无法扩展到更大的数据量
解决方案:
并行化摄取流程。
9. 结构化数据 QA
难以准确解释用户查询以检索相关结构化数据
解决方案:
使用 Chain-of-table Pack 和 Mix-Self-Consistency
Pack。
解决方案更新:
使用 LLM 优化用户输入 Prompt,包括分解 Prompt、优化 Prompt 输出结构要求等。
10. 复杂 PDF 数据提取
需要从复杂 PDF 文档中提取数据,如嵌入表格
解决方案:
使用 EmbeddedTablesUnstructuredRetrieverPack。
解决方案更新:
PDF 解析方案优化,把 PDF 解析为 Markdown 等 LLM 读取友好的格式,解析图片、表格、文档布局结构等信息。
这部分我还没有专门调查过 PDF 解析方案,欢迎朋友们分享补充。
11. 备用模型
当主要模型出现问题时,需要备用模型
解决方案:
使用 Neutrino 路由和 OpenRouter。
解决方案更新:
开发调试中评估多个大模型,在相关问题中选取最适合模型;或在运行推理中采用多个大模型推理并制定一个大模型进行最优答案评选。
12. 大语言模型(LLM)安全性
如何应对提示注入、处理不安全输出和防止敏感信息泄露
解决方案:
使用 NeMo Guardrails 和 Llama Guard。
Tip:
原文中解决方案采用了 @llama_index SDK 中的方案,大家可以参考,也可以看我解决方案更新中的参考方案,有更好的方案欢迎朋友们分享补充。
原文链接:
https://t.co/ig8BIT7dL9
点击图片查看原图