当前位置:首页|资讯|OpenAI

自动化 RAG 索引:Azure OpenAI 和 AI 搜索源文档处理

作者:等保测评办理发布时间:2024-11-21

使用RAG(检索增强生成)应用程序时,检索器(例如Azure AI Search)在获取语言模型最相关结果以向最终用户提供响应方面起着至关重要的作用。存储与特定用户搜索语义相似的数据表示(例如向量)至关重要,它们是向量和混合搜索中的关键组件。

解析、分块、矢量化数据并将其存储在索引中的任务由 Azure AI Search 功能(称为集成矢量化)处理。对于受支持的数据源,此功能还支持自动数据提取、丰富和处理。

参考链接:https://azureopenai.cloudallonline.com/?zxwsh213
微软 Azure OpenAI 企业账户接口申请

但是,有许多数据源并未直接与 AI Search 集成,但可以通过Azure Logic Apps中提供的各种连接器访问。Azure Logic Apps引入了新功能,简化了从其连接器处理非结构化数据文档所需的每个步骤。现在,数据提取、提取文件、解析数据、分块、矢量化和将数据索引到 Azure AI Search 中都简化为一个集成流程。此外,Azure Logic Apps现在提供用于高需求连接器的模板,并为 RAG 就绪的 AI Search 索引提供预定义的索引工作流,从而简化了这些工作流的创建。其中一些模板包括位于 SharePoint Online、Azure Files、SFTP 等中的文件的索引管道。

如何开始

先决条件:

  • Azure Logic Apps 连接器支持的包含非结构化数据的数据源Azure Logic App(工作流服务计划)Azure AI 搜索服务已部署文本嵌入模型的 Azure OpenAI 服务Azure Logic App 内置模板。这样您就不必创建自己的工作流。请注意,您也可以创建自己的工作流。但是,本博客文章不介绍这一点。本教程介绍如何在Azure 文件共享中索引在工作流创建后添加的文件。

Azure AI Search 索引创建

此时,此集成需要在 Azure AI Search 中创建一个具有以下架构的索引(至少如此)。在本文后面,我们将解释如何更新工作流以相应地将更多字段映射到每个文档块。

Azure AI 搜索索引:此集成所需的最低架构

注意: 以下示例索引定义包含一个具有 3072 个维度的矢量字段,对应于 Azure OpenAI text-embedding-3-large 模型。如果您使用不同的 Azure OpenAI 嵌入模型或不同的维度,则必须在创建索引之前相应地调整索引定义。

{

  "name": "chunked-index",

  "fields": [

    {

      "name": "id",

      "type": "Edm.String",

      "searchable": true,

      "retrievable": true,

      "key": true

  },

    {

      "name": "documentName",

      "type": "Edm.String",

      "searchable": true,

      "retrievable": true

    },

    {

      "name": "content",

      "type": "Edm.String",

      "searchable": true,

      "retrievable": true

    },

    {

      "name": "embeddings",

      "type": "Collection(Edm.Single)",

      "searchable": true,

      "filterable": false,

      "retrievable": true,

      "dimensions": 3072,

      "vectorSearchProfile": "vector-profile"

    }

  ],

  "vectorSearch": {

    "algorithms": [

      {

        "name": "vector-config",

        "kind": "hnsw",

        "hnswParameters": {

          "metric": "cosine",

          "m": 4,

          "efConstruction": 400,

          "efSearch": 500

        },

        "exhaustiveKnnParameters": null

      }

    ],

    "profiles": [

      {

        "name": "vector-profile",

        "algorithm": "vector-config"

      }

    ]

  }

}

Azure AI Search 索引:查询时矢量化

如果您需要 Azure AI Search 在查询时对数据进行矢量化,而不是从 RAG 应用程序的协调器端执行此操作,则可以对索引使用以下 JSON 定义。您需要确保更改 Azure OpenAI 终结点并更改为您自己的终结点。此外,为您的 AI 搜索服务创建服务托管标识,并按照说明 在 Azure OpenAI 服务中分配认知服务 OpenAI 用户角色。

