14-37 剑和诗人11 -设计高性能 RAG 系统

​​​​​​

14-37 剑和诗人11 -设计高性能 RAG 系统

设计高性能检索增强生成 (RAG) 系统,其结构涵盖5 个主要支柱

索引:将外部数据嵌入到向量表示中

构建 RAG 系统的第一大支柱是索引——将外部数据源转换为可以高效存储和检索的格式。这通常涉及将文本嵌入到密集的矢量表示中。

嵌入模型嵌入模型的选择至关重要,因为它决定了向量表示的质量。流行的选项包括:

  • 句子转换器:像 all-MiniLM-L6-v2 这样的模型提供了根据自然语言推理数据调整的高质量句子嵌入。
  • 语言模型嵌入:使用 GPT 等大型语言模型的表示可以很好地发挥作用,尤其是在对相关数据进行微调的情况下。
  • 专门嵌入:对于生物医学等某些领域,使用对该数据进行预训练的模型的嵌入(例如 BioSentVec)可以提高性能。

嵌入维度是另一个关键决定因素——更高的维度可以编码更多信息,但需要更多的存储和计算。768 维是平衡质量和效率的常见选择。

文本预处理嵌入之前如何准备原始文本也会影响索引质量:

  • 句子分割:将文本分成句子可以使检索更精确,但可能会错过重要的内容。
  • 滑动窗口:使用重叠的文本块可以捕获更多的上下文,但会增加存储需求。
  • 语义分块:BERTA 等先进技术可以动态识别语义连贯的块。

元数据索引
除了文本嵌入之外,索引元数据(如文档标题、URL、作者等)还可以实现更丰富的检索和综合功能。

段落去重 删除重复/近似重复的段落可防止存储冗余数据并提高检索质量。方法包括:

  • MinHash 重复数据删除:在嵌入空间中查找近似最近邻居的有效算法。
  • 聚类:将段落分组为簇,并每个簇存储一个代表。

增量索引对于频繁更新的数据源,启用新数据/更改数据的增量索引至关重要:

  • 数据版本控制:随着时间的推移维护多个索引版本。
  • 增量索引:仅索引版本之间的变化以节省计算。

多模态索引一些 RAG 系统通过使用来自 CLIP、VILT 和 HuBERT 等模型的多模态嵌入来索引图像、音频、视频等,超越了文本的范畴。

14-37 剑和诗人11 -设计高性能 RAG 系统

存储:保留索引嵌入

一旦数据被索引到嵌入中,下一步就是将它们保存在高效的数据库中以供检索。

数据库选择 数据库的选择对于可扩展性和性能至关重要。热门选项包括:

  • 矢量数据库:专为密集嵌入的相似性搜索而构建,例如 FAISS、Weaviate、Pinecone。
  • 键值存储:与 Redis 类似,适用于具有直接键->向量映射的小规模用例。
  • 通用数据库:使用矢量扩展来扩展传统 SQL/NoSQL 数据库,例如 PostgreSQL。

最佳选择取决于嵌入维度、数据集大小、数据模式、扩展需求和操作要求等因素。

存储布局数据库中嵌入和元数据的组织方式会影响检索延迟:

  • 线性/平面存储:简单,但是随着数据集的扩展,延迟会受到影响。
  • 集群/分区存储:将相关的嵌入和元数据组合在一起以提高效率。
  • 缓存/分层存储:将热数据/最近访问的数据保存在更快的存储层中。

近似最近邻随着数据集的增长,精确最近邻搜索在计算上变得不可行。近似方法以准确性换取速度:

  • HNSW:分层可导航的小世界图可提供数量级的加速。
  • LSH/RPFT:基于局部敏感哈希的算法在规模上非常高效。
  • 量化:将嵌入压缩为紧凑代码可以实现压缩和更快的距离计算。

分片和分布
对于非常大的数据集,数据库分片和跨机器分布式查询等技术对于可扩展性至关重要。

矢量数据库操作部署和维护矢量数据库涉及其他操作问题:

  • 数据复制:用于高可用性和跨副本并行查询。
  • 索引重建:定期重建索引可以提高搜索性能。
  • 负载处理:使用负载平衡器、读取副本和智能查询路由。

