在本快速入门中,你将在 Azure 门户中使用 导入和矢量化数据 向导开始使用 集成向量化。 向导将您的内容分块,并调用嵌入模型,在索引和查询时对这些区块进行向量化处理。
本快速入门使用 azure-search-sample-data 存储库中的基于文本的 PDF。 但是,你可以使用图像,这样仍然可以完成本快速入门。
先决条件
拥有有效订阅的 Azure 帐户。 创建试用版订阅。
Azure AI 搜索服务。 建议使用基本层或更高层级。
熟悉向导。 请参阅 Azure 门户中的“导入数据向导”。
支持的数据源
导入和矢量化数据向导支持各种 Azure 数据源。 但是,本快速入门仅介绍处理整个文件的数据源,下表对此进行介绍。
支持的数据源 | 说明 |
---|---|
Azure Blob 存储 | 此数据源适用于 Blob 和表。 必须使用标准性能(常规用途 v2)帐户。 访问层可以是热层、温层或冷层。 |
Azure Data Lake Storage (ADLS) Gen2 | 这是启用了分层命名空间的 Azure 存储帐户。 若要确认你有 Data Lake Storage,请检查“概述”页上的“属性”选项卡。![]() |
支持的嵌入模型
对于集成向量化,必须在 Azure AI 平台上使用以下嵌入模型之一。 稍后部分提供了部署说明。
提供程序 | 支持的模型 |
---|---|
Azure AI Foundry 模型中的 Azure OpenAI1、2 | text-embedding-ada-002 文本嵌入-3-小型 文本嵌入-3-大规模 (text-embedding-3-large) |
Azure AI 服务多服务资源3 | 对于文本和图像:Azure AI 多模态视觉4 |
1 Azure OpenAI 资源的终结点必须具有 自定义子域,例如 https://my-unique-name.openai.azure.com
。 如果在 Azure 门户中创建了资源,则此子域是在资源设置过程中自动生成的。
2不支持 Azure AI Foundry 门户中创建的 Azure OpenAI 资源(具有嵌入模型访问权限)。 只有 Azure 门户中创建的 Azure OpenAI 资源与 Azure OpenAI 嵌入技能兼容。
3 出于计费目的,必须将 Azure AI 多服务资源附加到 Azure AI 搜索服务中的技能集。 除非使用 无键连接(预览版) 创建技能集,否则这两个资源必须位于同一区域。
4 Azure AI 视觉多模式嵌入模型在 所选区域中可用。
公共终结点要求
在本快速入门中,上述所有资源都必须启用公共访问权限,以便 Azure 门户节点可以访问它们。 否则,向导将失败。 运行向导后,你可以为集成组件启用防火墙和专用终结点以确保安全。 有关详细信息,请参阅导入向导中的安全连接。
如果专用终结点已存在并且你无法禁用它们,则另一种选择是在虚拟机上从脚本或程序运行相应的端到端流。 虚拟机必须与专用终结点位于同一虚拟网络上。 下面是用于集成矢量化的 Python 代码示例 。 同一 GitHub 存储库中还包含其他编程语言的示例。
基于角色的访问权限
可以将 Microsoft Entra ID 与角色分配或基于密钥的身份验证与完全访问连接字符串配合使用。 对于与其他资源的 Azure AI 搜索连接,我们建议分配角色。 本快速入门将使用角色。
免费搜索服务支持与 Azure AI 搜索的基于角色的连接。 但是,它们不支持在与 Azure 存储或 Azure AI 视觉服务的出站连接中使用托管标识。 这种缺乏支持需要基于密钥的身份验证,具体取决于免费搜索服务与其他 Azure 资源之间的连接。 若要获得更安全的连接,请使用基本层或更高层,然后启用角色并配置托管标识。
配置建议的基于角色的访问:
在搜索服务上, 启用角色 并 配置系统分配的托管标识。
-
搜索服务参与者
搜索索引数据参与者
搜索索引数据读取者
在数据源平台和嵌入模型提供程序上,创建允许搜索服务访问数据和模型的角色分配。 请参阅 “准备示例数据 ”和 “准备嵌入模型”。
注意
如果因为选项不可用(例如,不能选择数据源或嵌入模型)而无法继续完成向导操作,请重新访问角色分配。 错误消息指示模型或部署不存在,当真正的原因是搜索服务无权访问它们时。
检查空间
如果从免费服务开始,则限制为 3 个索引、数据源、技能集和索引器。 基本层级的限制为 15。 在本快速入门中,我们会创建每种对象各一个,因此开始之前,请确保您有足够的空间来放置额外的物品。
准备示例数据
本部分介绍适用于本快速入门的内容。 在继续之前,请确保已完成基于角色的访问的先决条件。
登录到 Azure 门户 并选择 Azure 存储帐户。
在左窗格中,选择 “数据存储>容器”。
创建容器,然后上传用于本快速入门的 健康计划 PDF 文档 。
要分配角色,请执行以下操作:
在左窗格中,选择“访问控制”(IAM)。
选择添加>添加角色分配。
在“工作职能角色”下,选择“存储 Blob 数据读取者”,然后选择“下一步”。
在“成员”下,选择“托管标识”,然后选择“选择成员”。
选择订阅和搜索服务的托管标识信息。
(可选)将容器中的删除与搜索索引中的删除同步。 为了配置索引器以检测删除,请按照以下步骤操作:
添加自定义元数据索引器可以扫描以确定哪些 Blob 标记为要删除。 为自定义属性指定描述性名称。 例如,可以命名属性“IsDeleted”并将其设置为 false。 对容器中的每个 Blob 重复此步骤。 如果要删除 Blob,请将属性更改为 true。 有关详细信息,请参阅从 Azure 存储编制索引时的更改和删除检测。
准备嵌入模型
该向导可以使用从 Azure OpenAI、Azure AI 视觉或 Azure AI Foundry 模型目录部署的嵌入模型。 在继续之前,请确保已完成基于角色的访问的先决条件。
该向导支持 text-embedding-ada-002、text-embedding-3-large、text-embedding-3-small。 在内部,向导调用 AzureOpenAIEmbedding 技能以连接到由世纪互联运营的 Azure OpenAI。
要分配角色,请执行以下操作:
登录到 Azure 门户 并选择 Azure OpenAI 资源。
在左窗格中,选择“访问控制”(IAM)。
选择添加>添加角色分配。
在“工作职能角色”下,选择认知服务 OpenAI 用户,然后选择“下一步”。
在“成员”下,选择“托管标识”,然后选择“选择成员”。
选择订阅和搜索服务的托管标识信息。
若要部署嵌入模型,请执行以下步骤:
登录到 Azure AI Foundry 门户 并选择 Azure OpenAI 资源。
在左窗格中,选择 “模型”目录。
部署 支持的嵌入模型。
启动向导
若要启动矢量搜索向导,
登录到 Azure 门户 并选择 Azure AI 搜索服务。
在“概述”页上,选择“导入和矢量化数据”。
选择数据源: Azure Blob 存储、 ADLS Gen2。
选择 RAG。
连接到数据库
在此步骤中,将 Azure AI 搜索连接到 受支持的数据源 ,以便进行内容引入和索引编制。
在 “连接到数据 ”页上,选择 Azure 订阅。
选择提供示例数据的存储帐户和容器。
如果在 准备示例数据中启用了软删除并添加了自定义元数据,请选中“ 启用删除跟踪 ”复选框。
在后续索引运行时,搜索索引会进行更新,以基于 Azure 存储中被软删除的 blob 移除任何搜索文档。
Blob 支持本机 Blob 软删除或使用自定义元数据的软删除。
如果为 blob 配置了使用软删除,请提供元数据属性名称/值对。 我们推荐IsDeleted。 如果在 Blob 上将 IsDeleted 设置为 true,则在下一次索引器运行时,索引器会删除对应的搜索文档。
该向导不会检查 Azure 存储中的有效设置,如果未满足要求,则会引发错误。 相反,删除检测不起作用,随着时间的推移,搜索索引可能会收集孤立文档。
选中“ 使用托管标识进行身份验证 ”复选框。 将标识类型保留为 系统分配。
选择下一步。
矢量化文本
在此步骤中,向导使用所选 的嵌入模型 向量分块数据。 分块是内置且不可配置的。 有效设置包括:
"textSplitMode": "pages",
"maximumPageLength": 2000,
"pageOverlapLength": 500,
"maximumPagesToTake": 0, #unlimited
"unit": "characters"
在 “矢量化文本 ”页上,为类型选择 Azure OpenAI 。
选择 Azure 订阅。
选择 Azure OpenAI 资源,然后选择在 准备嵌入模型中部署的模型。
对于身份验证类型,请选择 “系统分配的标识”。
选中相应复选框以确认使用这些资源的计费影响。
选择下一步。
矢量化并扩充图像
健康计划 PDF 包含公司徽标,除此之外,没有图像。 如果使用示例文档,则可以跳过此步骤。
但是,如果内容包含有用的图像,可以采用以下一种或两种方式来应用 AI:
使用 Azure AI Foundry 模型目录或 Azure AI 视觉多模式嵌入 API(通过 Azure AI 多服务资源)支持的图像嵌入模型来向量化图像。
使用光学字符识别(OCR)从图像中提取文本。 此选项调用 OCR 技能。
在 Vectorize 和扩充图像 页上,选中 “矢量化图像 ”复选框。
对于此类,请选择模型提供程序: AI Foundry Hub 目录模型 或 AI 视觉矢量化。
如果 Azure AI 视觉不可用,请确保搜索服务和多服务资源都位于 支持 Azure AI 视觉多模式 API 的区域。
选择 Azure 订阅、资源和嵌入模型部署(如果适用)。
如果使用 Azure AI 视觉,请选择 身份验证类型的系统分配标识 。 否则,请将其保留为 API 密钥。
选中相应复选框以确认使用这些资源的计费影响。
选择下一步。
添加语义排名
在“高级设置”页上,可以选择添加语义排名,以在查询执行结束时将结果重新排名。 重新排名会将在语义方面最相关的匹配项提升到顶部。
映射新字段
该步骤的要点:
索引架构为分块数据提供向量字段和非函数字段。
可以添加字段,但不能删除或修改生成的字段。
文档分析模式会创建区块(每个区块一个搜索文档)。
在 “高级设置” 页上,可以选择添加新字段,假设数据源提供在第一次传递时未选取的元数据或字段。 默认情况下,向导将生成下表中所述的字段。
字段 | 适用于 | 说明 |
---|---|---|
chunk_id | 文本和图像矢量 | 生成的字符串字段。 可搜索、可检索和可排序。 这是索引的文档键。 |
parent_id | 文本向量 | 生成的字符串字段。 可检索和筛选。 标识区块来源的父文档。 |
片段 | 文本和图像矢量 | 字符串字段。 数据区块的易于阅读版本。 可搜索和可检索,但不可筛选、不可查找、不可排序。 |
标题 | 文本和图像矢量 | 字符串字段。 易于阅读的文档标题、页标题或页码。 可搜索和可检索,但不可筛选、不可查找、不可排序。 |
文本向量 | 文本向量 | Collection(Edm.single)。 区块的矢量表示。 可搜索和可检索,但不可筛选、不可查找、不可排序。 |
无法修改生成的字段或它们的属性,但如果数据源提供了新字段,则可以添加新字段。 例如,Azure Blob 存储提供元数据字段的集合。
选择添加字段。
从可用字段中选择源字段,输入索引的字段名称,并接受默认数据类型(或替代)。
注意
元数据字段可搜索,但不可检索、筛选、分面或排序。
如果要将架构还原到其原始版本,请选择“ 重置”。
计划索引编制
在 “高级设置” 页上,还可以为索引器指定可选的 运行计划 。 从下拉列表中选择间隔后,选择“ 下一步”。
完成该向导
在“查看配置”页面上,为向导创建的对象指定前缀。 通用的前缀有助于保持有序。
选择创建。
当向导完成配置时,它会创建以下对象:
数据源连接。
包含矢量字段、向量器、矢量配置文件和向量算法的索引。 无法在执行向导工作流期间设计或修改默认索引。 索引遵循 2024-05-01-preview REST API。
包含用于分块的文本拆分技能和用于矢量化的嵌入技能的技能组。 嵌入技能是 Azure OpenAI 的 AzureOpenAIEmbeddingModel 技能 。 技能组还具有 索引投影 配置,该配置将数据从数据源中的一个文档映射到“子”索引中的相应区块。
具有字段映射和输出字段映射的索引器(如果适用)。
小窍门
向导创建的对象具有可配置的 JSON 定义。 若要查看或修改这些定义,请从左窗格中选择 “搜索管理 ”,可在其中查看索引、索引器、数据源和技能集。
检查结果
搜索资源管理器接受文本字符串作为输入,然后矢量化矢量器查询执行文本。
在 Azure 门户中,转到 “搜索管理>索引”,然后选择索引。
选择 “查询”选项,然后选择“ 隐藏搜索结果中的矢量值”。 此步骤使结果更具可读性。
在 “视图 ”菜单中,选择 JSON 视图 ,以便可以在向量查询参数中
text
输入矢量查询的文本。默认查询为空搜索(
"*"
),但包含返回数字匹配项的参数。 这是一种并行运行文本和矢量查询的混合查询。 它还包括语义排名,并通过select
语句指定要在结果中返回哪些字段。{ "search": "*", "count": true, "vectorQueries": [ { "kind": "text", "text": "*", "fields": "text_vector,image_vector" } ], "queryType": "semantic", "semanticConfiguration": "my-demo-semantic-configuration", "captions": "extractive", "answers": "extractive|count-3", "queryLanguage": "en-us", "select": "chunk_id,text_parent_id,chunk,title,image_parent_id" }
将这两个星号 (
*
) 占位符替换为与运行状况计划相关的问题,例如Which plan has the lowest deductible?
。{ "search": "Which plan has the lowest deductible?", "count": true, "vectorQueries": [ { "kind": "text", "text": "Which plan has the lowest deductible?", "fields": "text_vector,image_vector" } ], "queryType": "semantic", "semanticConfiguration": "my-demo-semantic-configuration", "captions": "extractive", "answers": "extractive|count-3", "queryLanguage": "en-us", "select": "chunk_id,text_parent_id,chunk,title" }
若要运行查询,请选择“ 搜索”。
每个文档都是原始 PDF 的一个区块。
title
字段显示区块来自哪个 PDF。 每个chunk
都很长。 你可以将其中一个复制并粘贴到文本编辑器中,以读取整个值。若要查看特定文档中的所有区块,请为特定 PDF 的
title_parent_id
字段添加筛选器。 可以检查索引的“ 字段 ”选项卡,确认该字段可筛选。{ "select": "chunk_id,text_parent_id,chunk,title", "filter": "text_parent_id eq 'aHR0cHM6Ly9oZWlkaXN0c3RvcmFnZWRlbW9lYXN0dXMuYmxvYi5jb3JlLndpbmRvd3MubmV0L2hlYWx0aC1wbGFuLXBkZnMvTm9ydGh3aW5kX1N0YW5kYXJkX0JlbmVmaXRzX0RldGFpbHMucGRm0'", "count": true, "vectorQueries": [ { "kind": "text", "text": "*", "k": 5, "fields": "text_vector" } ] }
清理资源
本快速入门使用可计费的 Azure 资源。 如果不再需要资源,请将其从订阅中删除,以避免产生费用。
下一步
本快速入门介绍了 导入和矢量化数据向导,该向导创建用于集成向量化的所有必需对象。 若要详细了解每个步骤,请参阅 在 Azure AI 搜索中设置集成矢量化。