向量存储 RAG
检索增强生成(简称 RAG)是一种利用你的数据训练大型语言模型(LLM)并对其进行查询的模式。
RAG 由向量存储提供支持,它是一种向量数据库,用于存储摄取数据的嵌入向量。
这使得向量搜索成为可能,这是一种更强大且感知上下文的搜索方式。
我们选择 Astra DB 作为此入门流程的向量数据库,但你可以使用 Langflow 的任何向量数据库选项。
先决条件
- 一个运行中的 Langflow 实例
- 一个 OpenAI API 密钥
- 一个 Astra DB 向量数据库,具备以下条件
- 一个拥有数据库读写权限的 Astra DB 应用程序令牌
- 在 Astra 中创建的集合,或在 Astra DB 组件中创建的新集合
打开 Langflow 并启动一个新项目
- 在 Langflow 控制面板中,点击 New Flow。
- 选择 Vector Store RAG。
- 已创建 Vector Store RAG 流程。
构建向量 RAG 流程
向量存储 RAG 流程由两个独立的流程构成:一个用于数据摄取,一个用于查询。
Load Data Flow(屏幕底部)创建了一个可搜索的索引,用于查询上下文相似性。此流程使用本地文件中的数据填充向量存储。它从本地文件摄取数据,将其分割成块,在 Astra DB 中建立索引,并使用 OpenAI 嵌入模型计算这些块的嵌入向量。
Retriever Flow(屏幕顶部)将用户的查询嵌入为向量,然后将其与来自 Load Data Flow 的向量存储数据进行比较,以查找上下文相似性。
- Chat Input 从 Playground 接收用户输入。
- OpenAI Embeddings 将用户查询转换为向量形式。
- Astra DB 使用查询向量执行相似性搜索。
- Parser 处理检索到的数据块。
- Prompt 将用户查询与相关上下文结合。
- OpenAI 使用提示生成响应。
- Chat Output 将响应返回给 Playground。
-
配置 OpenAI 模型组件。
- 要为 OpenAI 组件创建全局变量,在 OpenAI API Key 字段中,点击 Globe 按钮,然后点击 Add New Variable。
- 在 Variable Name 字段中,输入
openai_api_key
。 - 在 Value 字段中,粘贴你的 OpenAI API 密钥(
sk-...
)。 - 点击 Save Variable。
-
配置 Astra DB 组件。
- 在 Astra DB Application Token 字段中,添加你的 Astra DB 应用程序令牌。该组件会连接到你的数据库,并用现有的数据库和集合填充菜单。
- 选择你的 Database。如果你没有集合,选择 New database。填写 Name、Cloud provider 和 Region 字段,然后点击 Create。数据库创建需要几分钟时间。
- 选择你的 Collection。集合是在你的 Astra DB 部署中创建的,用于存储向量数据。
信息如果你选择通过 Astra 的 vectorize 服务嵌入 Nvidia 的集合,则会移除 Embedding Model 端口,因为你已使用 Nvidia
NV-Embed-QA
模型为此集合生成了嵌入向量。该组件会从集合中获取数据,并使用相同的嵌入向量进行查询。 -
如果你没有集合,请在该组件内创建一个新集合。
-
选择 New collection。
-
填写 Name、Embedding generation method、Embedding model 和 Dimensions 字段,然后点击 Create。
你对 Embedding generation method 和 Embedding model 的选择取决于你是想使用提供商通过 Astra 的 vectorize 服务生成的嵌入向量,还是想使用 Langflow 中的组件生成的嵌入向量。
- 要使用提供商通过 Astra 的 vectorize 服务生成的嵌入向量,请从 Embedding generation method 下拉菜单中选择方法,然后从 Embedding model 下拉菜单中选择模型。
- 要使用 Langflow 中组件生成的嵌入向量,请在 Embedding generation method 和 Embedding model 字段中都选择 Bring your own。在此入门项目中,嵌入方法和模型的选项是连接到 Astra DB 组件的 OpenAI Embeddings 组件。
- Dimensions 值必须与你的集合的维度匹配。如果你使用通过 Astra 的 vectorize 服务生成的嵌入向量,则此字段不是必需的。你可以在你的 Astra DB 部署中的 Collection 中找到此值。
更多信息,请参阅 DataStax Astra DB Serverless 文档。
-
如果你使用了 Langflow 的 Global Variables 功能,则 RAG 应用程序流程组件已配置好所需的凭据。
运行向量存储 RAG 流程
- 点击 Playground 按钮。在这里,你可以与使用你创建的数据库中的上下文的人工智能进行聊天。
- 输入一条消息并按 Enter 键。(试试输入类似“你知道哪些话题?”的内容)
- 聊天机器人将回复你已嵌入数据的摘要。