RAG调研

一 : RAG解决的问题

1.1 LLM 的局限

幻觉
知识过期
推理过程不透明,不可追踪

1.2 RAG介绍

检索增强生成(RAG)是一种使用外部知识库辅助文本生成的技术。它结合了检索与生成,通过访问外部数据库检索得到有关的信息,把检索得到的信息与query合并为新的prompt,让LLM从包含外部信息的prompt中学习知识(in-context learning)并生成正确答案。

核心步骤
(1)检索(Retrieval) (2)增强(Augmentation)(3)生成(Generation)
在这里插入图片描述

1.3 Fine-Tuning和RAG的区别:

FT是将领域知识注入模型,RAG增加领域知识上下文

1.4 RAG的优势和隐患

优势:成本低,内容更具时效性,灵活性高
隐患:(1) 提供的上下文知识并不包含答案 (2)上下文知识里包含噪声

二 : 朴素RAG以及问题

2.1 主要组件

向量数据库(Vector Database)
向量数据库是一种专门设计用来高效存储和检索向量数据的数据库系统。

查询检索(Retrieval)
检索器可以从一个大规模的文档集合或知识库中检索出与给定查询最相关的信息

数据增强(Augmented)
增强器将检索到的相关信息的上下文有效融入当前query

生成回答(Generator)
生成器将检索到的多个文档或信息片段综合考虑,融合它们的内容来构建一个连贯、逻辑一致的输出。

2.2 不足

朴素 RAG 主要在三个方面面临挑战:检索质量、回应生成质量和增强过程。

检索质量:低精度、低召回
增强过程:不合理融入带来的冗余、杂乱等问题
生成质量:虚构答案、不相关回答、有害回答等

三 : 优化方向----retrival优化

retrival优化

检索前Query优化
检索方式优化

3.1 Pre- Retrieval

单一的 Query 可能存在噪音和随机性;因此在query 进行检索前,可以对query进行如下操作:
(1)使用 LLM 对 query 进行改写,使之更加规范;
Rewrite-Retrieve-Read框架应用小语言模型(T5)作为可训练的改写器,对改写器进行微调
(2)使用 LLM 理解query 意图并生成多个 queries 并行检索
(3)RAG-Fusion使用 LLM 将 query 分解成多个 sub query,并行检索。
CoVe技术,将复杂 Prompt 拆分为多个独立的query,让LLM对每个子查询进行定向知识库搜索
(4)在查询中加入多轮对话,将其与内存缓冲区中的聊天历史记录一起发送给LLM,以便LLM在生成下一个答案时了解先前的上下文。

3.1.1 相关论文

论文:Query Rewriting for Retrieval-Augmented Large Language Models
在这里插入图片描述>》采用两阶段的训练策略:Warm up + RL,训练一个T5改写器
第一阶段:提示LLM根据原始query生成伪标签,组成(𝑥, ~𝑥)
在这里插入图片描述
第二阶段:使用伪标签生成预测结果,和label计算reward
在这里插入图片描述

论文:CHAIN-OF-VERIFICATION REDUCES HALLUCINATION IN LARGE LANGUAGE MODELS
LLM生成的响应可以用来验证自身,利用自我验证过程评估初始响应的准确性
(1)根据query生成baseline 回答
(2)Cove 根据baseline 回答生成一组待验证问题
(3)回答验证问题
(4)根据验证问题的回答修订回答
在这里插入图片描述

