快速入门:集成矢量化(预览版)

重要

“导入和矢量化数据”向导根据补充使用条款处于公开预览状态。 它面向 2023-10-01-Preview REST API

使用 Azure 门户中“导入和矢量化数据”向导开始使用集成矢量化(预览)。 此向导会调用 Azure OpenAI 文本嵌入模型,以便在编制索引和查询时对内容进行矢量化。

在此向导的预览版中:

  • 源数据仅是 blob,使用默认分析模式(每个 blob 一个搜索文档)。

  • 索引架构不可配置。 源字段包括 content(分块和矢量化)、标题 metadata_storage_name,以及文档键 metadata_storage_path(在索引中填充为 parent_id)。

  • 矢量化仅限 Azure OpenAI (text-embedding-ada-002),它使用带默认值的 HNSW 算法。

  • 分块不可配置。 有效设置包括:

    textSplitMode: "pages",
    maximumPageLength: 2000,
    pageOverlapLength: 500
    

先决条件

  • Azure 订阅。 创建试用版订阅

  • 在任何区域内、任何层级上的 Azure AI 搜索。 大多数现有服务都支持矢量搜索。 对于在 2019 年 1 月之前创建的一小部分服务,包含矢量字段的索引会在创建时失败。 在这种情况下,必须创建新服务。

  • Azure OpenAI 终结点,其中部署了 text-embedding-ada-002 和 API 密钥,或认知服务 OpenAI 用户上传数据的权限。 在此预览版中只能选择一个矢量器,矢量器必须是 Azure OpenAI。

  • Azure 存储帐户、标准性能(常规用途 v2)、热访问层和冷访问层。

  • 提供文本内容、仅非结构化文档和元数据的 blob。 在此预览版中,数据源必须是 Azure Blob。

  • 在 Azure 存储中的读取权限。 包含访问密钥的存储连接字符串提供对存储内容的读取访问。 如果使用 Microsoft Entra 登录名和角色,请确保搜索服务的托管标识具有“存储 Blob 数据读取者”权限。

检查空间

很多客户开始使用免费服务。 免费层限制为三个索引、三个数据源、三个技能组和三个索引器。 在开始之前,请确保有空间存储额外的项目。 本快速入门将为每个对象创建一个。

准备示例数据

本部分指向适用于本快速入门的数据。

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

  2. 在导航窗格中的“数据存储”下,选择“容器”

  3. 创建新的容器,然后上传用于本快速入门的运行状况计划 PDF 文档

  4. 在 Azure 门户中离开 Azure 存储帐户之前,在容器上授予存储 Blob 数据读取者权限,前提是需要基于角色的访问权限。 或者,从“访问密钥”页面获取到存储帐户的连接字符串。

获取 Azure OpenAI 连接详细信息

该向导需要终结点、部署 text-embedding-ada-002,以及 API 密钥或具有认知服务 OpenAI 用户权限的搜索服务托管标识。

  1. 使用 Azure 帐户登录到 Azure 门户,并转到 Azure OpenAI 资源。

  2. 在“密钥和管理”下,复制终结点。

  3. 在同一页上,复制密钥或检查“访问控制”,以将角色成员分配到搜索服务标识。

  4. 在“模型部署”下,选择“管理部署”以打开 Azure AI Studio。 复制 text-embedding-ada-002 的部署名称。

启动向导

若要开始,请在 Azure 门户中浏览到 Azure AI 搜索服务,然后打开“导入和矢量化数据”向导

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

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

    向导命令的屏幕截图。

连接到数据库

下一步是连接到要用于搜索索引的数据源。

  1. 在“导入和矢量化数据”向导的“连接到数据”选项卡上,展开“数据源”下拉列表,然后选择“Azure Blob 存储”

  2. 指定提供数据的 Azure 订阅、存储帐户和容器。

  3. 对于连接,请提供包含密钥的完全访问连接字符串,或指定具有容器“存储 Blob 数据读取者”权限的托管标识

  4. 指定是否要删除检测

    数据源页的屏幕截图。

  5. 选择“下一步: 矢量化和扩充”以继续。

扩充和矢量化数据

在此步骤中,指定用于矢量化分块数据的嵌入模型。

  1. 提供订阅、终结点、API 密钥和模型部署名称。

  2. 或者,可以破解二进制图像(例如扫描的文档文件),并使用 OCR 来识别文本。

  3. 为索引器指定运行时计划

    扩充页的屏幕截图。

  4. 选择“下一步: 创建并审阅”以继续。

运行向导

此步骤创建以下对象:

  • 与 blob 容器的数据源连接。

  • 使用矢量字段、矢量器、矢量配置文件、矢量算法编制索引。 在向导工作流期间,系统不会提示你设计或修改默认索引。 索引遵循 2023-10-01-Preview 版本。

  • 具有文本拆分技能的技能组用于分块,AzureOpenAIEmbeddingModel 用于矢量化。

  • 具有字段映射和输出字段映射的索引器(如适用)。

如果收到错误,请先查看权限。 需要在 Azure OpenAI 上具有认知服务 OpenAI 用户,并在 Azure 存储上具有存储 Blob 数据读者。 Blob 必须是非结构化的(分块数据是从 Blob 的“content”属性中提取的)。

检查结果

搜索资源管理器接受文本字符串作为输入,然后矢量化矢量器查询执行文本。

  1. 选择你的索引。

  2. (可选)选择“查询选项”并在搜索结果中隐藏矢量值。 此步骤使你的搜索结果更易于阅读。

    “查询选项”按钮的屏幕截图。

  3. 选择 JSON 视图,以便在文本矢量查询参数中输入矢量查询的文本。

    JSON 选择器的屏幕截图。

    此矢量会提供一个默认查询,该查询在“vector”字段上发出矢量查询,返回最近的 5 个邻居。 如果选择隐藏矢量值,则默认查询会包括一个“select”语句,该语句从搜索结果中排除矢量字段。

    {
       "select": "chunk_id,parent_id,chunk,title",
       "vectorQueries": [
           {
              "kind": "text",
              "text": "*",
              "k": 5,
              "fields": "vector"
           }
        ]
    }
    
  4. 将文本 "*" 替换为与健康计划相关的问题,例如“哪个计划的免赔额最低”

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

    搜索结果的屏幕截图。

    应会看到 5 个匹配项,其中每个文档都是原始 PDF 的一个区块。 标题字段显示区块来自哪个 PDF。

  6. 若要查看特定文档中的所有区块,请为特定 PDF 的标题字段添加筛选器:

    {
       "select": "chunk_id,parent_id,chunk,title",
       "filter": "title eq 'Benefit_Options.pdf'",
       "count": true,
       "vectorQueries": [
           {
              "kind": "text",
              "text": "*",
              "k": 5,
              "fields": "vector"
           }
        ]
    }
    
    

清理

Azure AI 搜索是一项计费资源。 如果不再需要它,请将其从订阅中删除以免产生费用。

后续步骤

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