检索增强生成RAG的概念及参考架构

大家好,自ChatGPT火爆以来,大语言模型(LLMs)驱动的智能应用如雨后春笋般涌现,迅速改变了我们与世界互动的方式。在众多智能AI应用架构中,RAG(检索增强生成)架构以其独特的优势和强大的功能,迅速引起了广泛关注,成为业界的热门话题。

RAG是一种提高大型语言模型 (LLM) 输出质量的方法,结合了信息检索和生成式模型的优势,通过检索相关信息来增强生成结果,显著提升了生成内容的准确性和相关性。这种架构不仅快速实现用户的复杂需求,还可以为用户提供更专业、更精确的回答。

RAG更多地专注于利用大型语言模型(LLMs)的理解/推理/表达能力,通过整合外部知识来实现更好的生成结果。RAG技术消除了开发人员需要针对每个特定任务重新训练整个大规模模型的需求。相反,可以简单地连接相关知识库,为模型提供额外的输入,增强答案的准确性。

由于RAG(检索增强生成)的内容较为复杂,本文将从一个简单的RAG参考架构开始展开讨论。基于这一参考架构,可以设计和构建基于RAG生成式人工智能(AI)应用,也可以更快地理解RAG的概念。

通过RAG参考架构可以直观地了解RAG的基本组成部分,不仅为开发RAG功能的AI应用提供了清晰的设计思路,还为进一步深入探索和优化RAG技术奠定了基础。无论是对于新手还是有经验的开发者,这种简化的架构都能帮助快速上手,掌握RAG的构建智能应用方法。

1.RAG的概念架构

RAG 是从现有数据库或文档集/知识库中检索相关信息并进而生成内容的过程。RAG 系统由两部分组成,分别是智能检索器和LLMs生成模型。智能检索器负责在向量数据库(知识库)中检索与用户问题最相关的信息,是向量化的知识存储库和LLMs模型结合实现知识的语义搜索匹配。找到的信息被传递到生成器,生成器使用此信息生成用户问题的答案。通过利用智能检索器,可以强制生成器坚持使用知识库中与回答问题最相关的内容,这一过程就实现了检索增强生成(RAG)。

RAG最大的特点是它在生成过程中“增强”了现有的信息,这意味着根据新检索的实时数据构建答案,而不是简单地根据过去学习的数据生成答案。因此,RAG可以说是一项非常有用的技术,尤其是在信息不断更新的领域。

1.1 RAG 的优点

  • 灵活性:RAG可以与多种形式的数据连接,适用于各个领域。

  • 准确性:实时查找和使用最相关的信息,因此生成的答案非常准确。

  • 适应性:您可以生成实时反映新信息的答案。

RAG 将信息检索和内容生成结合起来,为用户的问题提供更相关的答案。

1.2 RAG核心功能

  • 实时数据库搜索:RAG 系统的搜索功能实时搜索数据库以查找与用户问题最相关的信息。这使您可以使用最新且最相关的数据,而不是现有的静态数据。

  • 内容生成:生成器根据检索到的信息生成答案。在此过程中,生成器利用检索到的信息作为内容生成的上下文,提供更准确、更丰富的信息。

  • 持续学习和变革:RAG 不断搜索新数据并根据其生成答案,并在新信息可用时进行自我更新。这使得系统始终保持最新状态。

2.RAG的参考架构

RAG智能AI系统主要分为四个部分:

  • 数据注入子系统:准备和处理用于实现 RAG 功能的所有外部知识库和数据,处理的过程主要格式化和向量化等处理。数据注入子系统通过数据库层与架构中的其他子系统进行交互。

  • 服务子系统:处理生成式 AI 应用与其用户之间的请求-响应流。服务子系统通过数据库层与数据注入子系统进行交互。

  • 质量评估子系统:评估服务子系统生成的响应的质量。 质量评估子系统直接与服务子系统交互,并通过数据库层与数据注入子系统交互。

  • 向量数据库:存储知识向量化数据,负责向量化(语义)的搜索和计算,架构中的所有子系统都与向量数据库进行交互。

2.1 数据注入子系统

