【用于生成AI应用程序的向量搜索】④ 搜索扩展生成(RAG)模式

首先

Apache Cassandra 和 DataStax Astra DB 作为向量数据库的背景

根据DataStax工程师的提案,为了应对2022年开始的生成AI的兴起,对Apache Cassandra进行了一项扩展提案,增加了向量搜索功能,并可在DataStax的Cassandra托管服务Astra DB中使用。本系列文章基于DataStax公司发布的白皮书的内容,作为这一趋势的一部分。

来源和日本语版

这个系列文章的原始资料可以在以下获取。

 

在博客文章中,我们并不是忠实地翻译,而是更注重易读性,并进行了一些省略。
如果您希望获取没有省略的日文版白皮书,请联系info-jp@datastax.com,我们将提供给您。

生成用于AI应用程序的向量搜索的模式,即扩展检索生成(RAG)模式。

LLM的界限和RAG的核心思想。

如果LLM直接使用原始数据,生成的响应可能在特定应用程序中无法发挥作用。这是因为LLM存储的知识通常仅限于模型训练所使用的数据,其中不包括互联网上通常无法获取的最新数据或特定领域相关的专有数据。

在搜索扩展生成(RAG)的核心思想是将LLM与用户请求的任务解决相关的特定文档进行整合。

RAG应用程序的基本流程

下面的图3展示了使用RAG的应用程序是如何运作的。

使用RAG模式的应用基本流程为图3。

image.png

首先,查询将被提交给应用程序。在生成AI应用程序中,查询可以以各种形式表达。例如,可以是类似于搜索引擎的关键词,比如“乔治·华盛顿的历史”,或者是具体的问题,比如“乔治·华盛顿是什么时候出生的”,甚至是命令性的句子,比如“写一篇关于乔治·华盛顿一生的文章”。

译者附注:对LLM的查询是通过自然语言进行的,而不是像SQL那样结构化。因此,出现了诸如”查询之间的相似性”等问题。例如,如果过去曾提出过与现在相同但措辞略有不同的问题,可能无需调用LLM就能从答案历史中得到答案。此外,还存在一种更实用的用法,即在查询中提供示例答案,对于包含此类(不同于简单任务指示的)信息时非常有用。

使用与独自数据源的嵌入相同的嵌入模型来对查询进行嵌入,并通过使用该查询的嵌入来进行向量搜索,从而可以搜索与该查询最相似的数据。基于数据之间的相似性进行高效搜索是通过向量搜索实现的重要功能。

这种方法有以下好处。

减轻幻觉(从精确度角度)

在人工智能领域中,我们将输出看似合理但与事实不符或不适合背景的回答称为“幻觉”。RAG设计模式通过向LLM指示集中在通过向量搜索提取的文档上生成回应。通过使用更适合上下文的文档集而不是整个LLM训练数据集,这样生成的回答将更准确地理解用户的意图。

专有数据的利用

假如企業要開發LLM應用程式的話,他們可以直接向LLM提供與該應用程式需求相關的企業擁有的資訊和文件,以便將LLM生成的回應內容與企業的產品、服務和使用案例相符。

「LLM 的『训练』之便捷性(从实现的角度来看)」

RAG模型是一种调整模型以适应特定应用程序的方法,实施和维护都相对容易。无论是添加新的专有数据文档,修改现有文档,还是当新的数据源可用时更新嵌入数据并将模型保持在最新状态以及确保响应准确,这都可以轻松实现。

翻译者附注:减轻幻觉和使用专有数据不仅仅适用于像RAG这样的提示工程案例,在微调中也是共同的因素。另一方面,在提示工程中,将其与向量数据库结合使用的好处是可以动态地响应用户的查询。如果想在微调中实现这一点,就需要从想象用户的查询开始。

应用程序配置和代理

下面的图3.1概述了使用RAG运行应用程序或服务的架构。

图3.1 使用RAG模式的架构

image.png

在这个架构中,引入了概念代理。代理可以被看作是自动化的推理和决策引擎(组件)。代理接收来自用户的输入,也就是查询,并根据它来决定要执行什么操作。

在第三个案例中介绍了一个例子,代理人的任务包括用户查询的嵌入、执行向量搜索以及创建包含搜索结果的LLM提示等一系列基本过程。
在更复杂的应用中,可以将任务划分为多个子任务,并根据需要判断是否需要使用外部工具(如互联网搜索)来解决问题,或者使用代理人来存储和维护应用程序的内存中的数据。

向量数据库的意义

在这种情况下,通过使用向量数据库来保存嵌入数据并执行向量搜索,可以获得将可用数据量扩展到非常大规模数据集的同时保持文档搜索速度性能的优点。向量数据库具备高效实现相似性搜索的功能。

广告
将在 10 秒后关闭
bannerAds