当前位置: 首页 > news >正文

14-57 剑和诗人31 - LLM/SLM 中的高级 RAG

​​​

14-57 剑和诗人31 - LLM/SLM 中的高级 RAG

首先确定几个缩写的意思

SLM 小模型

LLM 大模型

检索增强生成 (RAG) 已成为一种增强语言模型能力的强大技术。通过检索和调整外部知识,RAG 可让模型生成更准确、更相关、更全面的文本。

RAG 架构主要有三种类型:简单型、模块化和高级 RAG:

Naive RAG 采用 GPT-3 这样的单片模型,并简单地根据检索到的证据段落对其进行条件化,将其附加到输入上下文中。这种方法很简单,但存在效率和一致性问题。

模块化 RAG 将系统分解为显式检索器、重新排序器和生成器模块。这提供了更大的灵活性和专业化。

高级 RAG 通过高阶检索器、跨编码器重排器和证据处理架构等创新进一步增强了每个模块。它提高了准确性和可扩展性。

我将重点分析高级 RAG 系统中的创新并评估适应性。让我分享用于大型语言模型 (LLM) 和小型语言模型 (SLM) 的高级 RAG 技术。我首先解释 RAG 框架的基础知识 — 如何结合检索和生成模块来利用外部知识。接下来,我将深入探讨 RAG 系统三个主要组件的最新创新:检索器模块、重新排序器模块和生成器模块。

对于每项创新,我都会重点介绍适用于具有数十亿个参数的大型 Transformer 模型以及更小、更高效的模型的适应性。我会分析准确度和效率之间的权衡,并讨论哪些技术最适合哪些模型。我还研究了针对不同 RAG 组件使用不同模型大小的混合方法。

通过本次分享,您将深入了解使用 LLM 和 SLM 开发高性能可扩展 RAG 系统的先进技术和注意事项。内容旨在综合最近的研究成果,并为构建真实 RAG 应用程序的工程师和研究人员提供技术深度和实践指导。

RAG 框架基础知识

从高层次来看,RAG 系统包含三个关键模块:

  1. 检索器——从知识源中检索与上下文相关的文本段落
  2. 重新排序器(可选)——对检索到的段落进行重新评分和排序
  3. 生成器——将上下文与检索到的段落相结合以生成输出文本

14-57 剑和诗人31 - LLM/SLM 中的高级 RAG

总体流程如下:

检索器根据上下文从知识源中识别相关段落。重新排序器可选择对这些段落进行评分和重新排序。最后,生成器根据上下文和检索到的段落生成包含外部知识的输出文本。

RAG 系统利用外部文本知识来增强语言生成。知识来源可以包括维基百科文章、新闻档案、领域特定语料库或与生成任务相关的任何文本内容集合。

通过根据检索到的证据对生成进行调节,模型可以减少幻觉,更准确地回答问题,并生成更具信息性和相关性的文本。输出会通过外部知识得到增强。

接下来,我们将深入研究每个 RAG 模块内的创新,分析准确性和效率之间的权衡,并重点介绍针对 LLM 以及更高效的 SLM 定制的技术。

猎犬模型的创新

检索模块负责根据上下文识别相关的外部知识。关键目标是高召回率——即使并非所有检索都会在最终输出中使用,也要检索出可能相关的段落。

常见的检索器架构包括双编码器和稀疏模型。双编码器检索器分别对上下文和段落进行编码,并根据向量相似性对段落相关性进行评分。稀疏检索器根据词汇匹配信号直接估计相关性概率。

最近的创新提高了 LLM 和 SLM 的检索准确性和效率:

知识增强型双编码器标准双编码器检索器独立编码查询和段落,而不对它们的相互作用进行建模。这限制了性能,因为相关性信号仅取决于向量相似性。

知识增强型双编码器在编码过程中应用上下文和段落之间的交叉注意力来明确地模拟交互。这可以改善相关性匹配,尤其是对于长查询或复杂查询。

对于 LLM,对每段摘录应用自注意力池和可选的自注意力可以进一步改善结果。然而,注意力仍然分别应用于查询和段落。

另外,ColBERT 模型在编码过程中交错查询和段落标记,因此注意力可以直接学习交互。性能显著提高,但内存和计算需求也大幅增加。

对于更高效的 SLM,多编码器等方法在平衡准确性和效率的同时显示出强大的效果。查询使用双编码器进行编码。段落使用交叉编码器进行编码,该编码器以双编码器输出的查询摘要向量为条件。这种轻量级设计减少了计算量,同时保留了强大的相关性匹配能力。

词权重优化 在稀疏检索中,相关性匹配取决于词汇词权重方案。ANCE 和 ANS 等高级优化器会根据反馈数据自动学习增加重要词的权重并降低不相关词的权重。

对于 LLM,词汇信号的密集近似,然后进行降维和调优,也可以提高性能。但是,存储大小和延迟会增加。极端方法编码、压缩、标记化 (ECT) 最适合大规模模型,但需要进行大量基础设施优化。