数据注入子系统从外部来源(例如文件、数据库和流式传输服务)注入数据。上传的数据包含进行质量评估的提示。数据注入子系统在架构中提供 RAG 功能。下图展示了架构中的数据注入子系统的详细信息:

  1. 知识文档数据导入/爬取:数据注入子系统从外部来源获取数据,这些数据可以来自文件、数据库、或通过爬虫从网络上获取的文档数据。

  2. 事件触发:当新的数据导入或获取时,事件触发机制启动后续的处理流程。这可能是一个文件上传事件、数据库更新事件,或爬虫抓取新数据的事件。

  3. LLMs(大语言模型)文档处理:存储的数据被发送到大语言模型(LLMs)进行处理。这个处理步骤包括解析数据、转换格式和将文本序列化为Tokens序列。

  4. 调度执行:数据处理的调度执行模块负责协调各个处理步骤的顺序和资源分配。它会调度LLMs进行文档处理,并协调向量嵌入模型的执行。

  5. LLMs 嵌入模型:经过处理后的数据被发送到LLMs嵌入模型,该模型将文本数据转化为向量表示(embeddings)。这些向量表示便于后续的存储、搜索和质量评估。

  6. 向量数据库:生成的向量表示被存储到向量数据库中。向量数据库用于高效地存储和检索文本的向量表示,支持相似性搜索和其他向量操作。

数据注入子系统通过知识、文档和数据的采集和导入,并启动数据处理流程,包括文档解析、格式转换、向量嵌入生成和质量评估。数据流经过处理和存储向量表示并最终保存在向量数据库中。

2.2 服务子系统

服务子系统处理生成式 AI 应用与其用户之间的请求-响应流的交互服务模块。下图展示了服务子系统的基本流程和结构:

1.用户请求提交

  • 请求来源:用户通过前端接口(如聊天机器人或移动应用)向生成式AI应用提交自然语言请求。

  • 请求处理:前端接口将用户的自然语言请求发送到生成式AI应用进行处理。

2.自然语言请求转换为嵌入

  • 嵌入生成:生成式AI应用接收用户请求,并利用自然语言处理(NLP)技术将请求转换为高维嵌入表示,以便后续处理。

  • 语义搜索:生成式AI应用在由数据注入子系统维护的向量数据库中执行语义搜索。语义搜索根据请求的意图(而不是其文本内容)查找匹配的嵌入。

  • 情景化提示生成:应用将原始请求与语义搜索匹配到的原始数据相结合,创建情景化提示,为生成响应提供上下文。

3.LLM推理堆栈

  • 提示发送:应用将情景化提示发送到LLM推理堆栈。

  • 响应生成:LLM推理堆栈使用生成式AI LLM(可以是基础LLM或自定义LLM),生成受限于所提供上下文的响应。

4.日志记录与监控:应用可以在Logging中存储请求-响应活动的日志,确保活动的可追溯性和审计。

5.数据存储与分析:应用将生成的响应存储到分析平台,以便进行离线分析,支持进一步的数据挖掘和系统优化。

6.响应过滤:应用使用Responsible AI过滤条件,对生成的响应进行审查,确保输出内容符合伦理和法律要求,避免敏感或不适当的信息。

7.响应发送:应用通过前端接口将经过Responsible AI过滤的响应发送给用户,完成整个请求-响应流程。

2.3 质量评估子系统

质量评估系子系统负责评估服务子系统生成的响应的质量,直接与服务子系统交互,并通过数据库层与数据注入子系统交互。

2.4 向量数据库

向量数据库主要用于存储和检索高维向量化的知识和数据,支持生成式AI应用的高效检索和匹配。

向量数据库的主要作用是存储和处理向量数据,并提供高效的向量检索功能。最核心是相似度搜索,通过计算一个向量与其他所有向量之间的距离来找到最相似的向量(最相似的知识或内容)。这是基本索引(flat indexes)的朴素原理,在大型向量数据库中,这可能需要很长时间。

为了提高搜索性能,可以尝试仅计算一部分向量的距离。这种方法称为近似最近邻(approximate nearest neighbors:ANN),它提高了速度,但牺牲了结果的质量。一些常用的ANN索引包括局部敏感哈希(Locally Sensitive Hashing:LSH)、分层可导航小世界(Hierarchical Navigable Small Worlds:HNSW)或倒排文件索引(Inverted File Index:IVF)等。

综上所述,RAG(检索增强生成)架构将信息检索和生成式模型相结合,通过智能检索器和LLMs生成模型实现智能AI应用。其优势在于灵活性、准确性和适应性,能够实时搜索数据库并生成实时反映新信息的答案。该架构主要分为数据注入、服务、质量评估和向量数据库四个子系统,通过处理外部知识库数据并利用LLMs进行处理和生成,实现了高效的智能应用交互和响应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

python慕遥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值