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

RAG 学习笔记(六)

作者: 啊阿伟啊 | 来源:发表于2024-01-23 01:37 被阅读0次

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

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

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

    参考引用

    用户最终获得的回答来自于多个源:

    1. 复杂查询:使用多个子查询检索获得的上下文整合为一个回答
    2. 单个查询:从各种文档中检索到的相关上下文合并成一个回答

    问题:如何准确回溯回答内容的来源

    方法:

    1. 将内容引用的任务增加到 prompt 中,让 LLM 来提示内容引用来源的 id
    2. 将生成的回答与检索到的文本块匹配

    参考引用是一个工具,并不是改进检索性能的方法。

    对话引擎(Chat Engine)

    RAG 系统,只有单次查询是不够的。一个优秀的 RAG 系统需要支持对话逻辑,在查询的时候能够将对话的上下文考虑在内。

    技术点

    查询压缩技术(query compression)

    • 将对话历史和用户查询语句一并考虑

    实现方法

    两种方法的图示
    1. ContextChatEngine:简单且流行的方法

      • 使用用户查询语句获取相关内容
      • 将检索结果和对话历史一并发送给 LLM,用于生成回答
    2. CondensePlusContextMode:更为复杂的实现

      • 将用户查询语句和对话历史一并发送给 LLM,生成一个新的查询语句
      • 使用新的查询语句获取检索结果
      • 将检索结果和用户的原始查询语句一并发送给 LLM,生成回答
    3. ReAct Agent:内容和 Agent 相关,后面一并介绍

    动手练习

    LangChain ConversationalRetrievalChain 对话方法实现

    查询路由(Query Routing)

    1. 由 LLM 支持的决策步骤
    2. 用来决定根据用户的查询,下面要做什么事情。通常有以下任务:
      • 内容总结
      • 从某个数据源检索数据(关系型数据库,图数据库,向量数据库等)
      • 执行多个不同的路由,并将各个路由的执行结果合并,提供给 LLM 生成回答。

    技术说明

    1. 查询路由的定义中包含可以执行的选项,可以是
      • 检索某个数据源的数据
      • 如果是 Agent 应用,可能是执行子任务链或者其他的 Agent(如多文档 Agent,后面会介绍)
    2. 通过 LLM 决定具体执行的选项,返回的结果是预先定义的格式,方便程序调用方法执行具体任务。

    实现

    1. LangChain: Dynamically route logic
    2. LlamaIndex: Routers

    相关文章

      网友评论

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

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