Compartilhar via

使用 REST 在Azure AI Search中设置集成矢量化

本文介绍如何使用技能集对 受支持数据源中的内容进行分块和向量化。 技能集调用 文本拆分技能文档布局技能 进行分块,以及附加到 支持的嵌入模型 进行区块矢量化的嵌入技能。 你还将了解如何将分块内容和矢量化内容存储在 向量索引中。

本文介绍使用 REST 进行的端到端工作流。 有关基于门户的说明,请参阅 快速入门:在 Azure 门户中向量化文本和图像

先决条件

支持的数据源

集成向量化适用于所有 受支持的数据源。 但是,本文重点介绍最常用的数据源,下表对此进行了介绍。

数据源 DESCRIPTION
Azure Blob 存储 此数据源适用于 Blob 和表。 必须使用标准性能(常规用途 v2)帐户。 访问层级可以是热层、温层或冷层。
Azure Data Lake Storage (ADLS) Gen2 这是启用了分层命名空间的Azure Storage帐户。 若要确保您有 Data Lake Storage,请检查“概述”页面上的“属性”选项卡。

Azure portal 中 Azure Data Lake Storage 帐户的截图。

支持的嵌入模型

使用以下嵌入模型之一进行集成向量化。 稍后部分提供了部署说明。

提供者 支持的模型
Azure AI Foundry Models 中的 Azure OpenAI1、2 text-embedding-ada-002
text-embedding-3-small
文本嵌入-3-大规模 (text-embedding-3-large)
Azure AI 服务多重服务资源3 对于文本和图像:Azure AI Vision多模态4

1 Azure OpenAI 资源的终结点必须具有自定义子域名,例如 https://my-unique-name.openai.azure.com。 如果在 Azure portal 中创建资源,则此子域在资源设置过程中自动生成。

2 出于计费目的,必须将您的 Azure AI 多服务资源附加到 Azure AI Search service中的技能集。 除非使用 无键连接(预览版) 创建技能集,否则这两个资源必须位于同一区域。

3 Azure AI Vision 多模式嵌入模型在 选择区域 中可用。

基于角色的访问控制

可以将 Microsoft Entra ID 与角色分配或基于密钥的身份验证结合使用,配合使用完全访问连接字符串。 若要Azure AI Search连接到其他资源,建议分配角色。

若要为向量化集成配置基于角色的访问,

  1. 在搜索服务,启用角色配置系统分配的托管标识

  2. 在您的数据源平台和嵌入模型提供商上,创建允许您的搜索服务访问数据和模型的角色分配。 请参阅 “准备数据 ”和 “准备嵌入模型”。

注释

免费搜索服务支持与Azure AI Search的基于角色的连接。 但是,它们不支持通过出站连接到 Azure Storage 或 Azure Vision 时使用托管标识。 这种缺乏支持要求你在免费搜索服务和其他Azure资源之间的连接上使用基于密钥的身份验证。

若要获得更安全的连接,请使用基本层或更高版本。 然后,可以为授权访问启用角色并配置托管身份。

在本部分中,您将检索 Azure AI 搜索服务的终结点和 Microsoft Entra 令牌。 这两个值都需要在 REST 请求中建立连接。

小窍门

以下步骤假定你在进行概念验证测试时使用的是基于角色的访问。 如果要将集成矢量化用于应用开发,请参阅通过标识将应用连接到 Azure AI Search

  1. 登录到 Azure portal 并选择Azure AI Search service。

  2. 若要获取搜索终结点,请在 “概述 ”页上复制 URL。 示例搜索终结点是 https://my-service.search.azure.cn

  3. 若要获取Microsoft Entra 令牌,请在本地系统上运行以下命令。 此步骤需要完成 快速入门:在没有密钥的情况下连接

    az account get-access-token --scope https://search.azure.cn/.default --query accessToken --output tsv
    

准备您的数据

在本部分中,通过将文件上传到 受支持的数据源、分配角色和获取连接信息,为集成矢量化准备数据。

  1. 登录到 Azure portal 并选择Azure Storage帐户。

  2. 在左窗格中,选择Data storage>Containers

  3. 创建容器或选择现有容器,然后将文件上传到容器。

  4. 要分配角色,请执行以下操作:

    1. 在左窗格中,选择Access Control (IAM)

    2. 选择添加>添加角色分配

    3. 作业函数角色下,选择 Storage Blob 数据读取者,然后选择 下一步

    4. 在“成员”下,选择“托管标识”,然后选择“选择成员”。

    5. 选择您的订阅和搜索服务的托管标识。

  5. 若要获取连接字符串,

    1. 在左窗格中,选择Security + networking>Access keys

    2. 复制任一连接字符串,并在稍后的Set variables中进行指定。

  6. (可选)将容器中的删除与搜索索引中的删除同步。 为了配置索引器以检测删除,请按照以下步骤操作:

    1. 在存储帐户上启用软删除。 如果使用性软删除,则不需要下一步。

    2. 添加自定义元数据,以便索引器可以扫描并确定哪些 blob 被标记为要删除。 为自定义属性指定描述性名称。 例如,可以命名属性“IsDeleted”并将其设置为 false。 对容器中的每个 Blob 重复此步骤。 如果要删除 Blob,请将属性更改为 true。 有关详细信息,请参阅从 Azure Storage 编制索引时的更改和删除检测

准备嵌入模型

在本部分中,你将通过分配角色、获取终结点和部署 supported embedding model,为集成向量化准备Azure AI 资源。

Azure AI Search 支持 text-embedding-ada-002、text-embedding-3-small 和 text-embedding-3-large。 在内部,Azure AI Search调用 Azure OpenAI 嵌入技能以连接到 Azure OpenAI。

  1. 登录到 Azure portal 并选择Azure OpenAI 资源。

  2. 要分配角色,请执行以下操作:

    1. 在左窗格中,选择Access control (IAM)

    2. 选择添加>添加角色分配

    3. 职位功能角色下,选择 Cognitive Services OpenAI User,然后选择 下一步

    4. 在“成员”下,选择“托管标识”,然后选择“选择成员”。

    5. 选择您的订阅和搜索服务的托管标识。

  3. 若要获取端点,请执行以下步骤:

    1. 在左窗格中,选择 “资源管理>密钥和终结点”。

    2. 复制 Azure OpenAI 资源的终结点。 稍后在 Set 变量中指定此 URL。

  4. 若要部署嵌入模型,请执行以下步骤:

    1. 登录到 Foundry 门户并选择Azure OpenAI 资源。

    2. 部署 支持的嵌入模型

    3. 复制稍后在 Set 变量中指定的部署和模型名称。 部署名称是所选的自定义名称,而模型名称是部署的模型,例如 text-embedding-ada-002