01
引子
检索增强生成(RAG)到底是怎么回事呢?首先,让我们记住大型语言模型(LLM)最擅长做什么——通过自然语言处理(NLP)模型来生成内容。如果你要求一个大型语言模型对它从未遇到过的数据(可能是只有你知道的东西,特定于某领域的信息,或者大型语言模型尚未训练过的最新信息)生成响应,它将无法生成准确的答案,因为它不知道这些相关信息。
02
检索增强生成
检索增强生成作为大型语言模型的框架,在生成响应时提供了准确相关的信息。为了帮助大家理解“RAG”,让我们先来看看“G”。“RAG“中的“G”是LLM模型为了响应用户查询也被称为提示词所生成的文本。不幸的是,有时这些模型会产生不太理想的响应。我们来看个栗子:
Question: What year did the first human land on Mars?
Incorrect Answer (Hallucinated): The first human landed on Mars in 2025.
在上面这个例子中,大语言模型提供了一个虚构的答案,因为截至2024年,人类还没有登陆火星!该模型可以基于从训练数据中学习到的模式来生成响应文本。如果它遇到一个关于尚未发生的事件的问题,它仍可能试图提供答案,从而导致不准确的回答或幻觉。
没有列出答案来源,所以你对这个答案的响应没有太大信心
答案是过时的信息
答案可以根据LLM所接受的训练数据得出;我们称之为人工智能幻觉
公共互联网上没有的内容,因为大多数LLM都是从互联网上获取训练数据的
当我们在美国宇航局网站上查找有关人类上火星的信息时,可以看到美国宇航局提供的许多关于他们如何为人类探索火星做准备的信息。进一步查看美国国家航空航天局的网站,你可以看到一项任务于2023年6月开始,开始为期378天的火星表面模拟。最终,这项任务将结束,因此有关人类上火星的信息将不断变化。有了这个,我们现在可以用更可信的东西为我们的答案奠定基础;我们在回答上述问题提供答案的时候有一个消息来源(美国国家航空航天局网站),这样可以帮助LLM避免产生幻觉。
更具体一点,我们通过将内容(文档、PDF等)放入矢量数据库等数据存储中来实现这一点。在这种情况下,我们将为用户创建一个聊天机器人界面,而不是直接使用LLM。然后,我们创建内容的向量嵌入,并将其存储在向量数据库中。当用户询问我们的聊天机器人界面一个问题时,我们将指示LLM检索与查询内容相关的信息。它将问题转换为向量嵌入,并使用向量数据库中存储的数据进行语义相似性搜索。一旦匹配了检索增强答案,我们的聊天机器人应用程序就可以将此答案和来源发送给LLM,并要求它生成一份摘要,其中包含用户问题、提供的数据以及它按照指示执行文本内容的生成。
希望大家可以看到RAG是如何帮助LLM克服上述挑战的。首先,对于不正确的数据,我们提供了一个包含正确数据的数据存储知识库,应用程序可以从中检索信息并将其发送给LLM,并严格说明只能使用这些数据和原始问题来制定答案。其次,我们可以指导LLM关注数据来源以提供更可靠的证据。我们甚至可以更进一步,如果根据矢量数据库中存储的数据无法可靠地回答问题,要求LLM回答“我不知道”。
03
RAG工作原理
检索增强生成始于识别大家希望用于生成式人工智能应用程序的数据源,以提供上下文相关的结果。使用所选的机器学习模型,将数据源的内容转换为向量嵌入或数据的数值表示,并存储在向量数据库中。当应用程序收到关于数据的查询时,例如以聊天机器人的问答形式,它会调用向量数据库的语义搜索。该查询被转换为向量嵌入,然后在语义搜索中用于查找相关文档或数据。搜索结果以及初始查询和提示随后被发送到LLM,以生成上下文相关的信息检索。
04
RAG VS 微调
05
RAG应用
问答聊天机器人:通过从公司文档和知识库中获取准确答案,自动提供客户支持并解决查询。 搜索增强:使用LLM生成的答案增强搜索引擎,以改善信息查询响应,并促进更容易的信息检索。
内部查询知识引擎:使员工能够询问有关公司数据的问题,如人力资源或财务政策或合规文件。
06
RAG优势
最新和准确的响应:RAG确保LLM响应基于当前的外部数据源,减少对静态训练数据的依赖。
减少不准确和幻觉:通过将LLM输出与相关外部知识联系起来,RAG最大限度地降低了提供不正确或捏造信息的风险,提供了具有可验证引用的输出。 特定领域的相关响应:利用RAG,LLM可以提供针对组织专有或特定领域数据量身定制的上下文相关响应。 简单且经济高效:与其他定制方法相比,RAG简单且经济高效,使组织能够在不进行大量模型定制的情况下部署它。
07
RAG参考架构
数据准备:从数据源收集内容,对其进行预处理,并根据分块策略将其拆分为合适的长度,根据大家选择的嵌入模型和下游LLM应用程序将数据转换为向量嵌入。
索引相关数据:生成文档嵌入,并使用此数据生成矢量搜索索引。矢量数据库将自动为大家创建索引,并提供一整套数据管理功能。 检索相关数据:检索与用户查询相关的数据,并将其作为LLM生成摘要的提示的一部分提供。 构建人工智能应用程序:将具有增强内容和LLM查询组件的提示一起打包,通过REST API将其暴露给问答聊天机器人等应用程序。 评估:对查询的响应有效性进行一致的评估。Ground truth 指标将RAG响应与既定答案进行比较。LLM响应指标考虑了友好性、危害性和简洁性。
08
RAG架构的核心要素
矢量数据库:人工智能应用程序受益于矢量数据库,可以快速进行相似性搜索,确保获取最新信息。
提示工程:向LLM提供复杂的指示,仅使用提供的内容来生成响应。 ETL管道:一个管道,用于帮助处理重复数据、异常情况以及在存储到矢量数据库之前对数据所需的任何转换(文本分割、元数据提取等) LLM:有很多LLM,包括闭源和开源的模型。 语义缓存:一种类似GPT缓存的语义缓存,用于存储LLM响应,以减少开销并提高性能。 RAG工具:在RAG中,使用第三方工具(LangChain、LLamaIndex、Semantic Kernel等)有助于构建RAG模型,并且通常与LLM无关。 评估工具和指标:用于帮助评估的指标、LLM和第三方工具(TruLens、DeepEval、LangSmith、Phoenix等)
09
总结
在人工智能领域,我们看到检索增强生成是一个游戏规则改变者,而不仅仅是一个工具。它将LLM与自定义数据无缝融合,提供准确、最新和行业特定的响应。RAG引领人工智能走向一个准确性与灵活性相结合的未来,今天的语言模型将成为明天的智能对话者。关于检索增强生成是如何工作的,还有很多需要学习的地方,特别是当我们努力将生成人工智能应用程序投入实际生产应用时。
旅程才刚刚开始,在RAG的掌舵下,未来的可能性是无限的。
点击上方小卡片关注我
添加个人微信,进专属粉丝群!