美文网首页
RAG 学习笔记(五)

RAG 学习笔记(五)

作者: 啊阿伟啊 | 来源:发表于2024-01-18 19:33 被阅读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

    比如:

    • 原始查询语句:What framework has more stars on Github, Langchain or LlamaIndex?
    • 分解后的子查询:
      • How many stars does Langchain have on Github?
      • How many stars does Llamaindex have on Github?

    实例

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

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

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

    比如:

    • 原始查询:Could the members of The Police perform lawful arrests?
    • 更加通用的查询:What can the members of The Police do?

    实例

    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 对比学习

    相关文章

      网友评论

          本文标题:RAG 学习笔记(五)

          本文链接:https://www.haomeiwen.com/subject/gsfrodtx.html