3.2 Retrieval优化

  1. 向量存储索引:将查询内容发送至索引,检索相关信息
    flat索引,暴力法计算query与所有块向量之间的距离。
    高效的搜索索引,对大规模检索进行了优化,例如faiss、nmslib或annoy索引。
  1. 总分层次索引:
    创建两个索引——一个由摘要组成,另一个由文档块组成,分两步进行搜索:摘要过滤+群体内搜索
    优点:加快了查询速度;缺陷:过滤可能会忽略细节信息
  1. 父子层级索引
    先将文档切分成较大的文本块,形成 parent chunks;再对每个parent chunk 按更细的方式切分成 child chunks
    query 检索时,在 sub chunks 中进行检索,返回所对应的 parent index 回至父段块
    优点:获得更完整完整的上下文,以父段作为最终的增强信息获得答案。
  1. 假设性问题和HyDE:
    使用LLM为每个块生成一个假设性问题,检索后将原始文本块作为上下文发送给LLM以获取答案。 优点:查询和假设性问题之间的语义相似性更高,从而提高了搜索质量。
    使用LLM根据查询生成一个假设性回答
  1. 并行查询
    动机:chunks的大小会对相似度结果产生较大影响。当chunks过小时,没有上下文信息,宽泛性query 匹配不准确;当chunks过大时,chunk涵盖的信息多,将导致精确的问题匹配时存在噪音
    做法:构建多个chunks 数据集,每个数据集的chunks大小不同,采用并行的方式进行同时匹配,并进行集中排序,选择 top_k 个文本块作为增强内容。

四 : 优化方向----augument优化

4.1 用生成的内容增强RAG

LLMs-Generated Content in RAG
GenRead使用LLM生成器替换检索器,增加生成文档中的知识覆盖率
Step 1:为每个question生成一个上下文文档d
Step 2:使用GPT3对(question, document)数据对进行embedding, K-means算法进行聚类
Step 3:从每个cluster中采样N个(q, d)数据对,将他们输入LLM得到K个上下文文件
在这里插入图片描述
在这里插入图片描述

4.2 迭代搜索

IRCoT迭代执行搜索和推理的步骤,直到stop
一个基本检索器,可以接受查询
一个具有零/少样本思想链(CoT)生成能力的语言模型;
在这里插入图片描述

4.3 CoT

CoT(Chain-of-Thought),大模型思维链加入了解题的中间过程,诱导大模型“按步骤解题”
CoT 的工作原理:
模型规模小会导致 CoT 失效;
简单的任务 CoT 不会对模型性能带来提升;
训练数据内部彼此相互联结程度的增加可以提升 CoT 的性能;
示例中的错误,或者无效的推理步骤不会导致 CoT 性能的下降;
在这里插入图片描述
在这里插入图片描述

迭代搜索
IRCoT在思维链的每个步骤中检索文档,利用 CoT来指导检索,并用检索结果来优化 CoT
在这里插入图片描述

五 : 优化方向----generator优化

5.1 信息压缩

由于上下文限制,信息压缩对于降低噪声、解决上下文长度限制和增强生成效果具有重要意义。

PRCA训练信息提取器,训练目标是最小化实际上下文和压缩上下文(label)的差异
Dense Passage Retriever(DPR)将问题定义为 (𝑞𝑢𝑒𝑠𝑡𝑖𝑜𝑛, 𝐶 → 𝐶_𝐹),训练了两个encoder ,分别映射question和passage,并使用对比损失进行训练,找到语料库中最相关的信息
在这里插入图片描述

使用两阶段训练法:预训练 + RL,训练一个文本压缩器
预训练阶段:在文本摘要任务里面训练压缩器
在这里插入图片描述
RL阶段:确保 PRCA 提取的文本有效指导生成器的回答
在这里插入图片描述

Filter-Reranker结合了LLMs和Small Language Models (SLMs),提出了Filter-then-rerank Paradigm,可以提升信息提取任务的性能

LLM擅长回答难样本,SLM擅长简单样本,因此,核心思想是将小模型不太确定的测试样本再给大模型重新选择一下。
在这里插入图片描述

5.2 Re-Rank重新排序

对候选文档列表进行重新排序,以提高其与用户查询语义的匹配度,优化排序结果。

Cohere Rerank、BGE-Reranker 重新计算相关文本与query之间的语义相似度,将更为相关的文档排在前面

LLM:基于提示学习的重排序模块可以根据样本的输入方式分为 ==Pointwise、Listwise、Pairwise ==三类
(1) Pointwise 类方法输入查询与单个文档,输出生成二者是否相关的 token
(2) 设计指令提示大模型,将生成给定查询的概率作为相关性得分。

Listwise方法同时输入多个文档,根据相关性对文档进行排序。
Pairwise 类方法,输入为query与一组文档对,比较其中一个文档是否比另一个更加相关
在这里插入图片描述
在这里插入图片描述

