RAG 101:揭秘检索增强生成工作流
大语言模型(LLM)以其前所未有的理解能力和生成类人回答的能力令世人惊叹。其聊天功能使人类能够与大型数据集进行快速且自然的互动,例如,它们可以从数据中总结提取亮点,或者用自然语言替换复杂的查询,如 SQL 查询等。
人们会理所当然地认为这些模型不费吹灰之力就能产生商业价值,很遗憾,事实往往并非如此。幸运的是,企业只需用自己的数据来增强 LLM,就能从中获得价值。这可以通过检索增强生成(RAG)来实现,在 GitHub 资源库中的 NVIDIA 生成式 AI 示例也向开发者展示了这一功能:https://github.com/NVIDIA/GenerativeAIExamples?nvid=nv-int-tblg-585510
通过使用业务数据增强 LLM,企业可以使 AI 应用敏捷地响应新的发展趋势。例如:
本文将介绍在构建 LLM 应用时使用 RAG 技术的优势,以及 RAG 工作流的组成部分。
使用 RAG 的优势如下
通过实时数据访问来赋能 LLM 解决方案
企业中的数据是不断变化的。使用 LLM 的 AI 解决方案可以通过 RAG 保持更新,方便员工直接访问更多数据资源,如实时数据和个性化数据等。
保护数据隐私
确保数据隐私对企业来说至关重要。通过自托管的 LLM(在 RAG 工作流中进行演示),敏感数据可以像存储的数据一样保存在本地。
减少 LLM 幻觉问题
当 LLM 没有获得符合事实的真实信息时,它们往往会给出错误但有说服力的回答。这就是所谓的幻觉,而 RAG 通过向 LLM 提供相关的事实信息,能够降低出现幻觉的可能性。
构建并部署您的首个 RAG 工作流
典型的 RAG 工作流由几个阶段组成。文档摄取过程在离线状态下进行,当出现在线查询时,就会检索相关文档并生成回答。
图 1 显示了加速的 RAG 工作流,可在 /NVIDIA/GenerativeAIExamples GitHub 资源库中构建和部署:https://github.com/NVIDIA/GenerativeAIExamples?nvid=nv-int-tblg-585510
图 1. RAG 工作流组件概览:摄取和查询流
每个逻辑微服务都被分到 NGC 公共目录中的可用容器中。整体上,RAG 系统的架构可以分解为图 1 所示的工作流:
文档摄取
首先,来自数据库、文档或实时传输等不同来源的原始数据会被摄取到 RAG 系统中。为了预处理这些数据,LangChain 提供了多种文档加载器,可从多种不同来源中加载多种形式的数据。
文档加载器这一术语的使用比较宽泛。源文档并不一定是您所认为的标准文档(如 PDF、文本文件等)。例如,LangChain 支持从 Confluence、CSV 文件、Outlook 电子邮件等载入数据。LlamaIndex 还提供多种加载器,可在 LlamaHub 中查看:https://llamahub.ai/
文档预处理
加载文档后,通常要对其进行转换。其中一种转换方法是文本分割,它将长文本分解成较小的片段。这对于将文本拟合至嵌入模型 e5-large-v2 中是十分必要的,其最大 token 长度为 512。虽然分割文本听起来很简单,但其实是一个非常细致的过程。
生成嵌入
在摄取数据后,必须将数据转换成系统可以有效处理的格式。生成嵌入涉及到将数据转换成以数字格式表示文本的高维向量。
在向量数据库中储存嵌入信息
处理过的数据和生成的嵌入被存储在称为向量数据库的专用数据库中。这些数据库已经过优化,能够处理向量化数据,进而实现快速搜索和检索操作。将数据存储在 RAPIDS RAFT 加速向量数据库(如 Milvus)中,可确保信息在实时交互过程中依然可访问和快速检索。
大语言模型
大语言模型(LLM)是 RAG 工作流的基础生成组件。这类先进的通用语言模型在大量数据集上训练而成,因而能够理解和生成类人文本。在 RAG 中,LLM 被用于根据用户查询以及在用户查询期间从向量数据库中检索到的上下文信息,来生成完整的回答。
查询
当用户提交查询时,RAG 系统会使用索引数据和向量来执行有效的搜索。该系统通过将查询向量和存储在向量数据库中的向量进行比较,来识别相关信息。然后,LLM 会使用检索到的数据做出适当的回答。
您可以在 /NVIDIA/GenerativeAIExamples GitHub 资源库中测试此示例工作流,来加快该系统的部署:https://github.com/NVIDIA/GenerativeAIExamples?nvid=nv-int-tblg-585510
开始在您的企业中构建 RAG
通过使用 RAG,您可以轻松地为 LLM 提供最新的专有信息,并构建一个提高用户信任度、改善用户体验和减少幻觉的系统。
探索 NVIDIA AI 聊天机器人 RAG 工作流,开始构建一个能够使用最新信息、以自然语言来准确回答特定领域问题的聊天机器人:https://github.com/NVIDIA/GenerativeAIExamples/tree/main/RetrievalAugmentedGeneration?nvid=nv-int-tblg-996848