15 种高级 RAG 技术 ——从预检索到生成

news2024/11/15 7:05:59

15 种高级 RAG 技术 ——从预检索到生成

检索增强生成(RAG)是一个丰富、快速发展的领域,它为增强由大型语言模型(LLM)驱动的生成式人工智能系统创造了新的机会。在本指南中,WillowTree的数据与人工智能研究团队(DART)分享了15种先进的RAG技术,用于微调您自己的系统,在优化客户的应用程序时,我们信任所有这些技术。

原文链接:15 Advanced RAG Techniques | WillowTree (willowtreeapps.com)

image

内容整理

什么是检索增强生成RAG?

检索增强生成(RAG)是指对大型语言模型输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。大型语言模型(LLM)用海量数据进行训练,使用数十亿个参数为回答问题、翻译语言和完成句子等任务生成原始输出。在 LLM 本就强大的功能基础上,RAG 将其扩展为能访问特定领域或组织的内部知识库,所有这些都无需重新训练模型。这是一种经济高效地改进 LLM 输出的方法,让它在各种情境下都能保持相关性、准确性和实用性。

为什么检索增强生成很重要?

LLM 是一项关键的人工智能(AI)技术,为智能聊天机器人和其他自然语言处理(NLP)应用程序提供支持。目标是通过交叉引用权威知识来源,创建能够在各种环境中回答用户问题的机器人。不幸的是,LLM 技术的本质在 LLM 响应中引入了不可预测性。此外,LLM 训练数据是静态的,并引入了其所掌握知识的截止日期。

LLM 面临的已知挑战包括

  • 在没有答案的情况下提供虚假信息
  • 当用户需要特定的当前响应时,提供过时或通用的信息
  • 从非权威来源创建响应
  • 由于术语混淆,不同的培训来源使用相同的术语来谈论不同的事情,因此会产生不准确的响应

你可以将大型语言模型看作是一个过于热情的新员工,他拒绝随时了解时事,但总是会绝对自信地回答每一个问题。不幸的是,这种态度会对用户的信任产生负面影响,这是你不希望聊天机器人效仿的!

RAG 是解决其中一些挑战的一种方法。它会重定向 LLM,从权威的、预先确定的知识来源中检索相关信息。组织可以更好地控制生成的文本输出,并且用户可以深入了解 LLM 如何生成响应。

本文探讨了 15 种高级 RAG(检索增强生成)技术,旨在提升生成式 AI 系统的输出质量和整体性能稳健性。这些技术涵盖了从预检索到最终文本生成的各个阶段,为 AI 系统的精细化调整提供了丰富的选项

1. 预检索和数据索引技术

提高信息密度: 利用 LLM 对原始数据进行处理、清理和标记,剔除无关信息,提高信息密度,降低 LLM token 使用量和成本,并提升检索准确性。文中以使用 GPT-4 提取网页关键信息为例进行了说明,并强调了信息损失的风险和缓解策略。

应用分层索引检索 利用 LLM 生成文档摘要,创建多层检索系统,先通过摘要筛选相关文档,再进行更精细的检索,提高检索效率

利用假设问题索引****提升检索对称性: 使用 LLM 生成文档对应的假设问题和答案,并将问题作为检索单元,以解决查询与文档之间语义不对称的问题,提高检索准确性。

使用 LLM 对数据索引中的信息进行去重 通过聚类和 LLM 的信息提取能力,将数据索引中的信息去重,减少冗余,优化 LLM 的上下文窗口。

测试和优化分块策略 根据 embedding 模型、内容性质、查询复杂度、LLM 能力、数据量等因素,对分块策略进行 A/B 测试和优化,找到最佳分块大小和重叠率

2. 检索技术

利用 LLM 优化搜索查询 利用 LLM 的理解能力和对搜索引擎规则的掌握,将用户查询转化为更有效的搜索查询,提升检索效率和结果质量。文中分别给出了简单搜索查询和对话式 AI 系统查询优化的示例

利用假设文档嵌入****解决查询-文档不对称问题(HyDE): 利用 LLM 根据用户查询生成假设文档或文档片段,并将其用于语义搜索,解决查询-文档不对称问题,提高检索准确性

实施查询路由****或 RAG 决策器模式: 使用 LLM 将查询路由到适当的数据库,或判断是否需要进行 RAG 检索,以降低成本和提升效率

3. 检索后技术

使用重排序****优化搜索结果: 使用重排序模型优化搜索结果的优先级,将最相关的文档置于最前,提升 LLM 回答的准确性

