Elasticsearch:检索增强生成 (Retrieval Augmented Generation -RAG)

作者:JOE MCELROY

什么是检索增强生成 (RAG) 以及该技术如何通过提供相关源知识作为上下文来帮助提高 LLMs 生成的响应的质量。

生成式人工智能最近取得了巨大的成功和令人兴奋的成果,其模型可以生成流畅的文本、逼真的图像,甚至视频。 就语言而言,经过大量数据训练的大型语言模型能够理解上下文并对问题生成相关响应。

生成式人工智能 (Generative AI) 的挑战

然而,重要的是要了解这些模型并不完美。 这些模型拥有的知识是它们在训练过程中学到的参数知识,是整个训练数据集的浓缩表示。

缺乏领域知识

这些模型应该能够对训练数据中有关常识的问题产生良好的响应。 但他们无法可靠地回答有关训练数据集中不存在的事实的问题。 如果模型很好地对齐自己已经知道的知识,它将拒绝回答此类域外问题。 然而,它也有可能只是编造答案(也称为幻觉)。 例如,通用模型通常会笼统地理解每个公司都有休假政策,但它不会了解我的特定公司的休假政策。

冻结的参数知识

LLMs 的知识是冻结的,这意味着它对培训后发生的事件一无所知。 这意味着它将无法可靠地回答有关当前事件的问题。 模型通常经过训练来验证他们对此类问题给出的答案。

幻觉

有人建议 LLMs 在其参数中捕获类似于一般本体论的知识图表示的东西:表示有关实体的事实和实体之间的关系。 训练数据中频繁出现的常见事实在知识图中得到了很好的体现。 然而,小生态范围的知识鲜少在训练数据中有很多例子,它只能被近似地体现,知识仅被近似地表示。 因此, LLMs 对这些事实的理解很混乱。 校准过程至关重要,模型根据其已知信息进行校准。 错误经常发生在已知信息和未知信息之间的灰色地带,凸显了区分相关细节的挑战。

在上面的例子中,关于与 Borcherds 同年的菲尔兹奖获得者的问题是此类小范围知识的一个典型例子。 在这种情况下,我们在对话中植入了有关其他数学家的信息,而 ChatGPT 似乎对要关注哪些信息感到困惑。 例如,它错过了蒂姆·高尔斯(Tim Gowers)并加入了弗拉基米尔·沃耶夫斯基(Vladimir Voevodsky)(2002年获胜)。

训练费用昂贵

虽然 LLMs 在特定领域内的数据训练时能够对问题生成相关答案,但它们的训练成本很高,并且需要大量数据和计算来开发。 同样,微调模型需要专业知识和时间,并且在此过程中存在 “忘记” 其他重要功能的风险。

RAG如何帮助解决这个问题?

检索增强生成(RAG)通过将生成模型的参数知识与来自数据库等信息检索系统的外部源知识作为基础,帮助解决这个问题。 这些源知识作为附加上下文传递给模型,并帮助模型生成对问题更相关的响应。

RAG 是如何运作的?

RAG 管道通常具有三个主要组件:

  • Data:包含回答问题的相关信息的数据集合(例如文档、网页)。
  • Retrieval:可以从数据中检索相关源知识的检索策略。
  • Generation:利用相关的来源知识,在 LLM 的帮助下生成响应。

RAG 管道流程

当直接与模型交互时,LLM 会收到一个问题,并根据其参数知识生成响应。 RAG 在管道中添加了一个额外的步骤,使用检索来查找相关数据,为 LLM 构建额外的背景。

在下面的示例中,我们使用密集向量检索策略从数据中检索相关源知识。 然后,该源知识将作为上下文传递给 LLM 以生成响应。

RAG 不必使用密集向量检索,它可以使用任何能够从数据中检索相关源知识的检索策略。 它可以是简单的关键字搜索,甚至可以是 Google 网络搜索。

我们将在以后的文章中介绍其他检索策略。

检索源知识

检索相关源知识是有效回答问题的关键。