对于 SLM,直接基于 bandit 反馈优化术语权重效果很好。通过在调整之前从简单但快速的启发式函数初始化权重,可以进一步提高收益。在检索过程中使用近似最近邻搜索也可以降低计算成本。

语义词匹配的集成双编码器和稀疏模型主要依赖于词汇词匹配信号。通过额外建模查询和段落之间的语义相关性可以提高性能。

Condenser 等方法将密集嵌入相似性搜索有效地集成到稀疏检索管道中。基于知识增强型双编码器的嵌入增强还可以改善长格式查询的语义相关性建模。

对于 LLM,最大内积搜索可以有效地通过语义嵌入向量对段落进行索引,同时保持亚线性查询效率。然而,编码器大小、索引延迟和索引大小对操作化提出了挑战。

对于 SLM,轻量级嵌入增强效果很好。使用单独的、更快的编码器进行检索而不是生成可以提高整体工作流程效率。基于量化的近似搜索还可以平衡准确性和性能。

重新排序创新

虽然许多 RAG 系统仅使用单个检索器就能取得很好的效果,但带有重新排序器的级联架构可以灵活地在准确度、延迟和成本之间进行权衡。重新排序器会重新评分初始检索结果,并专注于对最终生成最有用的高精度段落。

交叉编码器 标准双编码器检索器缺乏深度建模查询-段落交互的能力。像 ColBERT 这样的交叉编码器明确编码上下文与每个段落的串联,以学习更丰富的相关性模式。

大型 Transformer LM 重排器表现出强劲的增益,但需要对每个查询-段落对进行独立编码。多编码器通过使用查询条件向量在段落间共享计算来提高效率。

对于 LLM,完全交叉编码器可以最大程度地提高准确率,但计算成本较高。多编码器效率改进有所帮助,但仍然需要大型模型编码标记化编码设计在索引期间仅对段落进行一次编码,然后根据预编译索引对编码查询进行评分。

为了提高 SLM 的效率,一种成功的模式是使用大型语言模型作为初始检索器,然后使用模型大小小 3-10 倍的 Poly-Encoder 重新排序器。这提供了良好的准确率-效率平衡。

弱监督扩展

跨编码器式穷举搜索对计算的要求很高。弱监督排名损失允许高效地训练模型,仅通过一次前向传递即可对查询段落兼容性进行评分。

从规模上看,基于语境化术语替换的自监督预训练有助于进一步引导相关性模型。预训练模型还可以通过仅提供几个特定领域的示例来快速适应新领域。

对于 LLM,预训练带来的收益有限,因为监督微调已经得到高度优化。收益来自架构调整,例如使用 softmax 温度来校准不确定性。

对于 SLM,预训练可以显著提高准确率和样本效率。它还可以使用更高效的架构,专门用于评分而非生成。

专门的重排序架构

除了调整模型大小和预训练之外,专门的架构还可以提高重新排序的效率。

例如,预测器-估计器模型使用小型神经网络来预测相关性标签。预测结果被输入到轻量级逻辑回归估计器中,以获得经过良好校准的分数。通过将完全交叉注意力限制在预测器上,整体计算量大大减少,同时保留了较高的相关性估计值。

对于 LLM,极端方法是使用生成器 LLM 本身作为排序器。准确率最大化,但计算成本极高,完全抵消了级联架构的效率提升。

对于 SLM,专门的高效排序器架构效果很好。关键是避免使用标准 LLM Transformer,而采用轻量级、无 dropout 且具有专门的自注意力池的模型。这些模型在准确率和高吞吐量之间实现了最佳平衡。

发电机模型的创新

生成器模块吸收上下文以及检索到的相关段落,并生成增强了外部知识的输出文本。

融合方法决定如何组合和呈现检索到的证据,而调节技术允许将这些融合的输入集成到生成过程中。架构创新也继续提高集成的有效性和效率。

证据融合

融合时,决策包括:

  1. 保留多少段落
  2. 每段提取多少内容
  3. 是否串联段落或单独呈现
  4. 如何对不同段落进行加权或排序

对于大语言模型来说,准确性重点在于融合方法。所有检索到的内容都会被纳入,以最大限度地发挥潜在证据的作用。完整的段落会带来虚假事实的风险,因此截断是有帮助的,尽管它会丢弃可能有用的上下文。

对于 SLM 来说,效率更为重要。严格提炼为几句话可确保简明、相关的条件。排名和权重可进一步提高质量。关键事实应清晰地汇编,而不会丢失重要的检索知识。

空调设计

在生成过程中,检索到的证据也需要适当的上下文整合。基本方法是在编码之前将证据段落与输入上下文连接起来。

然而,证据可能会掩盖原始背景或带来冗余信息。高级解决方案可提高整合的连贯性。

对于 LLM,工作记忆架构很有前景。外部知识与上下文分开编码,然后通过基于注意力的记忆读写进行解码。这避免了在证据编码期间覆盖原始上下文状态。

对于 SLM,轻量级实体链接可提供补充,而不会产生覆盖风险。将上下文实体链接到相关段落可实现以实体为中心的增强,而不会破坏上下文表示。