使用上下文提示压缩****优化搜索结果: 利用 LLM 过滤、重新格式化或压缩检索到的信息,使之更适合 LLM 生成最终回复

使用纠正性 RAG 对检索到的文档进行评分和过滤: 使用训练好的模型对检索结果进行评估,过滤掉不正确或不相关的文档,提升 LLM 回答的准确性

4. 生成技术

优化提示和上下文窗口大小: 对生成提示进行优化,并通过实验确定最佳的上下文窗口大小,提升 LLM 回答的质量

使用思维链****提示消除噪声: 使用思维链提示引导 LLM 进行推理,增强其在存在噪声或无关上下文时的稳健性

使用 Self-RAG 使系统具备自我反思能力: 通过微调,使 LLM 能够在生成过程中输出特殊的反射标记(检索或批判标记),从而评估检索结果的相关性和生成结果的质量,并进行优化

通过微调忽略不相关上下文: 对 LLM 进行微调,使其能够忽略不相关的上下文,提升其在 RAG 任务中的性能

使用自然语言推理使 LLM 对不相关上下文更加稳健: 使用自然语言推理模型过滤掉不相关的上下文,提升 LLM 回答的准确性

其他考虑因素

输入和输出防护: 对 RAG 系统的输入和输出进行防护,防止出现越狱或恶意攻击,尤其是在金融服务和医疗保健等高监管行业

评估 RAG 系统: 建立可扩展的自动化评估方法,以监控 RAG 系统的性能,确保其质量和准确性

幻觉率: 关注 AI 幻觉问题,并采取措施进行检测、测量和缓解

其他潜在改进

  • 微调 embedding 模型
  • 使用知识图谱
  • 使用长上下文 LLM

总而言之,高级 RAG 技术为提升生成式 AI 系统的性能提供了丰富的工具和方法。通过合理地选择和应用这些技术,可以显著提高信息密度、检索准确性和用户回复质量。

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

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

相关文章

工业一体机,为工业自动化提供完美解决方案

近年来,智能制造成为全球制造业转型升级的必然趋势,而工业自动化作为智能制造的关键环节,其重要性日益凸显。在这一趋势下,工业一体机凭借其高度集成、稳定可靠、灵活高效等优势,成为了工业自动化领域中不可或缺的“利…

Mysql的查询指令

整理了一些Mysql的查询语句,希望对大家有帮助,祝大家心想事成万事如意! 基本查询 select 字段 from 表名 where 条件; 排序查询 select 字段 from 表名 order by 排序字段 [asc升序|desc降序] limit 前几行/中间几行&#xff1…

Nature methods | FlowSig--揭示细胞间流动网络新方法!有具体代码可实操!

–https://doi.org/10.1038/s41592-024-02380-w Inferring pattern-driving intercellular flows from single-cell and spatial transcriptomics FlowSig是刚刚(8月26日)发表在nature methods上的新文章,该方法系统性地推断出由细胞间通信…

Ubuntu系统使用Docker部署中文版trilium并实现远程编辑笔记

文章目录 前言1. 安装docker与docker-compose2. 启动容器运行镜像3. 本地访问测试4.安装内网穿透5. 创建公网地址6. 创建固定公网地址 前言 今天和大家分享一款在G站获得了26K的强大的开源在线协作笔记软件,Trilium Notes的中文版如何在Linux环境使用docker本地部署…

GPT微调和嵌入哪个好,大模型微调 和嵌入有什么区别?微调(fine-tuning),嵌入(embedding)的用法!

GPT擅长回答问题,但是只能回答它以前被训练过的问题,如果是没有训练过的数据,比如一些私有数据或者最新的数据该怎么办呢? 这种情况下通常有两种办法,一种是微调(fine-tuning),一种…

四大神器:2024免费数据恢复软件推荐!

在这个数字化的时代,数据丢失可能是我们最不想面对的事情之一。但不用担心,今天我就来给大家介绍几款免费又好用的数据恢复软件! 第一款:福昕数据恢复 链接:www.pdf365.cn/foxit-restore/ 这是一款由福昕公司推出的…

Vue3+Ts封装input组件时遇到的问题

使用input事件监听输入框变化时,如果当前使用的输入法是中文,他也会触发input事件,正常来说,中文没有输入完毕是不用触发事件的。 控制台打印时发现: 那么我们应该怎么去规避这件事呢? 其实input还有几个事…

从永远到永远-日语学习-て形用法及变形规律

て形用法及变形规律 0.前置知识1.常见用法1.请求某人做某事 「~てください」2.几个连续发生的动作 ~て、~て、~て3.两个动作先后发生「てから」4. 表示许可 「てもいいです」5.表示禁止 「~てはいけません」6.「&#…