使用生成式 AI 进行检索的最常见方法是使用密集向量的语义搜索。 语义搜索是一种需要嵌入模型将自然语言输入转换为表示源知识的密集向量的技术。 我们依靠这些密集向量来表示源知识,因为它们能够捕获文本的语义。 这很重要,因为它允许我们将源知识的语义与问题进行比较,以确定源知识是否与问题相关。

给定一个问题及其嵌入,我们可以找到最相关的源知识。

使用密集向量进行语义搜索并不是唯一的检索选项,但它是当今最流行的方法之一。 我们将在以后的文章中介绍其他方法。

RAG 的优点

训练结束后,LLMs 将被冻结。 模型的参数知识是固定的,无法更新。 然而,当我们向 RAG 管道添加数据和检索时,我们可以随着底层数据源的变化更新源知识,而无需重新训练模型。

以源头知识为基础

模型的响应也可以限制为仅使用上下文中提供的源知识,这有助于限制幻觉。 这种方法还提供了使用较小的、特定于任务的 LLMs 而不是大型的通用模型的选择。 这使得能够优先使用源知识来回答问题,而不是在培训期间获得的一般知识。

在回复中引用来源

此外,RAG 还可以提供用于回答问题的源知识的清晰可追溯性。 这对于合规性和监管原因非常重要,也有助于发现 LLM 的幻觉。 这称为源跟踪。

RAG 实践

一旦我们检索到相关的源知识,我们就可以用它来生成对问题的回答。 为此,我们需要:

构建上下文

包含回答问题的相关信息的源知识(例如文档、网页)的集合。 这为模型生成响应提供了上下文。

提示模板

针对特定任务(回答问题、总结文本)用自然语言编写的模板。 用作 LLM 的输入。

问题

与任务相关的问题。

一旦我们有了这三个组成部分,我们就可以使用 LLM 来生成对问题的回答。 在下面的示例中,我们将提示模板与用户的问题以及检索到的相关段落结合起来。 提示模板将相关的源知识段落构建到上下文中。

此示例还包括源追踪,其中在响应中引用了源知识段落。

Given the following extracted parts of a long document and a question, create an answer with references ("SOURCES").
If you don't know the answer, just say that you don't know. Don't try to make up an answer.
ALWAYS return a "SOURCES" part in your answer.

Question: "Which state/country's law governs the interpretation of the contract?"

=========
Content: This Agreement is governed by English law and the parties submit to the exclusive jurisdiction of the English courts in relation to any dispute (contractual or non-contractual) concerning this Agreement save that either party may apply to any court for an injunction or other relief to protect its Intellectual Property Rights.
Reference: 28-pl
Content: No Waiver. Failure or delay in exercising any right or remedy under this Agreement shall not constitute a waiver of such (or any other) right or remedy.\n\n11.7 Severability. The invalidity, illegality or unenforceability of any term (or part of a term) of this Agreement shall not affect the continuation in force of the remainder of the term (if any) and this Agreement.\n\n11.8 No Agency. Except as expressly stated otherwise, nothing in this Agreement shall create an agency, partnership or joint venture of any kind between the parties.\n\n11.9 No Third-Party Beneficiaries.
Reference: 30-pl
Content: (b) if Google believes, in good faith, that the Distributor has violated or caused Google to violate any Anti-Bribery Laws (as defined in Clause 8.5) or that such a violation is reasonably likely to occur,
Reference: 4-pl
=========

RAG 面临的挑战

有效的检索是有效回答问题的关键。 良好的检索可以提供与上下文相关的多种源知识。 然而,这更多的是一门艺术而不是一门科学,需要大量的实验才能正确,并且高度依赖于用例。

精确密集向量

大型文档很难表示为单个密集向量,因为它们包含多种语义。 为了有效检索,我们需要将文档分解为更小的文本块,这些文本块可以准确地表示为单个密集向量。

通用文本的常见方法是按段落进行分块并将每个段落表示为密集向量。 根据你的用例,你可能希望使用 titles、headings 甚至句子将文档分解为块。

大上下文(context)

使用 LLMs 时,我们需要注意传递给模型的上下文的大小。

