跳到主要内容

向量存储 RAG

检索增强生成(Retrieval Augmented Generation,RAG)是一种在您的数据上训练 LLM 并进行查询的模式。

RAG 由向量存储支持,这是一个存储已摄入数据嵌入的向量数据库。

这实现了向量搜索,一种更强大且具有上下文感知的搜索方式。

我们为这个入门流程选择了 Astra DB 作为向量数据库,但您可以使用 NebulaAIFlow 的任何向量数据库选项。

前提条件

  • OpenAI API 密钥
  • 具有以下条件的 Astra DB 向量数据库:
    • 具有读写数据库权限的 Astra DB 应用程序令牌
    • 在 Astra 中创建的集合或在 Astra DB 组件中创建的新集合

打开 NebulaAIFlow 并启动新项目

  1. 在 NebulaAIFlow 仪表板中,点击新建流程
  2. 选择向量存储 RAG
  3. 向量存储 RAG流程创建完成。

构建向量 RAG 流程

向量存储 RAG 流程由两个独立的流程组成,用于摄入和查询。

加载数据流程(屏幕底部)创建一个可搜索的索引,用于查询上下文相似性。 此流程使用来自本地文件的数据填充向量存储。 它从本地文件摄入数据,将其分割成块,在 Astra DB 中建立索引,并使用 OpenAI 嵌入模型为这些块计算嵌入。

检索流程(屏幕顶部)将用户的查询嵌入为向量,这些向量与加载数据流程中的向量存储数据进行上下文相似性比较。

  • 聊天输入调试接收用户输入。
  • OpenAI 嵌入将用户查询转换为向量形式。
  • Astra DB使用查询向量执行相似性搜索。
  • 解析数据处理检索到的数据块。
  • 提示将用户查询与相关上下文结合。
  • OpenAI使用提示生成响应。
  • 聊天输出将响应返回到调试
  1. 配置 OpenAI 模型组件。

    1. 要为 OpenAI 组件创建全局变量,在 OpenAI API 密钥字段中,点击 全局按钮,然后点击添加新变量
    2. 变量名称字段中,输入 openai_api_key
    3. 字段中,粘贴您的 OpenAI API 密钥(sk-...)。
    4. 点击保存变量
  2. 配置 Astra DB 组件。

    1. Astra DB 应用程序令牌字段中,添加您的 Astra DB 应用程序令牌。 组件连接到您的数据库并用现有数据库和集合填充菜单。
    2. 选择您的数据库。 如果您没有集合,选择新建数据库。 填写名称云提供商区域字段,然后点击创建数据库创建需要几分钟时间
    3. 选择您的集合。集合在您的 Astra DB 部署中创建,用于存储向量数据。
    信息

    如果您选择通过 Astra 的向量化服务使用 Nvidia 嵌入的集合,嵌入模型端口将被移除,因为您已经使用 Nvidia NV-Embed-QA 模型为此集合生成了嵌入。组件从集合中获取数据,并使用相同的嵌入进行查询。

  3. 如果您没有集合,在组件中创建一个新集合。

    1. 选择新建集合

    2. 填写名称嵌入生成方法嵌入模型维度字段,然后点击创建

      您对嵌入生成方法嵌入模型的选择取决于您是想使用通过 Astra 的向量化服务由提供商生成的嵌入,还是由 NebulaAIFlow 中的组件生成的嵌入。

      • 要使用通过 Astra 的向量化服务由提供商生成的嵌入,从嵌入生成方法下拉菜单中选择模型,然后从嵌入模型下拉菜单中选择模型。
      • 要使用 NebulaAIFlow 中组件生成的嵌入,为嵌入生成方法嵌入模型字段都选择自带。在这个入门项目中,嵌入方法和模型的选项是连接到 Astra DB 组件的 OpenAI 嵌入组件。
      • 维度值必须与您的集合的维度匹配。如果您使用通过 Astra 的向量化服务生成的嵌入,则不需要此字段。您可以在 Astra DB 部署中的集合中找到此值。

如果您使用了 NebulaAIFlow 的全局变量功能,RAG 应用程序流程组件已经配置了必要的凭据。

运行向量存储 RAG 流程

  1. 点击调试按钮。在这里,您可以与使用您创建的数据库上下文的 AI 进行对话。
  2. 输入消息并按回车键。(尝试输入类似"你知道哪些主题?"的内容)
  3. 机器人将回应一个您已嵌入数据的摘要。