rag参考资料: https://datawhalechina.github.io/all-in-rag/#/chapter5/16_formatted_generation
RAG的优化方案
1. RAG优化的三大阶段
1. 提问阶段
2. 检索阶段
1.RAG高效召回方法
- 合理的设置token_k
一般比较优的文档个数是5个左右,但是要根据实际的文档数量进行调整。 - 改进索引算法
知识图谱: 利用知识图谱中的语义信息和实体关系,增强对查询和文档的理解,提升召回的相关性
基于知识图谱的RAG检索方法: GraphRAG
LightRAG
- 引入重排序(Reranking)
重排序模型: 对召回结果进行重排,提升问题和文档的相关性。常见的重排序模型有BGE-Rerank和Cohere Rerank。
场景:用户查询“如何提高深度学习模型的训练效率?”
召回结果:初步召回10篇文档,其中包含与“深度学习”、“训练效率”相关的文章。
重排序:BGE-Rerank对召回的10篇文档进行重新排序,将与“训练效率”最相关的文档(如“优化深度学习训练的技巧”)排在最前面,而将相关性较低的文档(如“深度学习基础理论”)排在后面。
混合检索: 结合向量检索和关键词检索的优势,通过重排序模型对结果进行归一化处理,提升召回质量。
- 优化查询扩展
相似语义改写: 使用大模型将用户查询改写成多个语义相近的查询,提升召回多样性
=== 例如,LangChain的MultiQueryRetriever 支持多查询召回,再进行回答问题。