六 : 评估RAG

6.1 Retrieval Quality

MMR(平均倒排率)
Hits Rate(命中率)
NDCG(归一化折损累积增益)

6.2 Generation Quality

在这里插入图片描述

七 : RAFT

训练模型学会寻找答案
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

文件解析漏洞--IIS--Vulhub

文件解析漏洞 一、IIS解析漏洞 用windowserver2003安装IIS测试 1.1 IIS6.X 方法一:目录解析 在网站下建立文件夹的名字为.asp/.asa的文件夹,其目录内的任何扩展名的文件都被IIS当作asp文件来解析并执行。 1.txt文件里是asp文件的语法查看当前时间 方…

【C++】学习笔记——C++11_3

文章目录 十九、C116. 右值引用和移动语义万能引用和完美转发 7. 新的类功能新的默认成员函数类成员变量初始化defaultdelete继承和多态中的final与override关键字 8. 可变参数模板STL容器中的empalce相关接口函数 未完待续 十九、C11 6. 右值引用和移动语义 万能引用和完美转…

5 款最佳电脑照片恢复软件,助您恢复误删除的照片

电脑可以作为存储盒来保存您美好的照片记忆。 然而,病毒、格式化、删除等突发事件可能会夺走你由图片组成的记忆。 我怎样才能从我的计算机恢复已删除的照片? 照片恢复软件就是答案。 本页列出了适用于 Windows 和 Mac 的 5 个最佳图片恢复程序&…

创建个人公私钥对

Windows电脑 本地电脑打开命令输入框,如windows WINR–cmd打开cmd窗口输入ssh-keygen -t rsa -C “Remote dev” ,按三次回车,即可看到本地生成的公私钥进入用户目录,如windows为C:\Users\xxx(个人域账号).ssh,可看到…

【股票价格跨度】python刷题记录

