在当今竞争激烈的商业环境中,业务流程(尤其是文档处理工作流程)的自动化对于寻求提高效率和减少人工错误的公司来说变得至关重要。 传统方法往往难以跟上任务的数量和复杂性,而人工主导的流程速度缓慢、容易出错,并且可能并不总是能提供一致的结果。
OpenAI GPT-4 等大型语言模型 (LLM) 在处理涉及类人文本生成的复杂任务方面取得了重大进展。 然而,他们经常面临特定领域数据的挑战。 LLM通常接受广泛(公开)数据的培训,虽然他们可以提供一般性答案,但在涉及专业知识时,他们的回答可能不准确。 它们还可能产生看似合理但本质上是幻觉的输出——听起来似乎合理但虚假的信息。 此外,公司通常在文档中隐藏大量特定领域的数据,但缺乏有效利用这些信息的工具。
NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包
在人工智能领域,RAG 方法作为一种强大的技术脱颖而出,它将信息检索的精确性与文本生成的复杂性相结合。 这种协同作用带来了一系列独特的功能,使 RAG 驱动的应用程序能够提供准确、上下文相关的动态响应。 让我们探索这些功能并深入研究它们在供应链、金融、保险和零售领域的各种业务用例中的实际应用。
这就是检索增强生成 (RAG) 的用武之地。RAG 提供了令人兴奋的突破,能够实时集成特定领域的数据,而无需不断地重新训练或微调模型。 它是通用LLM的一种更实惠、更安全、更可解释的替代方案,大大降低了产生幻觉的可能性。
在这篇博文中,我们将探讨 RAG 在各个领域和场景中的应用,并强调其优势。 我们还将深入研究 RAG 的体系结构,将其分解为构建块,并提供有关如何构建自动化文档处理工作流程的指导。
在本小节中,我们将强调 RAG 对供应链格局的变革性影响,并探讨几个业务用例,如图 1 所示。我们将讨论每个用例并阐明 RAG 解决的挑战。
图 1:RAG 如何应对关键供应链挑战的概述
RAG 的事实验证和合规验证功能使其成为法律和合规领域的宝贵资产。 在处理法律文件或监管要求时,RAG 可以交叉引用来自可信来源的信息,有助于创建准确的法律文件。 其事实核查能力可确保所提供的信息符合法律标准,最大限度地减少错误风险并提高整体合规性。
使用案例:
一家跨国公司向全球出口电子产品。 通过使用 RAG,该公司可以获取每个目的地的最新贸易法规。 在发货之前,RAG 会根据这些规定对其进行验证并自动生成必要的文件。 任何不合规行为都会触发实时警报。 这种自动化减少了错误,加快了运输流程,降低了违规处罚的成本,并确保了良好的全球声誉。
在 B2B 销售流程中,响应建议请求 (RFP) 或信息请求 (RFI) 可能非常耗时。 利用 RAG,公司可以通过检索相关产品详细信息、定价和过去的响应来自动填充这些表单。 RAG 确保生成响应的一致性、准确性和速度,简化销售流程,减少人工工作,并通过及时满足客户需求来提高中标机会。
使用案例:
Grid Dynamics 智能文档处理入门套件演示了如何使用 LLM 和 RAG 根据一般公司信息和产品规格生成对 RFP 的响应。 它提供了这些技术在实际应用中的威力和多功能性的具体示例。
对于最佳采购决策,准确的建议是关键。 使用 RAG,组织可以分析过去的采购模式、供应商绩效和市场趋势,以自动生成量身定制的采购建议。 RAG 的见解可确保更好的供应商选择、节省成本和降低风险,指导企业进行战略采购并培养更牢固的供应商合作伙伴关系。
使用案例:
大型制造商可以利用 RAG 来优化其原材料采购策略。 通过处理多年的采购数据,RAG 可以识别哪些供应商始终满足质量标准、按时交货并提供有竞争力的价格。 这使得制造商能够优先考虑与高绩效供应商的合作伙伴关系,并有可能协商更好的条款。 这种由 RAG 提供支持的主动方法可确保制造商保持优质原材料的稳定供应,减少生产停机时间并培育更高效的供应链。
在当今复杂的供应链中,利用多方面的数据至关重要。 RAG 深入研究大量内部文档,包括实时库存日志、过去的采购订单、供应商信件和发货历史记录。 RAG 从这些不同的来源中自动生成复杂的供应链报告。 这些报告重点关注重要的绩效指标,揭示潜在的瓶颈,并提出需要改进的领域。 通过 RAG 的自动化报告,企业可以获得丰富的见解,促进敏捷决策、提高运营效率并增强供应链的稳健性。
使用案例:
希望优化假日季节供应链的全球零售商可以利用 RAG 处理过去季节的大量数据集,包括销售数据、库存水平和供应商交货时间。 随后,RAG 编制了一份详细报告,不仅强调了该零售商前几年的表现,还预测了下一季的潜在挑战。 有了这份报告,零售商可以提前调整策略,确保运营顺利,更有效地满足客户需求,实现利润最大化。
在本部分中,我们将深入研究 RAG 在零售业中的可能应用,展示各种业务场景,如图 2 所示。我们将详细说明每个场景,重点介绍 RAG 在零售业克服的具体挑战。
图 2:RAG 如何应对关键零售挑战的概述
利用 RAG,零售商可以让聊天机器人从庞大的数据库中近乎实时地获取特定的产品详细信息,从而提高客户查询的响应能力和准确性。 这不仅简化了客户支持,还确保传递准确的产品信息,从而提高客户满意度和购物体验。
使用案例:考虑一家在线时装零售商,列出了数千种产品。 顾客可能会询问某件衣服的面料细节。 由 RAG 驱动的聊天机器人可以立即从产品列表中提取特定的面料成分和护理说明,在几秒钟内为客户提供详细信息。 这种即时而准确的响应可以增强客户的信心,鼓励他们完成购买并返回零售商以满足未来的购物需求,延长浏览会话并提高转化率,所有这些都是通过 RAG 的数据合成和实时响应功能实现的。
通过深入研究评论、评论和评级,RAG 综合了客户情绪的整体视图。 它会自动生成详细的报告,突出显示普遍的偏好和可辨别的痛点。 有了这些触手可及的洞察力,零售商可以对产品、服务或策略做出明智的调整,确保为客户提供更加协调和增强的购物体验。
使用案例:想象一下一家在线商店最近推出了新产品线。 通过利用 RAG,商店可以汇总来自各种渠道的反馈,解读情绪,并确定是否存在反复出现的问题或对特定产品功能的赞扬。 然后,商店可以解决问题或利用积极的一面,从而提高顾客满意度并可能增加销售额。
在零售营销中,了解活动效果极其重要。 RAG 通过深入研究过去的营销活动数据,将其与客户反馈和观察到的销售趋势交织在一起,提供了强大的解决方案。 通过剖析这些信息,RAG 详细洞察哪些策略真正能引起共鸣,哪些渠道可以推动最大程度的参与。 此外,它还确定了过去活动中的潜在差距或需要改进的领域。 具备这些洞察力的零售商可以更好地完善未来的营销工作,确保吸引受众的注意力并培养持久的客户关系。
使用案例:考虑一个零售品牌在过去一年中通过各种渠道(从社交媒体促销到电子邮件通讯)开展了多次营销活动。 通过部署 RAG,品牌可以自动生成全面的分析,捕获客户参与度、点击率和销售转化率等指标。 这种数据驱动的洞察力使品牌能够确定最有利可图的营销策略,调整预算分配,并定制未来的营销活动以最大限度地提高投资回报率。
RAG 利用客户数据(包括过去的购买和浏览历史记录)来了解个人偏好。 它动态生成符合用户兴趣的定制产品建议。 当用户实时交互时,推荐也会相应调整。 结果? 增强的用户参与度、延长的浏览会话和更高的转化率,所有这些都是通过 RAG 的数据合成和近乎实时的响应功能来实现的。
使用案例:想象一下,一家在线护肤品零售商提供从保湿霜到防晒霜等各种产品。 一位之前购买过干性皮肤保湿霜的用户几个月后再次登录。 利用 RAG 的功能,该网站立即推荐一款兼容的保湿精华液或冬季护理护肤套装。 这种量身定制的推荐不仅满足了用户的特定需求,还鼓励他们探索更多产品,从而增强他们的整体购物体验并增加零售商的销售机会。
在本节中,我们将描述如何在金融领域利用 RAG,详细说明各种业务场景,如图 3 所示。对于每种场景,我们将阐明 RAG 在金融领域解决的具体问题 。
图 3:RAG 如何应对关键财务挑战的概述
在瞬息万变的金融世界中,客户经常寻求有关投资策略、市场预测和复杂金融产品的见解。 为了满足这一点,金融机构可以使用 RAG 来自动化响应机制,从综合金融数据库中提取准确的信息。 这确保客户获得基于最新数据和专家分析的量身定制的建议。 因此,该流程不仅通过提供快速、准确的答案来提升客户体验,而且还优化了咨询功能,使其更加高效和数据驱动。
使用案例:以一家提供投资咨询服务的大型银行为例。 一位希望实现投资组合多元化的高净值客户使用银行的聊天界面来查询新兴市场的潜在投资机会。 借助 RAG 支持的聊天机器人,该系统可以立即梳理大量全球经济报告、新兴市场基金过去的业绩指标以及当前的地缘政治趋势。 然后,它为客户提供潜在投资途径的详细分析,强调风险和回报,所有这些都是近乎实时的。 这种即时且富有洞察力的反馈不仅使银行成为值得信赖的顾问,而且还培养了客户忠诚度,因为他们感到自己得到了高精度和快速响应的服务。
保险索赔通常涉及筛选大量文件和数据。 在处理索赔时,RAG 可用于快速检索相关保单详细信息、索赔历史记录和监管指南。 它可以生成初步评估,根据历史模式标记潜在的欺诈活动,或自动填充包含相关详细信息的表格,从而简化索赔审批流程并确保一致性和准确性。
使用案例:考虑一家汽车保险公司每天收到数千份索赔,尤其是在风暴或洪水等自然灾害之后。 手动处理这些索赔既耗时又容易出错。 通过实施RAG,一旦投保人提交索赔,系统可以立即获取保单详细信息,将索赔与之前的索赔进行比较,甚至根据现有保单指南和历史索赔数据立即提供初步评估。 这种快速响应不仅加快了索赔处理速度,而且还显着增强了客户体验,尤其是在事故发生后的紧张情况下。
金融世界充满了复杂的数据,从个人交易到广泛的经济趋势。 穿越这个迷宫并提出简洁的见解对于利益相关者的理解和明智的决策极其重要。 RAG 作为一种变革性工具介入实现这一目的。 通过访问和分析大量数据集,RAG 可以将复杂的财务叙述提炼成连贯、易于理解的报告。 有了这些清晰的总结,利益相关者就可以更好地做出战略决策。 通过这种自动化,财务报告不仅变得高效,而且始终准确和及时。
使用案例:考虑一家在全球拥有众多子公司的跨国公司。 每个月,公司都必须整合和审查所有这些实体的财务数据,以提交给董事会。 手动整理这些数据并起草报告可能是一项乏味且容易出错的任务。 然而,借助 RAG,金融数据在中央系统中更新后,它会从各种来源获取相关数据点,将其与过去的表现进行比较,并纳入宏观经济指标。 结果是自动生成的综合财务报告,突出显示趋势、潜在问题和增长领域。 这使董事会能够一目了然地了解公司的财务状况并制定相应的策略,同时确保报告的合规性和准确性。
投资组合管理是一种平衡风险和回报的微妙舞蹈,受到许多因素的影响。 RAG 成为该领域的重要工具。 通过深入研究过去的交易历史、衡量当前的市场动态并了解个人投资者的风险偏好,RAG 可以制定优化的投资组合策略。 这些策略植根于全面的数据分析,为投资者提供量身定制的建议或必要的调整。 因此,投资组合变得更加符合市场机会和个人财务目标。 借助 RAG 的功能,新手和经验丰富的投资者都可以在财富最大化方面获得数据驱动的优势。
使用案例:想象一下,一位 40 多岁的投资者致力于多元化和最大回报,以实现提前退休的目标。 随着时间的推移,他们建立了一个包含各种股票、债券和其他资产的投资组合。 然而,由于全球市场的不可预测性,他们不确定要采取的最佳策略。 使用 RAG 提供支持的平台,他们的财务顾问可以快速评估过去的投资决策、当前的市场动态以及投资者的风险状况。 然后,RAG 提供重新平衡的投资组合建议,就保留哪些资产、新投资的潜在行业以及理想的债券-股票组合提供建议。 这种及时、量身定制的建议不仅简化了决策过程,而且还为投资组合的未来增长做好了定位,与投资者提前退休的愿望紧密结合。
现在我们已经探索了各种行业应用,是时候看看 RAG 的实际应用了。 本案例研究深入探讨了如何使用 RAG 创建一个应用程序,该应用程序旨在自动执行复杂的文档处理,主要侧重于撰写和填写 RFP 的响应。
图 4:使用 RAG 的自动化 RFP 处理工作流程
第1步:上传RFP和补充文件
如图 4 所示,工作流程从用户上传 RFP 文件和补充文档开始,其中可能包括产品详细信息、公司信息等。 这些文档的格式各不相同,从 PDF 和 Excel 工作表到 Word 文档、纯文本文件等。
第 2 步:预览 RFP 并提出查询
上传后,用户可以预览 RFP 并提出与内容相关的查询。 问题的范围可以从寻求 RFP 的摘要到更细致的询问,例如了解 RFP 的主要问题。
第 3 步:接收 RAG 的建议
该应用程序利用 RAG 的强大功能,提供富有洞察力的建议,以提高赢得 RFP 投标的可能性。
第 4 步:激活自动答案生成
预览和初始查询后,用户可以选择激活自动答案生成功能。 该功能可识别 RFP 中概述的所有问题和要求,并制定相应的答复。
第五步:答案预览和修改
生成后,用户将看到问题-答案对的预览,从而使他们能够自主选择和修改他们认为不满意的任何答案。
第 6 步:答案细化阶段
这导致了答案细化阶段。 在这里,用户可以提供关于他们如何设想答案的提示或指令,并且带有 LLM 的集成 RAG 将相应地重新生成响应。 如果对改进感到满意,用户可以保存他们的选择并进入后续阶段。
值得注意的是,虽然工作流程提供了完全自动化的效率,但用户保留了评估和调整中间结果、通过文本提示提供反馈以及根据需要重复和重新访问任何阶段的灵活性。
第 7 步:导出最终的 RFP
此工作流程的最终步骤是导出最终的 RFP,其中包含定制的答案,准备提交给 RFP 发行人。
该案例研究举例说明了 RAG 如何重振传统 RFP 流程,消除手动填写表格、响应不一致和不准确等低效率问题,同时大幅缩短响应时间。 有关此应用程序的更多详细信息可以在此处找到。
毫无疑问,你现在已经意识到 RAG 的价值和潜力,并且可能想知道如何在你的组织中开始使用它。 RAG 的主要优势之一是其模块化。 其基础构建块可以以各种配置进行组装,使企业能够根据其特定需求制定定制解决方案。 在深入研究各个构建块之前,我们先了解如何将这些组件紧密集成以形成有价值的 RAG 流程和用例。
在接下来的部分中,我们将深入研究 RAG 的架构及其构建块,深入了解每个构建块的功能以及如何优化它们以获得最佳结果。
了解 RAG 架构是充分利用其优势和潜力的关键。 该过程本质上由两个主要组件组成:检索器和生成器,它们共同形成了无缝的信息处理流程。 这个过程如下图所示:
图 5:RAG 流程的高级示意图
检索器(Retriever)的作用是从数据存储中获取相关文档以响应查询。 检索器可以使用不同的技术进行检索,最显着的是稀疏检索和密集检索。
稀疏检索传统上用于信息检索,涉及 TF-IDF 或 Okapi BM25 等技术来创建文档的高维稀疏向量表示。 然而,这种方法通常需要查询和文档之间的精确单词匹配,限制了其处理同义词和释义的能力。
另一方面,密集检索将查询和文档转换为密集的低维向量表示。 这些向量表示通常使用 BERT、RoBERTa、ELECTRA 等 Transformer 模型或其他类似模型创建,捕获查询和文档的语义,从而可以更细致地理解语言并更准确地检索相关信息。
一旦检索器获取了相关文档,生成器(Generator)就开始发挥作用。 生成器通常是 GPT、Bard、PaLM2、Claude 或 Hugging Face 的开源 LLM 等模型,它接受查询和检索到的文档,并生成全面的响应。
我们之前讨论的基本 RAG 流程可以被细化并编排成一个全面的自动化工作流程,最终形成一个整体业务解决方案,如图 6 所示:
图 6:将 RAG 流程编排为业务自动化解决方案
这个精心安排的过程可以组合各种 RAG 操作:
为了将这些操作无缝地融入自动化解决方案中,我们需要一个具有以下组件的编排器:
在本小节中,我们将编译 RAG 流程的所有步骤和构建块,如图 7 所示:
图 7:RAG 工艺流程示意图
在本节中,我们将深入研究在 RAG 流程中实现每个构建块的最佳实践,提供额外的阐述以确保更全面的理解。
文本数据是LLM的原材料,可以有多种形式,包括非结构化纯文本文件 (.txt)、PDF (.pdf) 或 Microsoft Word(.doc、.docx)等丰富文档、以数据为中心的格式,例如 如逗号分隔值 (.csv) 或 JavaScript 对象表示法 (.json)、超文本标记语言 (.html、.htm) 中的 Web 内容、Markdown 中的文档 (.md),甚至是用不同语言编写的编程代码 (. py、.js、.java、.cpp 等)等等。 准备和加载这些不同的源以供法学硕士使用的过程通常涉及文本提取、解析、清理、格式化和转换为纯文本等任务。
在协助这一过程的工具中,LangChain脱颖而出。 这个流行的框架在LLM应用程序开发领域得到了广泛的认可。 它的与众不同之处在于其处理 80 多种不同类型文档的令人印象深刻的能力,使其成为极其通用的数据加载工具。 LangChain的数据加载器非常全面,包括Transform Loaders,用于将不同的文档格式转换为LLM可以轻松处理的统一格式。 此外,它还支持公共数据集加载器(可提供对流行且广泛使用的数据集的访问)以及专有数据集或服务加载器(可与私有(通常是公司特定的)数据源或 API 集成。
一旦文档成功加载、解析并转换为文本,文档分割过程就开始了。 此阶段的核心活动包括将这些文本分割成可管理的块,该过程也称为文本分割或分块。 在处理大量文档时,这一点变得至关重要。 考虑到许多 LLM 施加的令牌限制(例如 GPT-3 的大约 2048 个令牌的限制),并考虑到文档的潜在大小,文本分割变得必不可少。 所选择的文本分割方法主要取决于数据的独特性质和要求。
图 8:固定大小文本分割的示例,导致句子作为一个整体阅读时所携带的丰富上下文含义丢失。 在查尔斯·狄更斯的《两个城市的故事》的著名开场白中,狄更斯巧妙地建立的自然流动和对比被打乱了。 例如,如果没有第二部分中的“时代”,第一部分中的“It was the best of”就失去了上下文。同样,如果没有第二部分中的“age of smartness, it was”,第四部分中的“age ofwise, it was”就不完整。 从第 5 块开始
即使将这些文档划分为更小、可管理的部分的过程看起来很简单,但这个过程充满了复杂性,可能会严重影响后续步骤。 一种幼稚的方法是使用固定的块大小,但如果我们这样做,我们最终可能会在一个块中得到一个句子的一部分,在另一个块中得到另一个句子的一部分,如图 8 所示。当我们进行问答时,我们就不会' 任一块中都没有正确的信息,因为它是分开的。
因此,在将文档划分为块时考虑语义至关重要。 大多数文档分割算法都按照块大小和重叠的原则运行。 下面的图 9 是描述这一原理的简化图。 块大小可以通过字符数、字数或标记数来衡量,是指每个段的长度。 重叠允许两个相邻块之间共享文本的一部分,就像滑动窗口一样操作。 这种策略促进了连续性,并允许一段上下文出现在一个块的末尾和下一个块的开头,从而确保语义上下文的保存。
图 9:块之间的重叠确保了块之间的语义上下文不会丢失
具有重叠的固定大小分块是一种简单的方法,由于其简单性和计算效率而经常受到青睐。 除了固定大小的分块之外,还有更复杂的“内容感知”分块技术:
在决定块大小时,如果常见的分块方法不适合你的用例,一些提示可以指导你选择最佳的块大小:
总之,没有一种万能的文档拆分解决方案,适用于一种用例的方法可能不适用于另一种用例。 本节应有助于直观地了解如何针对特定应用程序进行文档分块。
在文档分割过程之后,文本块会转换为向量表示,可以轻松比较语义相似性。 这种“嵌入”以类似的块在向量空间中聚集在一起的方式对每个块进行编码。
图 10:文本块到向量表示的转换
向量嵌入构成了现代机器学习 (ML) 模型的一个组成部分。 它们涉及将数据从复杂的非结构化形式(例如文本或图像)映射到数学空间中的点(通常是较低维的)。 这个数学空间或向量空间可以实现高效的计算,而且至关重要的是,这个空间中的空间关系可以捕获原始数据的有意义的特征。 例如,在文本数据的情况下,嵌入捕获语义信息。 传达相似含义的文本,即使措辞不同,也会映射到嵌入空间中的接近点。
举例来说,“猫追老鼠”和“猫追啮齿动物”这两个句子可能有不同的表面形式,但它们的语义内容却非常相似。 训练有素的文本嵌入模型会将这些句子映射到嵌入空间中的邻近点。
图 11:句子的语义接近度
文本嵌入的可视化可以提供对其工作原理的直观了解。 在嵌入空间的二维或三维表示中,相似的单词或句子聚集在一起,表明它们的语义接近度。 例如,“狗”、“猫”、“宠物”的嵌入可能比“汽车”的嵌入更接近,如图 12 所示。
图 12:相似词分组在向量空间中
生成这些嵌入涉及复杂的机器学习模型。 最初,Word2Vec 和 GloVe 等模型通过学习捕获许多有用语义关系的词级嵌入取得了长足的进步。 这些模型本质上是孤立地处理单词,从大型文本语料库中的共现统计数据中学习。
目前最先进的模型已经转向基于 Transformer 的模型,如 BERT、RoBERTa、ELECTRA、T5、GPT 及其变体,这些模型可生成上下文感知嵌入。 与以前的模型不同,这些转换器在生成单词或句子的嵌入时会考虑整个句子上下文。 这种上下文感知可以更丰富地捕获语义信息和解决歧义。
例如,“我坐在河岸上”和“我把钱存入银行”中的“银行”一词具有不同的含义,这可以通过基于变压器的模型中的不同嵌入来捕获。 这种基于 Transformer 的模型是 NLP(包括 RAG)最新进展的核心。 在 RAG 中,基于 Transformer 的模型用于从大量文档中检索相关信息(“检索”部分),并使用它来生成详细的响应(“生成”部分)。 Transformer 模型生成的高质量嵌入对于此过程至关重要,既可以检索语义相关的文档,也可以生成连贯且适合上下文的响应。
将文档分割成语义上有意义的块并随后转换为向量空间后,所得嵌入将存储在向量存储中。 矢量存储是独特的搜索数据库,旨在实现矢量搜索并处理存储和矢量管理的某些方面。 本质上,向量存储是一个允许直接查找相似向量的数据库。 RAG 模型的高效执行需要有效的向量存储或索引来容纳转换后的文档块及其关联的 ID。向量存储的选择取决于许多变量,例如数据规模和计算资源。 一些值得注意的矢量存储库是:
通过选择正确的文本嵌入技术和向量存储,可以建立一个高效且有效的系统来索引文档块。 这样的系统可以快速检索与任何查询最相关的块,这是 RAG 中至关重要的一步。
在下一节中,我们将探讨管理传入查询并从索引中检索最相关块的过程。
检索过程是任何信息检索系统的组成部分,例如用于文档搜索或问答的系统。 检索过程在收到查询时开始,并使用与文档索引相同的嵌入模型将其转换为向量表示。 这会产生用户问题的语义上有意义的表示,随后可以将其与存储在索引(也称为向量存储)中的文档的块向量进行比较。
检索的主要目标是返回与接收到的查询相对应的相关文档块。 相关性的具体定义取决于所使用的检索器的类型。 检索器不需要存储文档; 其唯一目的是检索相关文档块的 ID,从而通过识别可能包含相关信息的块来帮助缩小搜索空间。
图 13:相关文档块的检索
检索器可以采用不同类型的搜索机制。 例如,“相似性搜索”根据余弦相似性识别与查询相似的文档。 另一种搜索类型是最大边际相关性 (MMR),如果向量存储支持它,则非常有用。 这种搜索方法确保检索到的文档不仅与查询相关,而且具有多样性,从而消除了冗余并增强了检索结果的多样性。 相比之下,“相似性搜索”机制仅考虑语义相似性。
RAG还利用相似性分数阈值检索方法。 该方法设置相似度分数阈值,并且仅返回分数超过该阈值的文档。 在搜索相似文档期间,通常使用“k”参数指定要检索的前“k”个文档。
还有另一种检索类型,称为自我查询或LLM辅助检索器。 当处理的问题不仅涉及我们想要在语义上查找的内容,而且还涉及一些用于过滤的元数据时,这种类型的检索变得特别有用。 LLM可以有效地将查询拆分为搜索词和过滤词。 大多数矢量存储都可以促进元数据过滤器,以帮助根据特定元数据过滤记录。 从本质上讲,LLM辅助检索将预训练语言模型的强大功能与传统检索方法相结合,提高了文档检索的准确性和相关性。
一种更重要的检索方法包括压缩,其目的是减少索引文档或嵌入的大小,从而提高存储效率和检索速度。 此过程涉及压缩LLM检查所有文档并提取与最终LLM最相关的文档。 虽然这种技术需要进行更多的LLM调用,但它也有助于将最终答案集中在最关键的方面。 这是一个需要考虑的必要权衡。 在处理大型文档集合时,检索中的压缩尤其重要。 压缩方法的选择取决于多种因素,包括具体的检索系统、文档集合的大小、可用的存储资源以及存储效率和检索速度之间的首选平衡。
图 14:使用 Compression LLM 提取最相关的块
还值得注意的是,存在其他不涉及向量数据库的检索方法,而是使用更传统的 NLP 技术,例如支持向量机 (SVM) 和词频-逆文档频率 (TF-IDF)。 然而,这些方法并不常用于 RAG。
在最后阶段,识别为相关的文档块与用户查询一起使用,为 LLM 生成上下文和提示。 该提示(图 15)本质上是一个精心构建的问题或陈述,指导LLM生成既相关又富有洞察力的回答。
图 15:包含相关上下文文档和问题的提示示例
默认情况下,我们将所有块集中到单个 LLM 调用中的同一上下文窗口中。 在浪链中,这种方法被称为“Stuff”法,是最简单的问答形式。 它遵循一种简单的方法,处理提示,并根据 LLM 的理解立即返回答案。 “Stuff”方法不涉及任何中间步骤或复杂的算法,因此非常适合需要直接答案的简单问题。 然而,在处理大量文档时会出现限制,因为将所有文档容纳在上下文窗口中可能变得不切实际,从而可能导致在面对复杂查询时缺乏深度。 尽管如此,还是有一些不同的方法可以解决短上下文窗口的问题,例如:“Map-reduce”、“Refine”和“Map-rerank”。
Map-reduce 方法受到广泛接受的并行处理范例的启发,其工作原理是首先将每个文档分别发送到语言模型以获得单独的答案。 然后,通过对法学硕士的最终调用,将这些单独的响应合并为最终响应。 尽管这种方法需要与语言模型进行更多的交互,但它具有处理任意数量的文档块的明显优势。 事实证明,这种方法对于复杂的查询特别有效,因为它可以同时处理问题的不同方面,从而生成更全面的响应。 然而,这种方法并非没有缺点。 它往往会比较慢,并且在某些情况下可能会产生次优的结果。 例如,由于响应是基于各个文档块的事实,可能会出现基于给定文档块的明确答案的缺乏。 因此,如果相关信息分散在两个或多个文档块中,则可能缺乏必要的上下文,从而导致最终答案可能不一致。
图 16:用于问答的 Map-reduce 链类型
Refine 方法遵循迭代方法。 它通过使用相关信息迭代更新提示来完善答案。 它在动态和不断变化的环境中特别有用,在这种情况下,第一个答案可能不是最好或最准确的。
图 17:问答的细化链类型
Map-rerank 方法是一种复杂的方法,它根据检索到的文档与查询的相关性对它们进行排名。 此方法非常适合存在多个看似合理的答案并且需要根据其相关性或质量对它们进行优先级排序的场景。
图 18:用于问答的 Map-rerank 链类型
每种提到的方法都有其自身的优点,可以根据问答所需的抽象级别进行选择。 总之,不同的问答链类型为从文档中检索和提取答案提供了灵活性和定制选项。 它们可用于提高语言模型提供的答案的准确性和相关性。
RAG 流程中所有这些步骤的成功相互作用可以形成一个高效的系统,用于自动化文档处理并针对各种查询生成富有洞察力的响应。
业务流程自动化的采用率显着增加,这在很大程度上归因于其能够提高效率、最大限度地减少错误以及释放人力资源以担任更具战略性的角色。 然而,特定领域数据的有效整合和利用仍然面临相当大的挑战。 RAG 和LLM为这些挑战提供了有效的解决方案,具有以下几个关键优势:
原文链接:基于LLM的业务流程自动化 - BimAnt