大模型应用开发系列2—检索增强生成RAG
检索增强生成(Retrieval Augmented Generation),也称为RAG,是一种在私有或自定义数据集上构建生成式AI应用程序的方法和流程。
无可否认,大型语言模型(LLM)擅长从大量数据中存储和学习事实信息,从而推动了NLP特定任务架构的发展。然而,由于固有的局限性,他们在面对知识密集型任务时表现不佳。LLM很难有效地获取和运用知识,因为他们无法轻易扩展或更新他们的记忆。此外,他们可能会产生被称为“幻觉”的错误输出,并且常常无法提供对其预测的清晰见解。为了解决LLM的局限性,检索增强生成(RAG)通过结合检索和生成的优势,受到了广泛关注,并正在重新定义我们处理文本生成任务的方式。
在生成式应用程序爆发式增长的时代,从聊天机器人和内容生成到问答系统和语言翻译,检索增强生成技术提供了强大的解决方案来提高这些应用程序的质量和可靠性。RAG应用已经成为企业内部GenAI的最佳框架,用于各种用例,例如聊天机器人、问答、以及研究和分析。
RAG应用开发框架
其中,蓝色箭头演示了数据处理流程,绿色箭头演示了查询-响应流程,红色箭头描绘了最后一个可选步骤:通过企业自动化和集成根据响应采取行动。
RAG框架的基本概念和流程:
(1)提示(Prompt):一开始,用户会提供一个提示,概述他们对响应的期望。
(2)上下文搜索(Retrieval):这一关键步骤涉及使用外部上下文信息来增强原始提示。负责从各种来源搜索和检索数据的外部程序开始发挥作用。此过程可能包括查询关系数据库、在索引文档中进行基于关键字的搜索,甚至调用API从远程或外部源获取数据。
(3)提示增强(Prompt Augmented):在上下文搜索之后,检索到的附加信息将无缝集成到原始用户提示中。这种增强通过事实数据丰富了用户的查询,增强了其深度和相关性。
(4)生成响应(Generation):有了这种增强且上下文丰富的提示,语言模型(LLM)就开始发挥作用。LLM现在配备了原始用户查询和补充上下文,显着提高了其准确性。它可以利用事实数据源来提供更精确且与上下文相关的响应。
RAG开发模块
简单来说,RAG框架中包括3个基本模块:
数据处理模块
检索模块
生成模块
(1)数据处理
数据处理模块,包括2部分:一是数据接入和加工,二是嵌入。
数据接入和加工,处理用于检索增强生成的数据并准备用于查询。这些数据可能来自各种来源,例如数据库或云存储、S3、Google Drive、本地文件夹或企业应用程序(例如 Notion、JIRA)或其他内部应用程序。
对基于文本的GenAI应用程序,我们需要将任何输入数据转换为适当的文本文档格式。例如PDF、PPT或DOCX,那么我们首先从这些文档中提取实际文本。如果数据位于数据库中,则文本源自数据库中的一个或多个列或文档。这种文档处理通常是特定于应用程序的,并且取决于源数据的格式。
文本准备好后,就会被分成适合检索的“块”(或段)。使用嵌入模型(如Huggingface的SentenceTransform模型),为每个文本块计算“向量嵌入”。通常,文本嵌入的结果,都保存到向量数据库中,以便稍后用于高效的语义检索。
(2)检索模块
检索模块,主要使用向量数据库进行语义检索。用户发出查询,对向量数据库中的数据进行语义检索,获取到用户查询的最相关信息。
首先,我们使用(相同的)嵌入模型对查询本身进行编码,并使用近似最近邻(ANN)搜索算法来检索向量存储中可用的最相关文本块的排名列表。
(3)生成模块
生成模块,主要利用大模型LLM生成响应内容。
在这个环节,我们为LLM构建了全面的提示,包括用户问题和检索得到的所有相关信息。完整的提示将发送到LLM来生成响应。有了用户问题和相关事实,LLM现在可以根据所提供的事实对问题做出回答,从而避免产生幻觉。
生成响应后,可以选择将其发送到“验证”服务(例如Nvidia的Nemo Guardrails),最后返回给用户。
RAG的应用
RAG在各个领域和行业都有应用,利用其结合基于检索和生成技术的能力来增强文本生成和信息检索。以下是RAG的一些值得注意的应用:
(1)问答系统:RAG在问答应用中特别有价值。它可以检索并生成用户查询的精确且上下文相关的答案,使其适用于虚拟助理、常见问题解答和专家系统。
(2)聊天机器人和虚拟助理:RAG支持的聊天机器人可以对用户询问提供更准确、信息更丰富的响应。它们擅长自然语言交互,非常适合客户支持、信息检索和对话式人工智能。
(3)内容摘要:RAG可用于通过选择最显着的信息并生成简洁的摘要来总结冗长的文档、文章或报告。这对于内容管理和信息消化很有用。
(4)内容生成:RAG用于生成用于各种目的的内容,包括新闻文章、报告、产品描述等。它确保生成的内容事实上准确且与上下文相关。
(5)内容审核:RAG可以通过识别违反准则或政策的用户生成内容并生成响应来协助在线平台上的内容审核。
(6)知识库和专家系统——RAG可用于实时更新和扩展知识库,确保专家系统能够访问最新信息。
这些应用突出了RAG在各个领域的多功能性和实用性,其中检索和生成功能的组合显著增强了基于文本的任务和信息检索过程。
RAG的优势
(1)它几乎消除了幻觉:它消除了由于LLM无法访问您的数据而产生的幻觉。通过准确地从数据中检索最相关的事实,并在运行时将其提供给LLM,RAG管道可确保LLM拥有最有用的数据来回答问题。这在实践中非常有效。
(2)成本低:RAG不需要任何培训或微调,这意味着它没有很高的成本,并且不需要专门的机器学习专业知识。
(3)可解释性:使用RAG生成的LLM回复具有高度可解释性,通过RAG,可以提供引用和回复,以便读者可以了解哪些事实用于支撑LLM的回复,甚至可以前往这些来源之一进行进一步调查。
(4)企业就绪:借助RAG,您可以对检索到的事实实施细粒度的许可,并设计控制以确保机密材料不会进入生成GenAI响应的事实。
微分认知提供企业RAG应用开发
RAG正在迅速成为实现由大型语言模型支持的企业应用程序的标准框架。
自己实施RAG需要大量的知识和专业知识,以及对DevOps、MLOps的持续投资,并跟上LLM和RAG的所有最新创新。
微分认知提供一站式RAG的开发API,使开发人员能够构建企业级LLM应用程序。我们提供完整的API开发流程,从数据预处理、分块和嵌入到管理文本和矢量数据库、管理提示以及调用LLM创建一个回复。所有这些都在确保企业级安全性和数据隐私、服务的低延迟和高可用性的同时完成,因此您无需担心。
随着RAG的不断发展,新的研究引入了提高RAG应用性能的新方法。我们不断监控所有这些创新,并将它们集成到我们基于API的产品中,以便您可以通过在最短的时间内加速GenAI应用程序交付的价值而受益。
参考资料:
Retrieval Augmented Generation: Everything You Need to Know https://vectara.com/retrieval-augmented-generation-everything-you-need-to-know/
Retrieval Augmented Generation (RAG) https://docs.cohere.com/docs/retrieval-augmented-generation-rag
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks https://arxiv.org/pdf/2005.11401v4.pdf