你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:在 Azure 门户中使用搜索资源管理器搜索图像

本快速入门介绍如何在 Azure 门户中使用“导入和矢量化数据”向导开始使用图像搜索。 它还演示如何使用搜索资源管理器运行基于图像的查询。

示例数据由 azure-search-sample-data 存储库中的图像文件组成,但你可以使用不同的图像并仍按演练操作。

先决条件

  • Azure 订阅。 免费创建一个

  • Azure AI 服务多服务帐户,用于图像矢量化和光学字符识别 (OCR)。 图像矢量化需要 Azure AI 视觉多模态嵌入。 查看文档,获取更新的区域列表。

  • 用于编制索引和查询的 Azure AI 搜索。 它可以位于任何层上,但必须与 Azure AI 多服务位于同一区域

    确定了可以编制索引的 Blob 数的服务层。 我们使用了免费层来创建本演练,并将内容限制为 10 个 JPG 文件。

  • 用于将图像文件存储为 Blob 的 Azure 存储。 使用 Azure Blob 存储或 Azure Data Lake Storage Gen2(具有分层命名空间的存储帐户)、标准性能(常规用途 v2)帐户。 访问层可以是热访问层、冷访问层和寒访问层。

上述所有资源必须启用公共访问权限,以便门户节点可以访问它们。 否则,向导将失败。 运行向导后,你可以为集成组件启用防火墙和专用终结点以确保安全。 有关详细信息,请参阅导入向导中的安全连接

如果专用终结点已存在并且你无法禁用它们,则另一种选择是在虚拟机上从脚本或程序运行相应的端到端流。 虚拟机必须与专用终结点位于同一虚拟网络上。 下面是用于集成矢量化的 Python 代码示例。 同一 GitHub 存储库中还包含其他编程语言的示例。

免费搜索服务支持对与 Azure AI 搜索的连接进行基于角色的访问控制,但它不支持与 Azure 存储或 Azure AI 视觉的出站连接上的托管标识。 此支持级别意味着必须在免费搜索服务与其他 Azure 服务之间的连接中使用基于密钥的身份验证。 要建立更安全的连接:

  • 请使用基本层或更高层级。
  • 配置托管标识和角色分配,以允许来自其他 Azure 服务上 Azure AI 搜索的请求。

检查空间

如果开始使用免费服务,则只能使用三个索引、三个数据源、三个技能集和三个索引器。 在开始之前,请确保有空间存储额外的项目。 本快速入门将为每个对象创建一个。

准备示例数据

  1. unsplash 签名图像文件夹下载到本地文件夹,或查找自己的一些图像。 在免费搜索服务中,保留不到 20 个图像文件,以使其处于扩充处理的免费配额范围内。

  2. 使用你的 Azure 帐户登录到 Azure 门户,并转到 Azure 存储帐户。

  3. 在左侧面板中,在“数据存储”下选择“容器”

  4. 创建新的容器,然后上传图像。

启动向导

如果搜索服务和 Azure AI 服务位于同一受支持区域和租户中,并且 Azure 存储 Blob 容器使用的是默认配置,则可以启动向导。

  1. 使用 Azure 帐户登录到 Azure 门户,然后转到 Azure AI 搜索服务。

  2. 在“概述”页上,选择“导入和矢量化数据”

    屏幕截图显示了用于打开向导以导入和矢量化数据的命令。

连接到数据库

下一步是连接到提供图像的数据源。

  1. 在“设置数据连接”页上,选择“Azure Blob 存储”。

  2. 指定 Azure 订阅。

  3. 对于 Azure 存储,请选择提供数据的帐户和容器。 对其余框使用默认值。

    用于设置数据连接的向导页的屏幕截图。

  4. 选择下一步

矢量化文本

如果原始内容包括文本,或者技能集生成文本,则向导将调用文本嵌入模型来生成该内容的矢量。 在本练习中,将从下一步中添加的 OCR 技能生成文本。

Azure AI 视觉提供文本嵌入,因此会使用该资源进行文本矢量化。

  1. 在“矢量化文本”页上,选择“AI 视觉矢量化”。 如果不可用,请确保 Azure AI 搜索和 Azure AI 多服务帐户一起位于支持 AI 视觉多模式 API 的区域。

    用于向量文本的向导页的屏幕截图。

  2. 选择下一步

矢量化并扩充图像

使用 Azure AI 视觉生成图像文件的矢量表示形式。

在此步骤中,还可以应用 AI 从图像中提取文本。 该向导使用 Azure AI 服务中的 OCR 识别图像文件中的文本。