LLMs 对其一次可以处理的 token 数量有限制。 例如,GPT-3.5-turbo 的限制为 4096 个 token。

其次,随着上下文的增加,生成的响应质量可能会下降,从而增加产生幻觉的风险。

更大的上下文也需要更多的时间来处理,最重要的是,它们会增加 LLM 的成本。

这又回到了检索的艺术。 我们需要在分块大小和嵌入的准确性之间找到适当的平衡。

结论

检索增强生成是一种强大的技术,可以通过提供相关源知识作为上下文来帮助提高 LLM 生成的响应的质量。 但 RAG 并不是灵丹妙药。 它需要大量的实验和调整才能正确,并且还高度依赖于你的用例。

在下一篇文章中,我们将介绍如何使用 LangChain(一种用于 LLM 的流行框架)构建 RAG 管道。

原文:Retrieval Augmented Generation (RAG) — Elastic Search Labs

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【移远QuecPython】EC800M物联网开发板的硬件TIM定时器精准延时

【移远QuecPython】EC800M物联网开发板的硬件TIM定时器精准延时 文章目录 导入库定时器初始化延时函数定时中断回调调用附录:列表的赋值类型和py打包列表赋值BUG复现代码改进优化总结 py打包 首先 这个定时器是硬件底层级别的 优先级最高 如果调用 会导致GNSS等线程…

理疗养生服务预约小程序要如何做

不少人面对身体症状疼痛,往往不会选择去医院,而是去理疗养生馆,选择艾灸、拔罐、中药贴敷等方式治疗改善或减轻疼痛。随着人们对中医信赖度增强,理疗养生市场增长迅速。 而在增长的同时,我们也注意到理疗养生馆经营痛…

Java版B/S架构云his医院信息管理系统源码(springboot框架)

一、技术框架 ♦ 前端:AngularNginx ♦ 后台:JavaSpring,SpringBoot,SpringMVC,SpringSecurity,MyBatisPlus,等 ♦ 数据库:MySQL MyCat ♦ 缓存:RedisJ2Cache ♦ 消息队…

工作汇报怎么写?建议收藏

整体思路与模块: 背景/事件 成果展示 推动落实的方法论 收获与成长 存在的不足及改进措施 下一步工作安排 支持(选) 一、背景/事件 对于区分“功能性总结”和“应付性总结”,在背景/事件方面有一个关键点 是报告是否具有…

Linux 系统目录结构

Linux 系统目录结构 登录系统后,在当前命令窗口下输入命令: ls / 你会看到如下图所示: 以下是对这些目录的解释: /bin: bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 /boot: 这里存放…

第二章 (导数与微分)

导数简介 路程与时间关系函数 就是 速度与时间关系函数 的 原函数。 路程与时间关系函数 求导 (或者叫导函数) —————求导—————> 就是 vt关系的导数 求导得到》导函数 导函数积分 得到 原函数 你一开始速度为0,然后速度不断…

Perl的LWP::UserAgent库爬虫程序怎么写

Perl的LWP::UserAgent库是一个用于发送HTTP请求的Perl模块。它可以用于编写Web爬虫、测试Web应用程序、自动化Web操作等。以下是一个简单的使用LWP::UserAgent库发送HTTP GET请求的Perl脚本的例子: #!/usr/bin/perluse strict; use warnings; use LWP::UserAgent;# …

【移远QuecPython】EC800M物联网开发板的音乐播放(PWM蜂鸣器播放生日快乐歌,Sound模块播放音频)

【移远QuecPython】EC800M物联网开发板的音乐播放(PWM蜂鸣器播放生日快乐歌,Sound模块播放音频) 效果: 【移远QuecPython】EC800M开发板外置功放重金属和PWM音调(BUG调试记录) 文章目录 PWM蜂鸣器播放播放…

Java 通过POI快速导入带图片的excel并且图片不会丢失

## 通过POI快速导入带图片的excel并且图片不会丢失导入带图片的excel,这里也是研究了很久,在之前的博客中也有说明过,在项目使用过程中,发现很多时候导入响应很慢,而且每次导入图片都会丢失几张,所以又花了点时间研究修改了下,具体如下: 这边在导入时,通过自定义注解…