亚马逊新品如何获取评论,为店铺提高产品排名权重流量订单?测评

大多数消费者都会购买具有最佳评论和评级的产品。亚马逊评论是影响消费者决策的关键因素,卖家对评论的重视程度也非常之高,亚马逊卖家最常见的挑战之一是获得产品评论。 1.亚马逊Vine计划: 亚马逊Vine计划是亚马逊为品牌卖家提供的专属评论计…

猫咪浮毛如何清理?希喂、安德迈、范罗士宠物空气净化器功能实测

拥有一只属于自己的小猫咪,是一件非常幸福的事。美中不足的就是它掉毛,疯狂的掉毛,家里到处都是毛发散落的痕迹。和它亲近的时候,也会沾满一身毛,清理起来非常麻烦。特别是随着季节的转换,猫咪换毛季的到来…

使用IntelliJ IDEA将本地项目推送到远程Git

1,安装Git 打开 下载地址,下载Git安装包。根据引导程序,完成安装。 2,IntelliJ IDEA配置Git 打开IntelliJ IDEA,依次点击File>>Settings…>>Git,然后配置自己的Git的路径,然后点…

系统架构分析

一、速通一图流 二、系统架构功能、作用分析 1. Furion:框架核心层 功能:这是 Furion 框架的核心层,通常包含框架本身的基本功能和配置。这一层应该是比较稳定的,不应该包含业务逻辑,而是提供项目其他部分需要依赖的…

yolo7 自定义数据训练

数据打标labelimg 预定义标签 格式name label 数据集定义文件errimg.yaml train: /home/kean/works/yolov7/dataset/train.txt val: /home/kean/works/yolov7/dataset/val.txt # number of classes nc: 1 # class names names: ["error_dialog"] 数据定义文件train.…

【JS】使用MessageChannel实现深度克隆

前言 通常使用简便快捷的JSON 序列化与反序列化实现深克隆,也可以递归实现或者直接使用lodash。 但 JSON 序列化与反序列化 无法处理如下的循环引用: 实现 MessageChannel 内部使用了浏览器内置的结构化克隆算法,该算法可以在不同的浏览器上…

学习之在window上安装MySQL server 并连接到Navicat

一、下载 下载地址:https://www.mysql.com/ 二、安装 1、双击软件安装2、点击yes

【解析几何笔记】9. 向量的内积运算

9. 向量的内积运算 定义&#xff1a;有向量 α , β \pmb{\alpha},\pmb{\beta} α,β&#xff0c; α ⋅ β ∣ α ∣ ∣ β ∣ ⋅ cos ⁡ < α , β > \pmb{\alpha}\cdot\pmb{\beta}|\pmb{\alpha}||\pmb{\beta}|\cdot\cos<\pmb{\alpha},\pmb{\beta}> α⋅β∣α…

Commons Lang库中,StringUtils.isBlank()和StringUtils.isEmpty()区别

在Apache Commons Lang库中&#xff0c;StringUtils.isBlank()和StringUtils.isEmpty()方法都是用来判断字符串是否为空或者空白的。它们的主要区别在于处理空格的方式上。 StringUtils.isEmpty(String str): 这个方法会返回true当字符串为null或者长度为0时。也就是说&#xf…

自动化测试和性能测试面试题精选(含答案)

前言 今天分享软件测试工程师常见的面试题&#xff0c;主要来源于个人面试遇到的、网络搜集&#xff08;完善&#xff09;、工作日常讨论等&#xff0c;分为以下十个部分&#xff0c;供大家参考。如有错误的地方&#xff0c;欢迎指正。有更多的面试题或面试中遇到的坑&#xf…

javacv-ffmpeg ProcessBuilder实现对图片的旋转

javacv-ffmpeg ProcessBuilder实现对图片的旋转&#xff0c;最近需要处理很多图片&#xff0c;量有点多&#xff0c;所以不能一个一个去编辑旋转图片&#xff0c;所以写一个工具类&#xff0c;实现对图片的旋转 maven配置文件&#xff0c;加上对ffmpeg的依赖&#xff0c;由于f…

读论文《SHOW-O》8.22发布的贼强的大模型多模态理解和生成解决方案

全名&#xff1a;Show-o: One Single Transformer to Unify Multimodal Understanding and Generation 8月22发表的&#xff0c;一个名为Show-o的统一变换器&#xff08;transformer&#xff09; 论文地址&#xff1a;2408.12528v2 (arxiv.org) 项目地址&#xff1a;GitHub …