R3-栈和队列-单调栈 有个小思路:如果用栈的话,比如a,b在c前面,然后查找c的跨度的时候,往回搜索,如果b比c小,那就可以把b的跨度加到c上,否则,继续往回查找到a----(思路貌似…

仿RabbitMQ实现消息队列———整体框架

目录 一、项目简介 需求分析 AMQP 特点: AMQP 模型: 交换机类型 持久化 网络通信 二、服务端模块 1、交换机数据管理 2、队列数据管理 3、绑定数据管理 4、消息数据管理 5、虚拟机数据管理 6、路由匹配管理 7、消费者管理 8、信道管理 …

BUGKU-WEB-文件包含

解题思路 你说啥我就干啥:点击一下试试你会想到PHP伪协议这方面去嘛,你有这方面的知识储备吗?看到?fileXXX.php,那不就是典型的文件包含吗?这里需要用的一个伪协议php://filter:是一种元封装器, 设计用于…

SSM学习10:整合MyBatis、MyBatisPlus

SpringBoot整合MyBatis 与创建spring web项目类型,添加上相应依赖 实体类 public class Account {private int id;public int getId() {return id;}public void setId(int id) {this.id id;}public String getName() {return name;}public void setName(String …

Educational Codeforces Round 168 (Rated for Div. 2)(A~D题题解)

A. Strong Password 思路&#xff1a;想要最长的时间&#xff0c;那么肯定就是如果存在前后相同的字母的时候&#xff0c;在中间插入一个不同的字符 &#xff0c;如果不存在前后相同的字符&#xff0c;直接在最后插入一个和原字符串最后一个字符不同的字符 #include <bits/…

Go语言入门进阶语法 | 数据结构 |指针|结构体|数组|切片|Map|方法|接口|错误|io库|泛型

✅作者简介&#xff1a;CSDN内容合伙人、信息安全专业在校大学生&#x1f3c6; &#x1f525;系列专栏 &#xff1a; &#x1f4c3;新人博主 &#xff1a;欢迎点赞收藏关注&#xff0c;会回访&#xff01; &#x1f4ac;舞台再大&#xff0c;你不上台&#xff0c;永远是个观众。…

QGIS 缓冲区交集信息提取

目标 计算出靠近河道的农田数量及位置&#xff0c;具体方法为使用QGIS 中计算出距离线图层&#xff08;代表河道&#xff09;100 米范围内的点&#xff08;代表水田&#xff09;图层中的点。 具体步骤 步骤 1: 创建缓冲区 首先需要基于线图层创建一个缓冲区图层。 打开 QGIS…

JavaScript基础——JavaScript调用的三种方式

JavaScript简介 JavaScript的作用 JavaScript的使用方式 内嵌JS 引入外部js文件 编写函数 JavaScript简介 JavaScript&#xff08;简称“JS”&#xff09;是一种具有函数优先的轻量级&#xff0c;解释型或即时编译型的编程语言。它是Web开发中最常用的脚本语言之一&#x…

软件测试:动态黑盒测试的过程

要成为一个成功的软件测试员&#xff0c;需要采用更结构化的、目标明确的方法继续测试。 本文粗略描述动态黑盒测试的结构化过程 目录 1.动态黑盒测试 拿到需求文档或产品说明书 定义测试用例 test-case 2. 通过性测试和时效性测试 3. 等价类划分 4. 数据测试 边界条件…

【Redis】 拓展:Redis - BigKey方案探讨

BigKey: 用户越多&#xff0c;redis数据越多&#xff0c;bigkey会使得缓存数据更大&#xff0c;网络带宽会被占用&#xff0c;执行效率就低下&#xff0c;高并发的时候吞吐量QPS也会下降。 产生原因&#xff1a; 看如下list&#xff1a; 一个key的内容太大&#xff0c;比如1M&…

【宝藏系列】物联网中常用的十种通信协议

【宝藏系列】物联网中常用的十种通信协议 文章目录 【宝藏系列】物联网中常用的十种通信协议1️⃣MQTT2️⃣CoAP3️⃣AMQP4️⃣XMPP5️⃣LwM2M6️⃣HTTP7️⃣DDS8️⃣Bluetooth Low Energy9️⃣LoRaWAN1️⃣0️⃣NB-IoT 1️⃣MQTT MQTT&#xff08;Message Queuing Telemetry T…

JNDI注入-高版本绕过

参考博客&#xff1a; JNDI注入与动态类加载 探索高版本 JDK 下 JNDI 漏洞的利用方法 - 跳跳糖 (tttang.com) 分析版本 jdk8u201 分析流程 修复 在ldap绕过中&#xff0c;我们讲了LDAP的修复&#xff0c;下面用jdk8u201具体来看下修复。 修复之前&#xff0c;利用是在L…

英文文献翻译方法哪个好?高效率的翻译方法分享

三伏天的酷热也抵挡不住学术人探索知识的脚步&#xff0c;阅读和翻译英文文献几乎已经成为了许多研究者和学者的日常。然而在面对浩如烟海的英文资料时&#xff0c;如何高效准确地进行翻译&#xff0c;成为了亟待解决的问题。 今天我便挖掘到了5款实用的英文文献翻译工具&…

【论文共读】【翻译】【GPT】Improving Language Understanding by Generative Pre-Training

GPT 原论文地址 翻译&#xff1a; Improving Language Understanding by Generative Pre-Training 通过生成式预训练提高语言理解能力 0. 摘要 自然语言理解包括各种不同的任务&#xff0c;例如文本蕴涵、问答、语义相似性评估和文档分类。尽管大量未标记的文本语料库很丰富…

《昇思25天学习打卡营第24天》

接续上一天的学习任务&#xff0c;我们要继续进行下一步的操作 构造网络 当处理完数据后&#xff0c;就可以来进行网络的搭建了。按照DCGAN论文中的描述&#xff0c;所有模型权重均应从mean为0&#xff0c;sigma为0.02的正态分布中随机初始化。 接下来了解一下其他内容 生成…

科普文:万字梳理高性能 Kafka快的8个原因

概叙 科普文&#xff1a;万字详解Kafka基本原理和应用-CSDN博客 科普文&#xff1a;万字梳理31个Kafka问题-CSDN博客 我们都知道 Kafka 是基于磁盘进行存储的&#xff0c;但 Kafka 官方又称其具有高性能、高吞吐、低延时的特点&#xff0c;其吞吐量动辄几十上百万。 在座的…