基于rosbridge 与业务系统长链接网关架构设计

技术背景: 业务系统:管理机器人,机器人任务执行等等 机器人使用是ros1 ,业务系统与机器人交互使用rosbridge, rosbridge 就是websocket 链接,所以就有了如下的一些架构思想 架构图 客户端 客户端主要分为app端、pc端…

批量整理相同名称文件,高效归类至指定文件夹!

你是否曾经遇到过成百上千的文件名重复,让人无从下手的情况?现在,我们为你带来了一款全新的文件管理工具,它可以让你轻松地将相同名称的文件批量整理归类到指定文件夹中,让你的文件管理更加高效、有序! 第…

嵌入式软件开发要注意这七种错误!

软件行业的工作经验和你从事这个行业的工作年限直接相关。 这句话在某种程度上是对的,但是你从事这项工作的年限,并不一定代表你获得了相同年限的工作经验,正如一句话所说:“我们以为我们是工作了十年,其实却只有一年…

周报5_YMK

周报5 论文:FLASHDECODING: FASTER LARGE LANGUAGE MODEL INFERENCE ON GPUS https://arxiv.org/pdf/2311.01282.pdf 在斯坦福大学团队的 Tri Dao 等人提出了 FlashAttention 和 FlashDecoding 后,相关的工作又被很快提出,上周来自无问芯穹…

赛宁网安获评“铸网-2023”江西省实网应急演练优秀支撑单位

近日,南京赛宁信息技术有限公司(赛宁网安)获得了江西省工业和信息化厅颁发的“优秀支撑单位”荣誉。 该荣誉表彰是对赛宁网安在“铸网-2023”江西省工业领域网络安全实网应急演练中提供全程技术支撑能力的认可。 本次实网应急演练聚焦工业企…

计算图片中两个任意形状多边形相交部分的大小

一张图片中两个任意多边形相交的面积计算方法。本文参考https://blog.csdn.net/PanYHHH/article/details/110940428;加了一个简单的示例,也对代码做了一点清淅化。原博客中还有其他链接,是C代码,没有看原理,但以下代码…

网络的概念与定义

一.网络的概念与定义 1.1 网络的概念 具有独立功能的计算机通过通信介质连接起来就形成了网络。为了满足人们的各种需求,比如访问网页,在线游戏,在线视频等,会形成比如文本,图片,视频等都是信息的不同呈现方…

java 旋转方阵

public static void main(String[] args) {Scanner scanner new Scanner(System.in);// N阶方阵int n scanner.nextInt();// 构建方阵List<List<Integer>> matrix new ArrayList<>();for (int i 0; i < n; i) {List<Integer> row new ArrayLis…

如何在群晖虚拟机快速部署线上web网站并实现公网访问

文章目录 前言1. 安装网页运行环境1.1 安装php1.2 安装webstation 2. 下载网页源码文件2.1 访问网站地址并下载压缩包2.2 解压并上传至群辉NAS 3. 配置webstation3.1 配置网页服务3.2 配置网络门户 4. 局域网访问静态网页配置成功5. 使用cpolar发布静态网页&#xff0c;实现公网…

运输服务预约小程序的效果如何

市场中运输服务的需求非常高&#xff0c;比如常见的汽车出境、进出口代理、仓储服务、集装箱运输、展会运输等&#xff0c;由于相关从业者多&#xff0c;所以在运输服务总是在市场中有着一席之地。 以前的运输企业拓客转化方式大多是同地区的单子&#xff0c;很难多渠道拓展&a…

gurobi最新下载安装教程 2023.11

文章目录 gurobi下载gurobi安装gurobi lincese获取添加系统环境变量 gurobi和python gurobi下载 https://www.gurobi.com/ 点击下载中心 download center 可以直接选择 Gurobi Optimizer下载 gurobi安装 gurobi可以通过python进行调用&#xff0c;但是需要先获得gurobi的li…