RAG 技术 05 - 检索
检索是 RAG 的核心,提供了准确的上下文才能正确输出答案,如果提供无关甚至错误的上下文,那么将得到错误答案
检索原理
检索的方法是比较 Query 与文档的差异,选择差异小的文档输出,“比较” 不是通过直接比较 Query 与文档的文本内容,而是通过比较两者的索引
- 对于 “关键词索引” 的方法,如算法 BM25,其原理为:利用 TF-IDF 计算查询与文档的相似性
- 对于 “向量索引” 的方法,其原理为:将 Query 和文档同时编码到向量空间,然后计算两个向量的欧式距离或者余弦距离
- 对于表格、数据库、图片、知识图片数据:预检索已经生成对应的检索代码,直接执行即可
在实际使用中,以上方法可以组合使用,形成所谓的 “混合检索”,比如关键词 + 向量检索
HyDE:假设性文档 embedding
预先为用户的问题生成几个回答,然后使用使用回答去检索而不是使用问题。使用
![[RAG 技术 05 - 检索 - 20250124151106.png]]
使用查询路由
对不同复杂程度的问题进行分而治之,对于复杂的问题,可以采用多步 llm 去解决,对于简单的问题,甚至 llm 自身就可回答
如此也降低了每次使用 llm 的 prompt 的依赖