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