检索:查找相关片段

当索引数据保存在数据库中时,下一个关键组件就是检索引擎,用于查找给定查询的相关信息。

检索范式不同的检索范式可满足不同的需求:

  • 密集检索:使用向量相似性搜索在嵌入空间中查找最近邻居。最适合开放式查询。
  • 稀疏检索:经典信息检索中的传统关键字/短语匹配。适用于特定查询。
  • 混合:在检索模型中结合密集和稀疏信号可以提高质量。

检索模型除了简单的最近邻查找之外,检索还可以表述为一个学习模型:

  • 双编码器模型:与 SBERT 类似,将查询和数据库条目映射到同一个嵌入空间。
  • 跨编码器模型:基于 BERT 的模型,直接对查询-条目对进行评分。
  • 多向量模型:将查询和条目编码为多个向量以改进建模。

增加模型的表现力可以捕获更复杂的相关信号。

检索融合多阶段级联检索不是将检索视为单一阶段,而是可以提高质量:

  • 粗略检索:初始快速检索以过滤掉大多数不相关的条目。
  • 重新排序:将过滤后的集合通过更昂贵的重新排序器来优化排名。
  • 迭代检索:根据初始检索结果重新制定查询。

查询重构自动重构或扩展用户查询可以发现原始查询遗漏的相关信息:

  • 查询扩展:使用来自词嵌入、实体链接等的相关术语丰富查询。
  • 综合重构:使用语言模型生成合理的查询重构。

选择性检索 无需针对每个查询从整个数据库进行检索,数据集过滤、审核和阻止等技术可以有选择地缩小不同查询的可搜索数据范围。

结果修剪后处理步骤,消除噪声或冗余结果:

  • 重复数据删除:消除重复/近似重复的结果。
  • 最大边际相关性:确保最高结果涵盖不同的信息。
  • 一致性建模:对一组结果的一致性进行评分。

索引定制通常可以通过定制针对某些域/任务的数据索引方式来提高检索质量:

  • 重新嵌入:对任务/域数据进行微调嵌入可提高其质量。
  • 嵌入融合:将多种嵌入类型组合成单一表示。
  • 段落分解:将段落分解为与查询粒度相匹配的子单元。

综合:生成用户查询的答案

检索到相关信息后,下一步是使用生成模型将其综合成用户查询的最终答案。

条件生成
综合的核心涉及根据检索到的信息调节语言模型以生成答案:

  • 提示方法:使用提示向 LM 提供指令和背景。
  • 结果整合:将检索结果作为附加上下文或条件传递。
  • 模型选择:选择合适的开放域、特定领域或指令调整的 LM。

结果重写 与从头生成结果不同,通过编辑、优化或组合来重写检索到的结果可以提高质量:

  • 提取答案:智能地将检索到的段落的部分重新排列为连贯的答案。
  • 融合模型:可以融合并顺利组合来自多个来源的信息的模型。
  • 编辑/完善:在迭代过程中,完善和编辑中间输出。

多模式生成对于多模式查询,模型需要跨不同模式综合信息:

  • 图像字幕:结合图像描述检索到的文本的见解。
  • 视觉问答:回答有关引用图像/场景的问题。
  • 多模态翻译:以与输入不同的模态生成输出。

生成结构化输出在许多应用程序中,生成结构化数据而不仅仅是自由文本非常重要:

  • 实体/关系提取:将信息提炼为知识图谱和表格格式。
  • 代码生成:生成映射到检索到的数据的可执行代码片段。
  • 数学推理:运用逻辑、符号推理得出定量解决方案。

可控生成技术来控制和引导生成过程对于可靠、稳健的合成至关重要:

  • 输出质量:使用外部鉴别器过滤质量、真实性和安全性。
  • 风格/语调控制:使输出适应特定的语调、写作风格或人物角色。
  • 真实幻觉:明确地将事实与模型幻觉区分开来。

迭代生成与单次前向传递不同,迭代改进输出可提供更严格的控制:

  • 查询细化:根据中间输出细化和重新制定查询。
  • 自我修改:通过多次传递,自我纠正和完善生成的文本。
  • 人机循环:结合人类的指导和反馈来引导一代人。

