RAG 学习笔记(五)

2024-01-18  本文已影响0人  啊阿伟啊

基于博文 Advanced RAG Techniques: an Illustrated Overview 的学习和练习的记录。

中文内容可以查看博主@宝玉的译文 高级 RAG 技术:图解概览 [译]

系列笔记:
RAG 学习笔记(一)
RAG 学习笔记(二)
RAG 学习笔记(三)
RAG 学习笔记(四)

重排序与过滤

在获取检索结果后,可以根据通过过滤、重新排序或者其他的转换方法来进行检索结果的优化。

这是将检索结果提供给 LLM 的最后一步。

LlamaIndex 有多种后处理器(Postprocessor)可以进行过滤和重排序:

动手练习Rerank LangChain 实现: Cohere Rerank 和 Cross-encoder Rerank


下面的内容是更为复杂的 RAG 技术,涉及 Agent 相关知识,包括 LLM 推理的一些复杂逻辑。

查询转换

查询转换通过使用LLM作为推理引擎对用户输入进行修改,从而提高检索质量。

方法一:查询拆分

查询转换原理
  1. 如果查询语句复杂,可以使用 LLM 分解为多个子查询
  2. 将多个子查询并行执行,将检索到的结果合并,提供给 LLM

比如:

实例

  1. LangChain 实现:Multi Query Retriever
  2. LlamaIndex 实现:Sub Question Query Engine

方法二:回退(step-back)法

  1. 将原始查询语句通过 LLM 生成更加通用的查询,以供检索出更通用或更高级别的上下文
  2. 使用原始查询进行检索
  3. 将两个查询的检索结果合并,提供给 LLM

比如:

实例

LangChain 实现:LangChain cookbook: Step-Back Prompting

方法三:查询重写

使用 LLM 将原始查询重新表述(reformulate)

实例

  1. LangChain 实现:LangChain Cookbook: Rewrite-Retrieve-Read
  2. LlamaIndex 实现:Query Rewriting Retriever Pack

理解回退(step-back)法和查询重写法,请看:Query rewrite 和 Step-back Prompting 对比学习

上一篇 下一篇

猜你喜欢

热点阅读