{

  "name": "chunked-index",

  "fields": [

    {

      "name": "id",

      "type": "Edm.String",

      "searchable": true,

      "retrievable": true,

      "key": true

  },

    {

      "name": "documentName",

      "type": "Edm.String",

      "searchable": true,

      "retrievable": true

    },

    {

      "name": "content",

      "type": "Edm.String",

      "searchable": true,

      "retrievable": true

    },

    {

      "name": "embeddings",

      "type": "Collection(Edm.Single)",

      "searchable": true,

      "filterable": false,

      "retrievable": true,

      "dimensions": 3072,

      "vectorSearchProfile": "vector-profile"

    }

  ],

  "vectorSearch": {

    "algorithms": [

      {

        "name": "vector-config",

        "kind": "hnsw",

        "hnswParameters": {

          "metric": "cosine",

          "m": 4,

          "efConstruction": 400,

          "efSearch": 500

        },

        "exhaustiveKnnParameters": null

      }

    ],

    "profiles": [

      {

        "name": "vector-profile",

        "algorithm": "vector-config",

"vectorizer": "azureOpenAI-vectorizer"

      }

    ],

    "vectorizers": [

      {

        "name": "azureOpenAI-vectorizer",

        "kind": "azureOpenAI",

        "azureOpenAIParameters": {

          "resourceUri": "https://<yourAOAIendpoint>.openai.azure.com",

          "deploymentId": "text-embedding-3-large",

          "modelName": "text-embedding-3-large"

        }

    ],

  }

}

在 Azure 门户中根据 JSON 创建索引

你可以这样使用上面的 JSON 模板从 Azure 门户创建索引:

  • 转到您的 AI 搜索服务,选择搜索管理->索引,然后单击添加索引 ,然后从下拉菜单中选择添加索引(JSON )。

图 1 - 使用 Azure 门户从 JSON 创建 Azure AI Search 索引

  • 删除右侧出现的JSON结构,根据需要复制上面的JSON模板并粘贴到右侧画布中。点击保存。

图 2 - 复制本教程中提供的用于创建索引的 JSON 模板

  • 使用模板创建的索引称为chunked-index,我们将在此示例中将其用作目标索引。 

使用 Azure Logic App 工作流模板从非结构化数据源导入数据

  • 转到您的 Logic App 资源,单击“工作流” > “工作流”,然后单击“+添加”>“从模板添加”

图 3 - 从 Azure Logic App 中的模板添加工作流

  • 在搜索框中查找azure ai search,然后选择与您的数据源一致的模板。请注意,您应该能够使用任何 Azure Logic App 支持的非结构化数据连接器,因此您可以使用它以相同的分块和嵌入模式将数据导入 AI Search,但您需要根据需要修改工作流程。在本例中,我们将选择“ Azure 文件:使用 Azure OpenAI 和 Azure AI Search 按计划提取和索引文档 - RAG 模式”

图 4 - 选择 Azure Files RAG 模板

  • 选择使用此模板

图 5 - 查看工作流并选择它

  • 选择工作流名称并输入。单击“下一步”。

图 6 - 命名您的工作流程

  • 单击模板配置中每个连接的“连接”,并添加与数据源相对应的现有端点(在本例中为 Azure 文件、Azure AI 搜索服务和 AOAI 服务)

图 7 - 配置连接器连接

此处提供了每个连接配置的示例。请确保您对资源具有最低程度的贡献者访问权限,以建立连接。

对于 Azure 文件连接:您的 Azure 存储帐户 URI 位于 Azure 存储帐户设置 > 端点 > 文件服务下,域为.http://file.core.windows.net。您可以在存储帐户安全 + 网络 > 密钥 > 连接字符串下找到连接字符串。

复制 URI 并将其添加到存储帐户 URI配置和连接字符串中的相应字段中。

图 8 - Azure 文件连接配置

对于 Azure AI Search 连接:Azure AI Search 端点 URL 位于 AI Search 服务概述 > 基本信息 > URL下,域为.http://search.windows.net。

如果您的设置是使用管理密钥,您可以在 AI 搜索服务设置 > 密钥 > 主管理密钥下找到它。

图 9-AI 搜索连接

对于 Azure OpenAI 连接:Azure OpenAI 端点 URL 位于您的 Azure OpenAI 服务资源管理>密钥和端点>端点下,后缀域为.http://openai.azure.com。对于密钥设置,复制 Key1 并复制到身份验证密钥配置中。

图 10 - Azure OpenAI 连接

  • 配置完所有服务连接后,单击“下一步”。

图 11-连接配置完成

填写以下索引配置详细信息。假设:

  • 您已经使用上述模板之一创建了索引。您在 AOAI 部署实例中有一个名为“text-embeddings-3-large”的 Azure OpenAI 嵌入模型。

索引工作流配置详细信息:

  • AISearch 索引名称:这是我们在本教程中创建的索引的名称。OpenAI 文本嵌入部署标识符 = text-embedding-3-large。这是 Azure OpenAI 嵌入模型部署的名称:这是嵌入模型部署名称(不是模型名称 - 但在这种情况下是相同的)。

图 12 - Azure OpenAI 嵌入模型名称

  • Azure 文件存储文件夹名称:这是您的文件所在的 Azure 文件共享的名称。

图 13 - Azure 文件共享名称

  • 单击“下一步”,然后单击“创建”。

图 14 - 查看工作流详细信息并创建

  • 单击“转到我的工作流”并等待初始运行完成。 计划触发此操作以检查是否有任何新文件添加到 Azure 文件共享。将新文件添加到配置的文件共享后,您必须看到它们反映在 AI 搜索索引中。在索引中获得初始矢量化数据后,您可以使用本教程中的索引从您首选的 RAG 编排器(例如Azure AI Studio)与您的数据进行聊天。要在Azure AI Studio中使用 Azure AI Search 索引,请转到Project Playground > 聊天 > 添加数据 > 添加新数据源,然后按照说明设置索引。注意:如果您在本教程中使用最小 JSON 配置创建了索引,则必须按照此处 Azure AI Studio 文档中的说明进行操作。但是,如果您使用了添加索引矢量化器的选项,则必须从 AI Studio 配置中删除矢量选项,因为索引将直接联系您的嵌入模型。

图 15 - Azure AI Studio 聊天游乐场“添加您的数据”

其他注意事项

为了获得最佳的 AI 搜索相关性,请考虑使用将向量和关键字搜索与语义排序器相结合的混合方法。这种方法通常对许多用例更有效。有关更多信息,请访问:  Azure AI Search 使用混合搜索超越向量搜索。本案例特别关注固定分块和纯文本场景。


Copyright © 2026 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1