
RAG(检索增强生成)是指AI模型利用外部数据库获取相关信息并生成更准确响应的过程。
RAG的主要优势是更高的准确性和更低的成本,因为它无需重新训练模型。
RAG用于改进搜索引擎、构建更智能的聊天机器人以及为最新的问答系统提供支持。
RAG有不同的类型,例如代理式RAG、图RAG、多模态RAG、自适应RAG、推测性RAG、纠正性RAG、模块化RAG和混合RAG。
RAG系统由检索模块、知识库、集成层模块和生成器组成。
一些用于创建RAG应用的工具包括Meilisearch、LangChain、Pinecone、ChromaDB、Weaviate和FAISS。
RAG超越了语义搜索,它不仅检索相关文档,还利用这些信息生成新的、上下文准确的响应。相比之下,语义搜索仅限于呈现最相关的现有文档,而不生成新内容。
RAG也不同于CAG(上下文增强生成),因为RAG在处理过程中主动从数据库检索外部信息,而CAG则使用其预先接收的任何上下文。
现在让我们更详细地讨论RAG。
什么是RAG?
RAG是一个过程,其中AI模型在返回响应之前访问外部数据库以查找相关、最新的信息。
这可以比作一个学生在考试时查阅教科书以获取答案,而不是仅仅依靠记忆。
例如,如果你向客户服务聊天机器人询问公司的退货政策,传统的AI系统可能会产生幻觉,这意味着它们可能会自信地生成不正确或虚构的信息。聊天机器人可能会说在60天内接受退货,而实际政策只有30天。
但有了RAG,系统会首先检查你当前的政策文件,分离出相关信息,然后根据这些信息生成答案。
RAG可以帮助解决LLM(大型语言模型)工作方式中的局限性。LLM经过训练可以从文本中学习写作模式,但它们的知识会很快过时。RAG填补了这一知识空白。
让我们看看RAG有多么重要。
RAG为什么重要?
RAG之所以重要,是因为它有助于减少AI幻觉。
如果常规AI系统没有查询的答案,它们会提供错误信息、过时响应或返回来自不可靠来源的响应。
RAG通过强制AI在返回响应之前验证信息来解决这些问题。AI不是猜测或使用旧的训练数据,而是被迫搜索可靠和更新的来源。这意味着您可以获得更准确的答案,并且可以确切地看到信息来自何处。
让我们看看使用RAG的好处。
RAG有什么好处?
RAG的好处包括实时知识更新、经济高效的AI和最小化的错误信息等。
主要好处如下图所示
- 实时知识更新:传统AI模型受限于训练期间学习到的信息,这些信息可能会过时。RAG通过将模型连接到实时数据源来解决这个问题,使AI能够收集实时信息,例如突发新闻、当前市场数据或公司内部数据。
- 经济高效的AI实施:RAG不是花费更多资金重新训练AI模型来更新它们,而是将AI模型连接到外部数据库,使它们能够访问更新的信息。这节省了大量的训练成本,同时仍然提供了相关模型的优势。
- 最小化 错误 信息:AI模型产生幻觉并不少见。RAG通过将它们的响应锚定到实际和可验证的来源来最小化这一点。
- 透明的信息来源:RAG系统可以引用其来源,让用户在需要时验证信息并深入挖掘。
- 更好的组织监督:公司对暴露其数据持谨慎态度。RAG允许组织精确控制AI可以从哪些文档或数据源检索信息。这为企业提供了更好的监督,同时确保AI对他们的业务需求保持有用。
让我们看看RAG的一些基本用例。
RAG有哪些用例?
RAG通过使用受信任的数据源来增强AI。这使其在需要准确性、上下文和信息控制的行业中变得有价值。
RAG的主要用例如下:
- 智能客户支持:RAG允许AI客户支持聊天机器人利用真实的公司资源,而不是让客户对通用响应感到沮丧。例如,您可以使用Meilisearch索引内部资源,如产品手册、故障排除指南和政策文档,以便聊天机器人返回准确的答案,并明确引用您的公司文档。
- 公司内部搜索:大多数组织的信息分散在不同的系统中,使员工难以找到他们需要的东西。RAG可用于开发对话式搜索引擎,员工可以提出自然问题并获得精确答案。员工可以问诸如“我今年还剩多少假期?”之类的问题。答案将取决于他们在PTO数据库中的信息。
- 内容创作助手:许多作家和营销人员花费太多时间挖掘数据。RAG可以创建一个智能研究助手,从多个来源(如市场报告、过去的营销活动和行业文章)获取信息。
- 个性化推荐:电子商务和内容平台可以使用RAG创建更智能的推荐系统,这些系统不仅仅基于简单的算法来推荐商品。例如,您可以使用Meilisearch结合用户行为数据、产品信息和评论来创建用户可以信任的推荐。
RAG如何工作?
RAG通过搜索文档,找到相关信息,并利用这些信息生成准确的响应。
RAG应用的工作方式如下图所示:
1. 索引所有内容
在实施RAG之前,您需要准备并将所有要使用的信息分成更小的部分。这可以包括内部文档、手册、电子邮件、PDF等。
然后,每个信息片段都会被转换为一个嵌入,并存储在一个特殊的数据库中,该数据库旨在理解含义,而不仅仅是单词(一个向量数据库)。
2. 理解用户查询
当用户提出一个问题(例如“预订工作旅行的流程是什么?”)时,该查询也会使用与步骤1中相同的模型转换为嵌入。
3. 检索相关信息
系统将查询嵌入与存储的嵌入进行比较,并检索最相似的嵌入,即使措辞不同。
例如,它可以根据含义而不是精确术语将“旅行预订”与“旅行请求”连接起来。
4. 构建增强提示
RAG将检索到的文本片段与用户的问题结合起来构建一个提示。这为语言模型提供了它在训练期间没有的新鲜、相关的上下文。
5. 生成响应
语言模型使用此增强提示来生成答案。因为它基于真实、最新的信息(得益于RAG),所以输出更准确,更不容易产生幻觉。
让我们来看看各种类型的RAG系统。
RAG有哪些不同类型?
RAG因其不同的架构和广泛的用例而存在多种类型。
一些关键的RAG类型如下图所示
- 代理式RAG:代理式RAG是一种RAG类型,它赋予AI模型在检索结果之前进行思考和规划的能力。它将复杂问题分解为多个步骤,确定每个步骤所需的信息,并使用网络搜索或API获取更准确的答案。这使其非常适合研究和解决复杂问题。例如,它可以帮助产品经理探索市场趋势。
- 图RAG:图RAG使用知识图谱连接概念。它不仅提取文档,还定位概念之间结构化的关系——例如,“疟疾”与“蚊子”和“治疗方案”之间的关系。这在生物医学或学术研究等技术领域非常有用,因为事实或术语是相互关联的。
- 多模态RAG:多模态RAG旨在处理文本、图像、音频和视频。这在涉及屏幕截图或图表的产品支持中非常有用,甚至在结合解释和视觉效果的教育平台中也很有用。例如,它可以引导用户解释财务报告中的复杂图表。
- 自适应RAG:自适应RAG根据上下文或用户改变信息检索方式。例如,如果用户提出许多后续问题,它可以根据模式调整检索方式,使其更集中或更广泛。它甚至可以根据哪种方法效果更好来切换检索方法(从关键字到向量)。它旨在从交互中学习并随着时间的推移进行改进,而无需重新编程。
- 推测性RAG:在推测性RAG中,AI模型首先猜测答案可能是什么样子,然后检索信息以支持这些猜测。例如,当用户提出问题时,推测性RAG会生成不同的草稿,为每个草稿检索支持信息,然后选择最准确的草稿。它通常用于查询可能存在多种解释的情况。
- 纠正性RAG:纠正性RAG旨在检测和修复检索后的问题。如果模型发现不相关或误导性文档,它可以标记或删除它们。它还在回答之前仔细检查事实。它对于准确性至关重要的金融助手非常有用。例如,它可以确保投资答案有最新和最相关的数据支持。
- 模块化RAG:模块化RAG将每个系统组件视为一个模块,这意味着您有用于查询重写、检索、重新排名、摘要和答案生成的独立模块。这种设计使得测试和升级单个部分而无需重建整个系统变得更容易。例如,您可以从BM25切换到向量检索,而无需触及LLM。
- 对话式RAG:这通常用于对话。它侧重于记住对话中之前说过的话。因此,当用户问“那是哪一年?”时,系统知道“那”指的是什么。它非常适用于聊天机器人和教程平台。
- 多跳RAG:这专为需要多个步骤才能回答的问题而设计。它逐步检索文档,每个步骤都改进下一个步骤。这在学术研究工具中很有用。例如,它可以回答“美国最大的物流公司的增长率是多少?”通过首先识别公司,然后检索财务数据来计算其增长。
除了上面列出的RAG类型之外,您还可以根据其实现成熟度级别对RAG进行分类。有朴素RAG和高级RAG系统。
- 朴素RAG:RAG最基本的形式。它选择顶部搜索结果(通常使用简单的关键字匹配)并将其直接提供给语言模型。没有重新排名、过滤或上下文理解。它适用于简单问题,但难以处理复杂问题。它构建速度快但不十分智能。
- 高级RAG:它可以使用向量搜索、重新排名、查询重写或反馈循环来获得更好的结果。它旨在更智能、更快、更准确。您可以使用自定义工具,保留过去聊天的内存,甚至检查答案是否正确。高级RAG的一个很好的例子是客户支持工具。
RAG系统的组成部分有哪些?
如果您想知道如何构建RAG系统,首先了解其关键部分会有所帮助。
RAG系统的组成部分是:
- 知识库:知识库是所有参考信息的存储地。它可以包括文章、PDF、网站、手册、维基、报告等内容。这些内容经过处理并以易于搜索的方式存储。知识库越有组织和相关性,系统检索准确答案的能力就越强。
- 检索器:检索器搜索知识库,并根据用户的提问找到最相关的内容。它通常使用向量相似度(侧重于含义而非确切单词)来查找相似的嵌入。
- 集成层:集成层将所有内容整合在一起。它是RAG架构的中心。它接收用户的提示,将其发送给检索器,收集结果,并将其组织成生成器(语言模型)可以使用的格式。它处理格式化、提示构建或组合上下文等任务。在更高级的系统中,此层可能包括查询重写或重新排名以提高准确性。
- 生成器:生成器是RAG架构的最终组件。它是编写最终答案的语言模型。它接收检索到的信息,并将其与用户的输入相结合以生成响应。它不是凭空捏造,而是使用从知识库中提取的实际文档。常见的例子有GPT和Claude。
RAG应用使用哪些工具?
RAG工具使得将您的数据与强大的语言模型连接成为可能。
根据您的目标,这些工具分为不同的类别:存储和搜索文档、生成响应或管理提示。
一些值得考虑的RAG工具如下:
- Meilisearch:Meilisearch是一个超快速的搜索引擎,非常适合RAG设置。它可以结合关键字搜索和向量搜索,以获得精确匹配和智能、有意义的结果。您甚至可以插入嵌入模型,并通过一个简单的API处理所有事情。
- LangChain:LangChain是一个开源的Python包,充当编排层。它有助于连接检索器、嵌入和生成器,并将它们全部编织成一个完整的RAG管道。它还处理繁琐的集成工作,因此您不必为每个数据库、API或文件格式编写自定义连接器。
- Weaviate:Weaviate是一个功能齐全的向量数据库,支持混合搜索。它还包括过滤器、元数据和可扩展查询。它非常适合生产级RAG,需要灵活性和实时响应。
- FAISS:FAISS是Meta构建的向量搜索库。它允许您大规模索引嵌入并进行语义相似性查找。当您需要RAG理解含义而不仅仅是关键字时,它是理想选择。
- Haystack:Haystack是一个端到端框架,结合了文档检索、问答和生成组件。它是构建搜索和QA系统的好工具,其中所有组件都需要顺利协同工作。
RAG中使用了哪些高级技术?
高级RAG技术指的是改进RAG系统检索和使用信息来回答查询的更智能的方法。
这些技术不仅仅是搜索文档和生成响应,它们帮助RAG系统更深入地思考。这可能通过选择更好的来源、根据问题调整响应方式,或者在简单答案不足时进行更深入的挖掘来实现。
目标是使RAG系统更快、更准确,尤其是在实际应用中。
一些高级RAG技术包括混合搜索、重新排序和上下文压缩、查询扩展、多跳推理、上下文检索、自适应检索和自我反思。
RAG和语义搜索有什么区别?
RAG和语义搜索的主要区别在于,RAG是一个完整的系统,它检索相关信息,然后使用LLM根据该上下文生成答案。
语义搜索只专注于检索部分。它找到概念上与查询相似的文档并按原样返回它们。
例如,假设您是一名工程师,问“我们系统中如何处理用户身份验证?”
- 一个语义搜索系统可能会返回三份内部文档:一份关于OAuth,一份关于令牌存储,一份关于登录流程。您需要通读它们才能拼凑出答案。
- 一个RAG系统会检索相同的文档,提取相关部分,然后生成一个直接、连贯的答案,例如:“您的系统使用OAuth 2.0进行身份验证,将访问令牌存储在加密的Redis中,并通过自定义API网关处理登录。”
RAG和微调有什么区别?
RAG和微调的主要区别在于,RAG允许AI模型在查询时访问知识库。它不会改变模型的权重,只会改变它所能访问的知识。
微调通过对特定数据进行训练来教模型新知识。在这种情况下,它帮助模型学习和存储新知识。
RAG与微调的区别在于,前者是在需要时借用知识,后者是将知识从头开始构建到模型中。
RAG和提示工程有什么区别?
RAG和提示工程之间的主要区别在于,RAG提取外部知识来帮助AI模型更好地响应。相反,提示工程侧重于用户直接发送给模型的内容。
RAG提供对最新、相关信息的访问。
提示工程涉及您如何向模型提问。
RAG改善了模型当前所知的知识,而提示工程主要塑造了它的响应方式。
它们是不同的工具,但当它们一起使用时,可以提升模型的性能。
RAG和CAG(缓存增强生成)有什么区别?
RAG和CAG的主要区别在于,RAG在每次提问时都会从实时知识库中提取新鲜信息,而CAG则重复使用之前缓存的结果。
CAG速度更快,成本更低,但RAG能更好地处理新的或意外的问题。
RAG和向量数据库有什么区别?
RAG和向量数据库的主要区别在于,RAG是一种通过在响应前检索相关上下文来改进语言模型生成答案的方法,而向量数据库是该过程中使用的工具,用于使用嵌入有效地存储和搜索信息。
RAG是整体技术,而向量数据库是使其工作关键组件之一。
RAG在构建可信搜索中的作用
随着对AI系统需求的增长,RAG将在弥合静态数据和动态人类查询之间的鸿沟方面发挥越来越核心的作用。
无论您是为内部知识助手提供动力、改进客户支持,还是创建更智能的内容工作流程,RAG都提供了一种灵活且可扩展的解决方案,可以减少幻觉并提高对AI输出的信任。