高级RAG架构
作者: 大数据技术体系 来源: 大数据技术体系
高级RAG架构
RAG是什么?
‘RAG’的概念,即“检索增强生成”(Retrieval Augmented Generation),首次出现在Meta于2020年发表的一项学术研究中。尽管这个概念历史较短,但与大型语言模型技术相结合后,它展现了巨大的潜力,并且现在已经成为生成式人工智能的核心,为我们提供了作为这一领域最大商业用例的机会。
RAG通过大量基于基础模型之外的数据来增强大型语言模型的能力,使模型响应能够生成更真实、更个性化、更可靠的输出。因此,对于RAG来说;我们可以说它是一个提供功能以改善大型语言模型性能的框架。借助这种灵活且强大的框架,RAG在企业领域的大型语言模型应用中取得了显著增长,仅仅在短短3年内就取得了可观的成就。根据2023年发布的《Retool报告》,令人印象深刻的是,36.2%的企业大型语言模型用例现在使用RAG框架。RAG将大型语言模型的强大功能与结构化和非结构化数据相结合,使企业信息访问比以往任何时候都更加高效和快速。通过这种方式,可以生产出更有竞争力和成功的人工智能服务,而无需进行诸如传统虚拟助手所需的数据准备等数据科学过程,同时耗费最少的人力。
RAG是如何工作的?
如下图所示,典型的RAG流程以大型语言模型为核心,使用企业文档集来供模型提供输入,并使用提示工程基础设施来改善响应生成。RAG工作流程;它使用向量数据库来查找与所提问的问题相似的概念和文档,并使用提示工程技术将相关数据转换为模型期望的格式。RAG的这一流程使其成为了一种强大的工具,适用于希望利用现有数据存储库进行高级决策和信息检索的公司。为了按顺序查看应用步骤:
1-查询:以文本格式的问题通过任何虚拟助手或界面发送到RAG流程中。
2-(检索)文档搜索:模型执行搜索步骤,从外部来源收集相关信息。这些来源可能包括数据库、一组文档,甚至是搜索引擎的结果。搜索过程旨在找到包含与给定输入或请求相关信息的文本片段或文档。
3-增强:在搜索阶段获得的信息随后与原始输入或提示相结合,并通过创建提示工程草稿来丰富,使模型能够使用该草稿来创建输出。通过在通过提示工程创建的此草稿中包含外部信息,将模型带入到大型语言模型期望的格式中。
4-生成:最后,模型通过考虑收到的信息和原始输入来生成答案。在这里,将系统提出的问题的第一个形式、从向量数据库获取的文档和其他参数一起评估,以确保大型语言模型产生最准确的输出文本。
5-回答:由大型语言模型创建的新内容传递给用户。
RAG在各种自然语言处理任务中都很有用,例如问答、对话生成、摘要等。通过整合外部信息,RAG模型展示了比仅依赖于训练数据的传统模型更准确和信息丰富的潜力。
RAG是各行各业和各种用例的合适解决方案。它通过帮助从大型数据库或文档存储库中引用信息,促进了知情决策流程,在金融、法律和医疗保健领域。此外,无论是哪个行业,RAG在客户服务领域中都有重要作用;它用于提供给用户查询的准确和与上下文相关的答案的动力虚拟助手。除此之外,通过理解用户偏好和历史数据,它还在个性化内容创建和推荐系统中占据重要地位。
RAG与传统方法的区别
基于分类的传统模型
传统的自然语言模型旨在从一组预定义的响应中选择适当的响应,这些响应是根据输入查询选择的。这些模型将输入文本(问题或查询)与一组预定义的答案进行比较。系统通过使用监督学习算法或其他语义匹配方法等技术,通过测量输入和标记响应之间的相似性来确定最合适的响应。这些基于分类的模型对于诸如问答之类的任务非常有效,其中答案通常基于静态响应类型,并且可以在结构化形式中轻松
找到。
基于RAG的下一代模型
与传统方法不同,高效的人工智能模型从头开始创建答案或内容,而不是匹配现有内容。这些模型使用更复杂的算法,通常基于神经网络,以生成类似人类的文本或响应。与我们熟悉的方法不同,它们不需要将其与任何现有类别关联,因为它们创建新内容。因此,它带来了无监督学习的所有优势和优势。通过基于无监督学习的这些模型,它们学会了通过预测查询提供的内容的下一个单词或一系列单词来产生答案。这种生成新的、上下文相关的响应的能力使得基于生成式人工智能的模型非常灵活,适用于诸如创意写作、翻译和对话等任务,其中响应必须具有丰富的内容。
开发RAG应用程序的首要考虑因素之一是准确确定工作流程中出现的问题类型以及您为之创建RAG框架的数据以及将要解决这些问题的过程。
使用RAG的优势
RAG在访问外部信息和当前数据有用的场景中提供了几个优势。一些关键优势包括:
-
- 上下文相关性:RAG模型可以生成更具上下文相关性和信息量的动态响应。通过结合来自外部来源的信息创建的文本更加扎根于当前的现实世界信息,从而产生更准确和具有上下文感的答案。
-
- 事实核查和验证:由于RAG模型从可靠的外部来源接收信息,它们可以在生成过程中执行事实核查和验证。这有助于减少虚假或误导性信息的创建,并确保所创建内容的准确性。
-
- 改进的知识整合:RAG模型可以有效地使用外部知识库或文档来改进它们的答案。这在问答任务中特别有用,其中模型可以从各种来源访问相关信息,以提供基于充分信息的准确答案。
-
- 灵活性和适应性:从各种来源获取信息的能力使RAG模型更具灵活性和适应性。它们可以处理各种主题和任务,而无需为每个具体情景进行显式微调,只要搜索机制设计得足够好,以检索相关信息即可。
-
- 处理分布之外的输入:传统的文本生成模型在面对不在训练数据中的分布之外或不常见的输入时可能会遇到困难。而RAG模型则可以通过向量数据库来查找相关信息,甚至对于未见或不常见的输入也可以找到相关信息。
-
- 受控内容生成:RAG模型还可以用于受控内容生成。通过指导文档搜索过程并指定来源,开发人员可以控制模型用于生成响应的信息类型和质量。
-
- 减少偏见:文档搜索机制可以帮助减少所创建内容中的偏见。通过使用各种信息来源,模型可以提供比传统模型更平衡和无偏见的响应,后者可能受到训练数据中存在的偏见的影响。
尽管RAG提供了显著的优势,但重要的是要意识到可能存在的挑战和考虑因素,例如处理来自不同来源的复杂信息以及平衡文档搜索结果的准确性和效率。
RAG与其他生成式人工智能标题的区别
主要区别在于公司数据的存储位置和使用方式。当您微调模型时,您重新训练一个预先存在的大型语言模型,使用您公司的数据并更改模型配置以满足您的用例需求。另一方面,RAG从存储在外部的公司文档中检索数据,并将其提供给大型语言模型以指导响应生成。微调是一个漫长而昂贵的过程,不适合与频繁更改的公司文档一起使用。
RAG实施挑战
尽管RAG是一个非常强大的工具,但在实施和治理方面也带来了一些挑战;
多渠道/源集成:当存在不同格式的多个外部数据源时,复杂性会增加。为了解决这个问题,重要的是对这些数据进行预处理或检查,以避免数据集之间的重复。
数据质量:数据应该一致且具有很好的代表性。如果应用程序访问的源内容的质量很差,那么生成的答案就不会准确。因此,在整合数据源之前,有必要提高数据质量。
可扩展性:随着数据量的增加,管理RAG系统的性能变得困难。为了更轻松地解决这个问题,应该使用诸如向量数据库之类的解决方案。
搜索优化:为了使模型产生正确和期望的输出,从向量数据库的相似性
搜索的第一步必须具有高性能。在这里,选择缺失或不正确的内容作为向量搜索的结果将导致在下一步创建适当的请求工程草案失败。素描被用作大型语言模型查询的输入,并且一个效率低下的输入将导致同样效率低下的输出。
复杂和高级的RAG系统
文档分块
在自然语言处理的上下文中,“分块”意味着将文本分成小的、简洁的、有意义的部分。与在大型文档中查找相关上下文相比,RAG系统可以更快、更准确地在较小的文本片段中找到相关上下文。您如何确保选择正确的部分呢?您的分块策略的有效性在很大程度上取决于这些片段的质量和结构。确定最佳分块大小是要在捕获所有重要信息的同时不牺牲速度之间取得平衡。虽然较大的块可以捕获更多的上下文,但它们会引入更多的噪音,并且需要更多的时间和计算成本来处理。较小的部分噪音较少,但可能无法完全捕获所需的上下文。重叠部分是在这两个约束之间取得平衡的一种方法。通过重叠部分,一个查询可能会在多个向量集上检索到足够的相关数据,以创建一个适当相关的答案。一个限制是,这种策略假设您需要获取的所有信息都可以在单个文档中找到。如果所需的上下文分散在多个不同的文档中,那么考虑使用文档层次结构和知识图等解决方案可能是值得的。在这里,我们可以将逐个从多个文档中提取的含义与关系数据库中不同领域的信息相结合,使其更具价值和意义。
CRAG
我们可以将CRAG视为验证或改进搜索结果的过程,这是RAG工作流程中涉及的第一步。所有RAG过程中的共同问题是无法在搜索阶段从文档堆栈中获得所需的结果。未能获取所需的最准确文档会导致请求表达的不完整以及在最后一步(即向大型语言模型查询)中指导语言模型的错误,后者是查询大型语言模型的最终步骤。在搜索过程中经历的搜索问题会在接下来的步骤中产生更明确和更偏离的结果。在这种情况下,能够检查搜索结果是否实际产生了正确文档至关重要。作为解决这个问题的解决方案开发的CRAG方法是一个相对较新的用法。它被设置为通过为所有搜索结果定义一个上限和下限阈值来将结果分类为“真”、“假”或“不清晰”的结果。如果至少一个文档与查询的相似度比率高于阈值,则认为搜索过程是正确的。如果找到的所有文档的分数低于下限阈值,则认为搜索过程是不正确的。不确定状态涵盖了介于上限阈值和下限阈值之间的其他情况。对于被认为是正确的文档,将应用另一个碎纸机,并通过清除包含噪声的文本并丰富内容来加强文档。在搜索结果被错误分类的情况下,将使用内容和查询执行网络搜索,并从在线环境中获得更详细的信息,并对被错误分类的文档进行更正。在不确定的情况下,同时重复和执行应用于正确和错误的进程。
在这里,对于由搜索结果产生的文档的相似性比率确定;与“创建”步骤相比,为了确保CRAG过程的效率,使用的是较小的语言模型(文献研究使用了谷歌提供的拥有770万参数的t5-large模型)。该模型称为“搜索评估器”。为了使搜索评估器能够正确评估内容,有必要在微调过程中包含相关数据,并将其转变为CRAG过程的效率成熟模型。另一方面,网络搜索对于负面结果的负面影响也令人担忧。互联网来源的质量可能会有很大差异,未经充分考虑地包含这样的数据可能会在生成的输出中引入噪音或误导性信息。此外,当未经充分优化时,CRAG可能会增加额外的工作量和麻烦。假设大量文档将被选择为搜索结果,并且每个文档都将使用该小型模型单独查询,这可能会在资源消耗和延迟方面带来额外的风险。对于使用内部系统的机构来说,不得不在线上网以改进错误评估结果可能会带来另一个挑战。
尽管存在所有的保留和困难,但CRAG的优点和使用提供了非常强大的好处,可以应用于不同的领域;通过评估所接收的文档的质量,CRAG确保仅使用相关和可靠的信息,并将错误或误导性结果的风险降到最低,从
而提供更准确的内容和答案。
本地文档缓存
最新研究重点在于使文档存储在本地以获得访问速度的提高。当有许多并发用户并且大量文档需要在短时间内检查时,这可能尤其有用。访问外部文档可能会带来大量的I/O开销,而在本地缓存上的检查将会更加快速有效。这种方法的一个问题是,本地存储的内容可能已经过时。当时间敏感性和准确性同时成为优先考虑的因素时,需要权衡哪种方法最适合特定的用例。在开发任何缓存系统时,应该考虑定期刷新数据以保持最新性。这种刷新的频率取决于应用程序的特定需求,以及系统的计算和存储资源的可用性。在开发应用程序时,还应考虑将缓存存储在何处以及如何更新。存储在内存中的缓存可能更快,但受到可用内存量的限制。存储在磁盘上的缓存可以容纳更多的数据,但可能需要更长的时间来访问。再次,根据特定用例的需求,开发人员可以根据性能需求和资源限制进行取舍。
结论
RAG框架为生成式人工智能带来了新的维度。通过整合外部信息,RAG模型能够生成更加准确、更具信息量和上下文的输出。然而,实现和优化RAG系统也会带来一些挑战,包括数据质量、搜索效率和系统扩展性等方面的问题。尽管如此,随着这些技术的不断发展和改进,RAG将继续在各个领域发挥越来越重要的作用,为企业带来更准确、更智能的解决方案。
更多AI工具,参考Github-AiBard123,国内AiBard123