Vector store RAG
检索增强生成(Retrieval Augmented Generation,简称 RAG)是一种使用您的数据训练大语言模型(LLM)并进行查询的模式。
RAG 基于向量存储支持,这是一个存储已摄取数据嵌入向量的向量数据库。
这使得向量搜索成为可能,这是一种更强大、更具上下文感知能力的搜索方式。
我们为这个入门流程选择了 Astra DB 作为向量数据库,但您也可以使用 Langflow 的任何其他向量数据库选项。
前提条件
- 正在运行的 Langflow 实例
- OpenAI API 密钥
- Astra DB 向量数据库,包含以下内容:
- 具有数据库读写权限的 Astra DB 应用程序令牌
- 在 Astra 中创建的集合,或在 Astra DB 组件中创建的新集合
打开 Langflow 并开始新项目
- 在 Langflow 仪表板中,点击新建流程。
- 选择向量存储 RAG。
- 向量存储 RAG 流程已创建。
构建向量 RAG 流程
向量存储 RAG 流程由两个独立的流程组成,分别用于数据摄取和查询。
加载数据流程(屏幕底部)创建一个可搜索的索引,用于查询上下文相似性。 此流程使用本地文件中的数据填充向量存储。 它从本地文件摄取数据,将其分割成块,在 Astra DB 中进行索引,并使用嵌入模型组件为这些块计算嵌入向量。
检索器流程(屏幕顶部)将用户的查询嵌入为向量,然后将这些向量与加载数据流程中的向量存储数据进行比较,以找到上下文相似性。
- 聊天输入接收来自运行环境的用户输入。
- 嵌入模型将用户查询转换为向量形式。
- Astra DB 使用查询向量执行相似性搜索。
- 解析器处理检索到的数据块。
- 提示词将用户查询与相关上下文相结合。
- 语言模型使用提示词和 OpenAI LLM 生成响应。
- 聊天输出将响应返回到运行环境。
-
将您的 OpenAI API 密钥添加到语言模型组件中。
您可以选择为 OpenAI API 密钥创建一个全局变量。
- 在 OpenAI API Key 字段中,点击 地球图标,然后点击添加新变量。
- 在变量名称字段中,输入
openai_api_key
。 - 在值字段中,粘贴您的 OpenAI API 密钥(
sk-...
)。 - 点击保存变量。
-
配置 Astra DB 组件。
- 在 Astra DB Application Token 字段中,添加您的 Astra DB 应用程序令牌。 该组件会连接到您的数据库并在菜单中填充现有的数据库和集合。
- 选择您的数据库。 如果您没有集合,请选择新建数据库。 填写名称、云提供商和区域字段,然后点击创建。数据库创建需要几分钟时间。
- 选择您的集合。集合在您的 Astra DB 部署中创建,用于存储向量数据。
信息如果您选择了通过 Astra 的向量化服务使用 Nvidia 嵌入的集合,嵌入模型端口将被移除,因为您已经使用 Nvidia
NV-Embed-QA
模型为此集合生成了嵌入向量。该组件从集合中获取数据,并使用相同的嵌入向量进行查询。 -
如果您没有集合,请在该组件内创建一个新集合。
-
选择新建集合。
-
填写名称、嵌入生成方法、嵌入模型和维度字段,然后点击创建。
您对嵌入生成方法和嵌入模型的选择取决于您是想使用通过 Astra 向量化服务由提供商生成的嵌入向量,还是由 Langflow 中的组件生成的嵌入向量。
- 要使用通过 Astra 向量化服务由提供商生成的嵌入向量,请从嵌入生成方法下拉菜单中选择模型,然后从嵌入模型下拉菜单中选择模型。
- 要使用由 Langflow 组件生成的嵌入向量,请在嵌入生成方法和嵌入模型字段中都选择自带模型。在这个入门项目中,嵌入方法和模型的选项是连接到 Astra DB 组件的 OpenAI Embeddings 组件。
- 维度值必须与您集合的维度匹配。如果您使用通过 Astra 向量化服务生成的嵌入向量,则不需要此字段。您可以在 Astra DB 部署的集合中找到此值。
更多信息请参见 DataStax Astra DB Serverless 文档。
-
如果您使用了 Langflow 的全局变量功能,RAG 应用程序流程组件已经配置了必要的凭据。
运行向量存储 RAG 流程
- 要运行流程,请点击 运行环境。 在运行环境中,您可以与使用您创建的数据库上下文的 LLM 进行聊天。
- 输入消息并按 Enter 键。尝试输入类似"你了解哪些主题?"的内容。
- 机器人将响应您嵌入数据的摘要。