RAG调研

news2024/9/19 10:49:21

一 : 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://www.coloradmin.cn/o/1962599.html

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

相关文章

vue的基础知识总结(1)

目录 一.什么是Vue? 二.基于脚手架创建就前端工程: 三.Vue工程结构以及组件: 1.Vue项目结构: 2.Vue组件: 四.Vue基本使用方式: 1.文本插值{{}}: 2.属性绑定v-bind: 3.事件绑…

常用的项目管理软件有哪些?东成电动工具用 PowerProject 打造先进项目管理平台

近日,国内最大的专业电动工具制造企业:江苏东成电动工具有限公司与北京奥博思软件技术有限公司达成合作,借助 PowerProject 项目管理系统,全面提升项目管理效率,满足企业多场景、多角色的全周期项目管理,激…

torch._dynamo 理解(2)——Backend

0 概述 TorchDynamo 是一个 Python 级别的即时 (JIT) 编译器,旨在让未修改的 PyTorch 程序运行得更快。它通过 Python Frame Evaluation Hooks(Python 框架评估钩子)来实现这一目标,以便在运行时动态地生成和优化代码。这使得 To…

借助Aspose.html控件, 将SVG 转PNG 的 C# 图像处理库

Aspose.HTML for .NET 不仅提供超文本标记语言 ( HTML ) 文件处理,还提供流行图像文件格式之间的转换。您可以利用丰富的渲染和转换功能将SVG文件渲染为PNG、JPG或其他广泛使用的文件格式。但是,我们将使用此C# 图像处理库以编程方式在 C# 中将 SVG 转换…

VBA 颜色

1. ColorIndex 1-1. ColorIndex的值是从1到56。 Option ExplicitConst MAX_COL As Long 8 Const MAX_ROW As Long 2 Const START_ROW As Long 2 Const START_COL As Long 2Sub Color()Dim i As IntegerDim intRow As Long, intCol As LongCells.SelectSelection.ClearCon…

redis Ubuntu安装问题

报错1:Package pkg-config is not available, but is referred to by another package /bin/sh: 1: pkg-config: not found(没有安装pkg-config) sudo apt-get install pkg-config /bin/sh: 1: cc: not found(没有安装gcc环境&am…

年过30年程序员,到底要不要考虑搞点副业

一、前言 作为一名年过三十的程序员,我深刻体会到了职场的残酷和不确定性。在这个技术日新月异的时代,我们不仅要在专业领域深耕细作,更要敏锐地捕捉互联网的风口,以确保自己不被时代淘汰。程序员的黄金年龄似乎被限定在35岁之前…

《Milvus Cloud向量数据库指南》——ChatGLM:从GLM-130B到GLM-4

ChatGLM:从GLM-130B到GLM-4的跨越:智谱AI在通用人工智能领域的深度探索与实践 在人工智能的浩瀚星空中,智谱AI如同一颗璀璨的新星,以其独特的技术视角和坚定的创新步伐,在通用人工智能(AGI)的征途上留下了深刻的足迹。技术生态总监贾伟在近期的一次分享中,不仅为我们描…

蓝牙+LoRa+北斗RTK融合定位系统介绍

蓝牙LoRa北斗RTK定位系统是新锐科创自主研发的融合定位系统,该系统利用融合定位技术将当今主流的室内外定位技术有机融合,从而满足不同场景定位需求。 蓝牙LoRa北斗RTK定位系统是一种室内外高精度人员定位管理系统,具有功耗低、部署简单、实时…

【计算机视觉学习之CV2图像操作实战:车牌识别1】

基于Sobel算子的车牌识别 步骤如下 高斯模糊图片灰度化Sobel算子图像二值化闭操作膨胀腐蚀中值滤波查找轮廓判断车牌区域 import cv2 # 读取图片 rawImage cv2.imread("car1.jpg") # 高斯模糊,将图片平滑化,去掉干扰的噪声 image cv2.Gau…

蓄势赋能 数智化转型掌舵人百望云杨正道荣膺“先锋人物”

2024年,在数据与智能的双涡轮驱动下,我们迎来了一个以智能科技为核心的新质生产力大爆发时代。在数智化浪潮的推动下,全球企业正站在转型升级的十字路口。在这个充满变革的时代,企业转型升级的道路充满挑战,但也孕育着…

【OceanBase DBA早下班系列】—— obdiag 收集的 SQL Monitor Report 如何解读

1. 前言 前几天写了一篇博客,告诉大家在遇到慢SQL或者复杂的并行SQL的时候怎么高效的来收集【SQL Monitor Report】,上一篇博客的链接: OceanBase 社区 ;发出去后有不少问我这份报告咋解读。今天再出一篇博客给大家介绍下如何解…

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

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

AI画笔,你的创意伙伴:6款最佳AI绘画工具推荐

在这个无限可能的时代,一个优秀的人工智能绘画软件不仅可以打破传统绘画方法的束缚,而且可以让每个热爱艺术的人都体验到创作的乐趣。那么,什么样的人工智能绘画软件才是优秀的呢?什么样的人工智能绘画软件才能生成超逼真的AI绘画…

(十)联合概率数据互联原理及应用(JPDA)

目录 前言 一、JPDA原理及算法步骤 (一)算法步骤 1.确认矩阵计算 2.确认矩阵拆分 3.互联概率计算 4.状态及协方差更新 二、仿真验证 (一)模型构建 (二)仿真结果 总结 引用文献 前言 本文主要针…

世界上速度最快的超级计算机推导出超级BC8钻石配方

BC8 超级钻石比任何已知材料都要坚硬,但它们很可能只存在于巨型系外行星的内核中。现在,世界上最强的超级计算机"前沿"已经揭开了它们形成的秘密,这一发现可能会导致在地球上生产它们。 钻石不仅是夺人眼球的珠宝,而且在…

致敬万物的解释者:丹尼尔・丹尼特(1942~2024)

2024 年 4 月 19 日,全世界最受欢迎的哲学家之一丹尼尔・丹尼特在缅因州波特兰去世。他被无数人称作是自己的哲学英雄,他的观点像一把利刃,在心智和意识领域无出其右。 巨星陨落,思想长存。让我们一起回顾他的生平,聆…

AGI|如何用Open WebUI和Ollama在本地运行大型语言模型?

在某AI产品发布会上,我们需要演示在个人PC上运行大模型的能力。为了实现这一目标,我们进行了深入的市场调研和技术评估,最终选择了Open WebUI和Ollama作为演示的核心工具。 目录 一、介绍 二、部署 三、代码展示 一、介绍 什么是Ollama …

前端代码混淆加密(使用Terser、WebpackObfuscator)

零、相关技术及版本号 "vue": "2.6.12", "vue/cli-service": "4.4.6", "javascript-obfuscator": "^4.1.1", "terser-webpack-plugin": "^4.2.3", "vue-template-compiler": &quo…

JAVA后端拉取gitee仓库代码项目并将该工程打包成jar包

公司当前有一个系统用于导出项目,而每次导出的项目并不可以直接使用,需要手动从gitee代码仓库中获取一个模板代码然后将他们整合到一起它才是一个完整的项目,所以目前我的任务就是编写一个java程序可以自动地从gitee仓库拉取下来那个模板代码…