评估:量化系统性能

虽然上述支柱涵盖了构建 RAG 系统,但通过严格的评估来量化其性能对于实际部署至关重要。

人工评估:人类评判员根据以下标准评估输出:

  • 查询相关性:输出是否准确地回答了查询?
  • 信息质量:所述信息是否真实可靠?
  • 连贯性和流畅性:文本的连贯性和自然性如何?
  • 任务完成度:对于实际用例,它完成预期任务的程度如何?

手动评估可以提供可靠的质量信号,但扩展成本较高。

自动评估可扩展的自动指标可作为有效代理:

  • 基于参考:BLEU、ROUGE 等分数与参考输出重叠。
  • 无需参考:像 BERTScore 这样的更现代的指标不需要参考。
  • 事实性:明确的模型和管道来检测幻觉信息。
  • 有针对性的评估:针对毒性、偏见、隐私等属性的专门评估。

测试集和基准 策划涵盖查询 / 域多样性的高质量测试集至关重要:

  • 查询日志:来自用户日志的真实查询最具代表性。
  • 综合创建:程序化生成高质量测试用例。
  • 对抗性查询:旨在揭露系统盲点的查询。

综合基准​​聚合多个数据集,最好定期发布/迭代。

在线评估在实时服务环境中,对延迟、错误率、吞吐量等实时指标的检测至关重要。

人机协作团队评估对于人机交互用例,研究 RAG 系统与人类用户之间的相互作用非常重要。

成本/复杂性分析了解内存、存储、延迟等方面的计算成本有助于量化投资回报率。

14-37 剑和诗人11 -设计高性能 RAG 系统

构建高性能 RAG 系统时的高级设计模式:

专家混合不同的组件可以专门针对不同的查询类型/领域:

  • 索引专家:针对各种数据模式/来源定制索引。
  • 检索专家:检索器专注于开放式与封闭式书籍、密集式与稀疏式输入等。
  • 生成器专家:用于查询回答、总结、翻译等任务的特定生成器。

根据查询特征动态地将查询路由到专门的组件。

转移和融合跨模型、来源和模式转移知识:

  • 知识转移:将信息提炼为更密集、更紧凑的表示形式。
  • 跨模式转换:跨文本、视觉、音频模式等映射概念。
  • 表示融合:结合向量、符号、多模态表示。

增量学习快速使整个 RAG 系统适应不断变化的数据、任务和用户反馈:

  • 索引更新:随着数据的变化有效地更新嵌入。
  • 模型细化:通过持续学习的方法来细化新数据分布的模型。
  • 系统范围调整:以端到端的方式更新完整的 RAG 管道。

推理与基础更强的推理和多跳推理能力:

  • 神经模块网络:为不同的推理步骤组成可重复使用的神经模块。
  • 符号推理:将深度学习与符号逻辑和约束推理相结合。
  • 接地:明确将生成的输出接地至已验证的、可归因的信息。

扩展因素跨数据、模型和硬件构建高度可扩展的 RAG 系统:

  • 极限检索:将网络规模数据索引为密集表示。
  • 十亿级模型:高效服务、批处理和缓存万亿参数模型。
  • 加速器设计:针对嵌入/生成工作负载优化的定制硬件加速器。

社会考虑解决大规模通用 RAG 系统的道德影响:

  • 隐私和信息危害:小心处理和过滤敏感信息。
  • 利益相关者影响分析:分析对个人、机构和社会的影响。
  • 公平与偏见缓解:识别和减轻有害偏见和毒性的技术。
  • 沟通和文档:清晰地传达系统功能和局限性。

最后,构建高性能 RAG 系统需要仔细组合索引、存储、检索、合成和评估等多个相互关联的组件。每个支柱中的选择以及高级系统设计模式都会显著影响整个系统的质量、可扩展性和可靠性。随着 RAG 系统变得更加强大和广泛部署,解决社会影响将变得越来越重要。牢记这些支柱和模式为设计强大的、现实世界的 RAG 系统奠定了坚实的基础。

  • 28
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拉达曼迪斯II

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值