将 OCR 添加到工作流时,索引中会显示另外两个输出:

  • chunk 字段使用图像中找到的任何文本的 OCR 生成的字符串填充。
  • 使用表示 chunk 字符串的嵌入填充 text_vector 字段。

如果要使用操作字符串的相关性功能(如语义排名评分配置文件),则在“chunk”字段中包含纯文本将会非常有用。

  1. 在“矢量化图像”页上,选择“矢量化图像”复选框,然后选择“AI 视觉矢量化”。

  2. 选择“将所选同一 AI 服务用于文本矢量化”。

  3. 在扩充部分中,选择“从图像中提取文本”和“使用与为图像矢量化选择的相同 AI 服务”。

    用于矢量化图像和扩充数据的向导页的屏幕截图。

  4. 选择下一步

映射新字段

在“高级设置”页上,可以选择新增字段。 默认情况下,向导使用这些属性生成以下字段:

字段 适用于 说明
chunk_id 文本和图像矢量 生成的字符串字段。 可搜索、可检索、可排序。 这是索引的文档键。
text_parent_id 图像矢量 生成的字符串字段。 可检索、可筛选。 标识区块来源的父文档。
image_parent_id 图像矢量 生成的字符串字段。 可检索、可筛选。 标识图像来源的父文档。
chunk 文本和图像矢量 字符串字段。 数据区块的易于阅读版本。 可搜索和可检索,但不可筛选、不可查找、不可排序。
title 文本和图像矢量 字符串字段。 易于阅读的文档标题、页标题或页码。 可搜索和可检索,但不可筛选、不可查找、不可排序。
image_vector 图像矢量 Collection(Edm.single). 图像的矢量表示。 可搜索和可检索,但不可筛选、不可查找、不可排序。

无法修改生成的字段或它们的属性,但如果数据源提供了新字段,则可以添加新字段。 例如,Azure Blob 存储提供元数据字段的集合。

  1. 选择“添加新订阅”。

  2. 从可用字段列表中选择源字段,提供索引的字段名称,并根据需要使用默认数据类型或重写。

    元数据字段可搜索,但不可检索、筛选、查找或排序。

  3. 如果要将架构还原到其原始版本,请选择“重置”

计划索引编制

  1. 在“高级设置”页上,“计划索引”下,指定索引器的“运行计划”。 建议在此练习中使用一次。 对于基础数据不稳定的数据源,可以计划索引以选取更改。

    用于计划索引的向导页的屏幕截图。

  2. 选择下一步

完成该向导

  1. 在“查看配置”页上,指定向导将创建的对象的前缀。 通用的前缀有助于保持有序。

    用于查看和完成配置的向导页的屏幕截图。

  2. 选择创建

当向导完成配置时,它会创建以下对象:

  • 一个驱动索引管道的索引器。

  • 一个与 Azure Blob 存储的数据源连接。

  • 一个包含矢量字段、文本字段、矢量器、矢量配置文件和矢量算法的索引。 无法在向导工作流期间修改默认索引。 索引符合 2024-05-01-preview REST API,因此你可以使用预览版功能。

  • 一个具有以下五种技能的技能集:

检查结果

搜索资源管理器接受文本、矢量和图像作为查询输入。 可将图像拖动或选择到搜索区域。 搜索资源管理器将图像矢量化,并将矢量作为查询输入发送到搜索引擎。 图像矢量化假定索引具有矢量器定义,它导入并矢量化根据嵌入模型输入创建的数据。

  1. 在 Azure 门户中,转到“搜索管理”>“索引”,然后选择你创建的索引。搜索资源管理器”是第一个选项卡。

  2. 在“视图”菜单上,选择“图像视图”。

    用于选择图像视图的命令的屏幕截图。

  3. 从包含示例图像文件的本地文件夹中拖动图像。 或打开文件浏览器以选择本地图像文件。

  4. 选择“搜索”以运行查询。

    最匹配的应是搜索的图像。 由于矢量搜索会匹配类似的矢量,因此搜索引擎将返回任何与查询输入足够相似的文档,最多 k 个结果。 可以切换到 JSON 视图,以进行包含相关性优化的高级查询。

    搜索结果的屏幕截图。

  5. 尝试其他查询选项来比较搜索结果:

    • 隐藏矢量以获取更多可读结果(推荐)。
    • 选择要查询的矢量字段。 默认值为文本矢量,但你可以指定图像矢量以从查询执行中排除文本矢量。

清理

此演示使用可计费的 Azure 资源。 如果不再需要该资源,请将其从订阅中删除,以避免产生费用。

下一步

本快速入门介绍了可创建图像搜索所需的所有对象的“导入和矢量化数据”向导。 若要详细探索每个步骤,请尝试使用一个集成矢量化示例