LangChain4j-RAG高级-核心概念

news2024/9/20 22:30:29

RetrievalAugmentor整体概念

简单总结一下

LangChain4j中对于RetrievalAugmentor这里官方描述的比较模糊, 只在 DefaultRetrievalAugmentor章节给出来了一个灵感来源的文章(LangChain框架中的设计思路)和一个研究报告, 有兴趣可以看一下:

  • Deconstructing RAG
  • https://arxiv.org/pdf/2312.10997

通常,RAG 系统涉及:确定要检索哪些信息的问题(通常来自用户)、从数据源(或多个数据源)检索信息的过程以及将检索到的信息直接传递到LLM作为提示的一部分。

这里的设计理念就是将用户的提问进行转换为具体的子问题,再根据子问题的描述路由到不同的数据源进行检索,将检索的内从进行重新合并达到检索增强的结果,最后再根据检索内容来回答用户的问题。

下面是具体的一些设计理念。

Query Transformations 查询转换

考虑 RAG 时要问的第一个问题:我们如何才能使RAG系统对用户输入的不同问题的回答具有健壮性?例如,对于具有挑战性的检索任务,用户问题的措辞可能很糟糕。查询转换是一组专注于修改用户输入以改进检索的方法。

Query expansion 查询扩展

查询扩展将输入分解为子问题,每个子问题都是一个更狭窄的检索挑战。多查询检索器执行子问题生成、检索,并返回检索到的文档的唯一并集。 RAG 融合通过对每个子问题返回的文档进行排名来构建后退提示提供了第三种方法,即生成后退问题,以更高层次的概念或原则为答案综合奠定基础。

一种称为“后退”提示的提示技术可以通过首先提出“后退”问题来提高复杂问题的表现。这可以与常规问答应用程序结合起来,然后对原始问题和后退问题进行检索

例如, 用户提出的一个物理问题, 可以退回到一个物理原理的问题(LLM生成的回答),再进一步根据原理的问题和用户的原始问题来进行回答。

“后退”问题示例:

考虑一下这个问题:“红袜队和爱国者队谁最近赢得了冠军?”提出两个具体的子问题可以帮助回答这个问题:

  • “红袜队上次赢得冠军是什么时候?”
  • “爱国者队上次夺冠是什么时候?”

最后根据两个问题分别检索后得到对应的结果,最后再进行排名和合并回答用户的问题。

可以按照官方的流程图进行理解:

Query re-writing 查询重写

为了解决框架或措辞不当的用户输入,重写-检索-读取 是一种重写用户问题以改进检索的方法。

Query compression 查询压缩

在某些 RAG 应用程序中。为了正确回答问题,可能需要完整的对话上下文。为了解决这个问题,将聊天记录压缩为最终问题以供检索。

Routing 路由

考虑 RAG 时要问的第二个问题:数据存放在哪里?在许多 RAG 演示中,数据位于单个向量存储中,但在生产环境中通常并非如此。当跨一组不同的数据存储进行操作时,需要路由传入的查询。LLMs可用于有效支持动态查询路由。

Query Construction 查询构造

考虑 RAG 时要问的第三个问题:查询数据需要什么语法?虽然路由问题采用自然语言,但数据存储在需要特定语法才能检索关系数据库图形数据库等源中。甚至矢量存储也利用结构化元数据进行过滤。在所有情况下,查询中的自然语言都需要转换为查询语法以供检索。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1953829.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Greenplum的诞生与成长过程

Greenplum 成立与早期发展 Greenplum的诞生于早起发展 Greenplum于2003年在美国硅谷成立,在2006年发布了基于PostgreSQL(8.x)的MPP数据库产品,作为与公司同名的MPP数据库,专为分析和管理海量数据集而设计,支持复杂的数据分析和商…

0724,select +tcp 聊天室喵