效率优化架构

除了融合和调节之外,整体 RAG 生成器架构也会影响效率。权衡准确度与吞吐量和成本。

编码-操作方法通过在索引期间仅对证据进行一次编码,然后在生成请求期间操作表示来优化效率。然而,操作函数通常很简单,限制了表达能力。

对于 LLM,架构优化更注重准确性而非效率。多个预训练 Transformer 链提供了强大的结果,但需要将生成分解为跨多个模型实例的复杂管道。

对于 SLM 来说,效率至关重要。具有查询键分解和条件查询嵌入的共享规范化架构可在生成请求期间实现证据的单次编码。权重也可以专门用于每个操作,而不会导致参数爆炸。

这些架构创新最大限度地提高了速度和成本效率,同时保留了通过索引证据增强的令人惊讶的强大生成能力。

具有异构模型的混合 RAG

到目前为止,我仅讨论了针对 LLM 或 SLM 量身定制的创新。然而,现代 RAG 解决方案实际上集成了混合架构中利用大型和小型模型的混合搭配组件。

LLM 可最大程度提高关键阶段的准确性,然后将压缩后的输出传递到更高效的 SLM 中进行后续操作。这实现了质量和效率的优化融合。

例如,初始检索可能会利用 LLM 实现最大召回率。最相关的结果由中型模型重新排序,然后最顶部的段落被输入到专业的 SLM 中进行最终集成。某些 SLM 还专门处理特定内容形式,例如长文档、表格和列表,以最大限度地提高集成一致性。

这种混合方法平衡了准确性和吞吐量。它还通过维护较大的模型(主要用于离线索引)来优化成本,然后利用高效的模型进行高吞吐量计算。针对不同任务的专业化可以避免不必要的抽象和过度参数化。

最终结果是高性能 RAG 解决方案,可提供针对实际生产用例定制的强大准确性和可扩展性 – LLM 质量和 SLM 效率的最佳结合。

关键要点

让我们回顾一下 LLM 和 SLM 的高级 RAG 技术的关键课程:

  • RAG 通过外部知识检索补充语言模型,以提高生成的准确性、相关性和信息覆盖率
  • 检索器创新增强了长格式查询和关键字查询的词汇、语义和上下文相关性匹配信号
  • 重排器架构专注于使用结合预训练、模型大小和网络架构的策略进行精度相关性预测
  • 生成器使用截断、蒸馏、加权、工作记忆和实体基础技术顺利地融合积分外部证据
  • 混合 RAG 系统融合了可最大限度提高质量的 LLM 和可实现可扩展性和吞吐量的高效 SLM

我讨论了检索、排名和生成模块中的各种技术——重点强调了网络规模和架构的适应性。

通过结合查询理解、证据选择、上下文集成和输出生成方面的创新,现代 RAG 提供了非常强大的结果,释放了为下一代应用程序提供动力所需的外部知识。

随着工业研究和学术进步的不断快速发展。我希望我的分析能够为先进技术的整合提供有益的指导原则,以继续在高级大语言模型和更高效的法律硕士领域进行创新。

14-57 剑和诗人31 - LLM/SLM 中的高级 RAG

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Hospital Management Startup 1.0 SQL 注入漏洞(CVE-2022-23366)
  • Mongodb索引的删除
  • 源码编译安装 LAMP
  • 部署前端项目
  • 高效前端开发:解密pnpm的存储与链接
  • 第5章-组合序列类型
  • 二叉树的顺序存储
  • linux 进程堆栈分析
  • 精通C#编程需要学习哪些常用框架?
  • [安洵杯 2019]easy_serialize_php
  • 小型简易GIT服务器搭建和使用
  • 基于Memcached实现对象缓存:存储对象数据,如购物车内容,用户配置
  • 深入理解Spring Boot中的数据库优化
  • 音视频封装demo:将h264数据和aac数据封装(mux)成TS文件(纯手工,不依赖第三方开源库)
  • DDD架构
  • [笔记] php常见简单功能及函数
  • 4个实用的微服务测试策略
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • ES6系列(二)变量的解构赋值
  • github指令
  • in typeof instanceof ===这些运算符有什么作用
  • JavaScript设计模式之工厂模式
  • Linux Process Manage
  • mysql常用命令汇总
  • python 学习笔记 - Queue Pipes,进程间通讯
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 分布式熔断降级平台aegis
  • 官方解决所有 npm 全局安装权限问题
  • 如何使用 JavaScript 解析 URL
  • 使用putty远程连接linux
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • (二)JAVA使用POI操作excel
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (接口封装)
  • (离散数学)逻辑连接词
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (原)记一次CentOS7 磁盘空间大小异常的解决过程
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (自用)gtest单元测试
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET Core 2.1路线图
  • .NET CORE Aws S3 使用
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 给NuGet包添加Readme
  • .NET 设计一套高性能的弱事件机制
  • .Net6使用WebSocket与前端进行通信
  • .Net程序帮助文档制作
  • .NET设计模式(8):适配器模式(Adapter Pattern)