RAG 技术 05 - 检索

检索是 RAG 的核心,提供了准确的上下文才能正确输出答案,如果提供无关甚至错误的上下文,那么将得到错误答案

检索原理

检索的方法是比较 Query 与文档的差异,选择差异小的文档输出,“比较” 不是通过直接比较 Query 与文档的文本内容,而是通过比较两者的索引

  • 对于 “关键词索引” 的方法,如算法 BM25,其原理为:利用 TF-IDF 计算查询与文档的相似性
  • 对于 “向量索引” 的方法,其原理为:将 Query 和文档同时编码到向量空间,然后计算两个向量的欧式距离或者余弦距离
  • 对于表格、数据库、图片、知识图片数据:预检索已经生成对应的检索代码,直接执行即可

在实际使用中,以上方法可以组合使用,形成所谓的 “混合检索”,比如关键词 + 向量检索

HyDE:假设性文档 embedding

预先为用户的问题生成几个回答,然后使用使用回答去检索而不是使用问题。使用

![[RAG 技术 05 - 检索 - 20250124151106.png]]

使用查询路由

对不同复杂程度的问题进行分而治之,对于复杂的问题,可以采用多步 llm 去解决,对于简单的问题,甚至 llm 自身就可回答

如此也降低了每次使用 llm 的 prompt 的依赖