目录 TCP协议喵 723__01:使用select实现一个基于UDP的一对一即时聊天程序。 001: 002: TIMEWAI OR BUG 721作业: 01:在一对一聊天的基础上,使用select实现一对多的回显服务。(回显服务即接收到客户端发送的数…

布尔盲注——多种方式实现及利用burpsuite爆破

目录 1、判断闭合符类型 2、爆数据库长度 3、查询库名 手动注入 burpsuite爆破 方法一:用ASCII码值转化爆破 方法二:left方法直接爆破字母 方法三:if方法爆破注入(最简单) 4、爆破表名 5、爆破具体值 当我们改变前端…

javaEE(1)

一. Web开发概述 Web开发:指的是从网页中向后端程序发送请求,与后端程序进行交互 Web服务器:是一种软件,向浏览器等Web客户端提供文档等数据,实现数据共享,它是一个容器,是一个连接用户和程序之间的中间键 二. Web开发环境搭建 我们要实现前后端交互,首先需要中间键Web服务…

pinia安装及简介

pinia简介 基本特点 轻量级:Pinia相比于传统的Vuex,体积更小,性能更好,只有大约1KB左右。 简化API:Pinia简化了状态管理库的使用方法,抛弃了Vuex中的mutations,只保留了state、getters和actions…

论文阅读:(DETR)End-to-End Object Detection with Transformers

论文阅读:(DETR)End-to-End Object Detection with Transformers 参考解读: 论文翻译:End-to-End Object Detection with Transformers(DETR)[已完结] - 怪盗kid的文章 - 知乎 指示函数&…

传输层(port)UDP/TCP——解决怎么发,发多少,出错了怎么办

**传输层:**负责数据能够从发送端传输接收端. 传输层所封装的报头里一定有:源端口号和目的端口号的。 **端口号:**可以标识一台主机中的唯一一个进程(运用程序),这样当数据传输到传输层的时候就可以通过端…

电商项目之如何判断线程池是否执行完所有任务

文章目录 1 问题背景2 前言3 4种常用的方法4 代码4.1 isTerminated()4.2 线程池的任务总数是否等于已执行的任务数4.3 CountDownLatch计数器4.4 CyclicBarrier计数器 1 问题背景 真实生产环境的电商项目,常使用线程池应用于执行大批量操作达到高性能的效果。应用场景…

当全球银行系统“崩溃”时会发生什么?

有句名言:“当美国打喷嚏时,世界就会感冒……”换句话说,当人们对美国及其经济稳定性的信心下降时,其他经济体(以及黄金、白银和股票等资产)的价值往往会下降。 与任何其他资产类别一样,加密货…

Java并发编程深入浅出(个人造诣)

目录 串行,并行与并发: 并发编程的目的 如何保证多线程的安全(并发编程思想) 写后读思想:(一个线程写后再让另一个线程读) 如何保障写后读? 1、加锁:(s…

Cocos Creator2D游戏开发(3)-飞机大战(1)-背景动起来

资源见: https://pan.baidu.com/s/1cryYNdBOry5A4YEEcLwhDQ?pwdzual 步骤 1, 让背景动起来 2, 玩家飞机显现,能操控,能发射子弹 3.敌机出现 4. 碰撞效果(子弹和敌机,敌机和玩家) 5. 积分和游戏结束 6. 游戏存档,对接微信小游戏,保存历史最高分 7. cocos发布到微信小游戏 资源…

【计算机网络】IP地址和子网掩码(IP地址篇)

个人主页:【😊个人主页】 系列专栏:【❤️计算机网络】 文章目录 前言IP地址网络地址网络地址的定义与组成作用分类网络地址的分配与管理 广播地址(Broadcast Address)定义构成类型作用注意事项 广播地址功能 组播地址…

【初阶数据结构篇】栈的实现(赋源码)

文章目录 栈1 代码位置2 概念与结构1.1概念1.2结构 2 栈的实现2.1 栈的初始化和销毁2.1.1 初始化2.1.2 销毁 2.2 栈顶插入和删除数据2.2.1 栈顶插入数据(压栈)2.2.2 栈顶删除数据(出栈) 2.3 返回栈顶数据2.4 返回栈的有效数据个数…

Jenkins持续部署

开发环境任务的代码只要有更新,Jenkins会自动获取新的代码并运行 1. pycharm和git本地集成 获取到下面的 Git可执行文件路径 2. pycharm和gitee远程仓库集成 先在pycharm中安装gitee插件 在设置中找到gitee,点击添加账户,并将自己的账户添…

(day26)leecode热题——找到字符串中所有字母异位词

描述 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。 示例 1: 输入: s "cbaebabacd", p …

【QGroundControl二次开发】六. QGC地面站中视频流配置gstreamer

本文解决qgc源码编译后无法接收视频推流,原因是缺少gstreamer。 下面为windows安装流程,qgc版本为4.4.1稳定版 1. 安装gstreamer 官网链接:https://gstreamer.freedesktop.org/download/#windows 两个都要下载。安装的时候,在cu…

网络安全自学从入门到精通的制胜攻略!!!

在信息时代,网络安全已成为至关重要的领域。越来越多的人希望通过自学掌握这门技术,开启充满挑战与机遇的职业道路。以下是一份精心为您打造的网络安全自学攻略,助您在自学之旅中乘风破浪。 一、明确目标与兴趣方向 网络安全涵盖众多领域&am…

Java的四种引用类型

Java的四种引用类型 1. 强引用(Strong Reference)2. 软引用(Soft Reference)3. 弱引用(Weak Reference)4. 虚引用(Phantom Reference) 💖The Begin💖点点关注…

硬件工程师笔面试真题汇总

目录 1、电阻 1)上拉电阻的作用 2)PTC热敏电阻作为电源电路保险丝的工作原理 2、电容 1)电容的特性 2) 电容的特性曲线 3) 1uf的电容通常来滤除什么频率的信号 3、电感 4、二极管 1)二极管特性 2)二极管伏安…

MySQL练手 --- 1633. 各赛事的用户注册率

题目链接:1633. 各赛事的用户注册率 思路: 两张表,一张为Users用户表,该表存储着所有用户的 user_id 和 user_name 另一张表为Register注册表,该表存储着赛事id(contest_id),和已…