你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure AI 搜索中,AI 扩充是指与 Azure AI 服务集成来处理以原始格式无法搜索的内容。 通过扩充,可以使用分析和推理来创建以前不存在的可搜索内容和结构。
Azure AI 搜索用于文本和矢量查询,因此 AI 扩充的目的是在与搜索相关的情况下改善内容的实用性。 原始内容必须是文本或图像(不能扩充矢量),但扩充管道的输出可以使用 文本拆分技能 (用于分块)和用于矢量编码的 Azure OpenAI 嵌入技能等技能 在搜索索引中进行矢量化和索引。 有关在矢量方案中使用技能的详细信息,请参阅集成数据分块和嵌入。
AI 扩充基于技能。
内置技能 利用 Azure AI 服务。 它们对原始内容应用以下转换和处理:
- 多语言搜索的翻译和语言检测。
- 用于从大量文本中提取人员姓名、地点和其他实体的实体识别。
- 用于标识和输出重要术语的关键短语提取。
- 光学字符识别(OCR)用于识别二进制文件中的印刷文本和手写文本。
- 图像分析,用于描述图像内容,并将说明输出为可搜索文本字段。
- 通过 Azure OpenAI 进行文本嵌入,以便进行集成矢量化。
- 通过 Azure AI 视觉进行多模式嵌入,用于文本和图像矢量化。
自定义技能运行外部代码。 你可以将自定义技能用于要在管道中包含的任何自定义处理。
AI 扩充是连接到 Azure 数据源的 索引器管道 的扩展。 扩充管道包含索引器管道(索引器、数据源、索引)的所有组件,以及指定原子扩充步骤的 技能集 。
下图显示了 AI 扩充的流程:
“导入”是第一步。 在此处,索引器连接到数据源并将内容(文档)拉取到搜索服务中。 Azure Blob 存储是 AI 扩充方案中最常用的资源,但任何受支持的数据源都可以提供内容。
“扩充和索引”涵盖大多数 AI 扩充管道:
当索引器 破解文档 并提取图像和文本时,扩充将启动。 接下来发生的处理类型取决于你的数据和已添加到技能集的技能。 图像可以被转发到 执行图像处理的技能。 文本内容将会排队以等待进行文本和自然语言处理。 在内部,技能创建一个扩充的文档用于在转换发生时收集转换。
扩充内容在技能组执行期间生成,除非进行保存操作,否则内容只是临时的。 可以启用 扩充缓存 来保留技能输出,以便在将来的技能集执行中重复使用。
若要将内容放入搜索索引,索引器必须具有用于将扩充内容发送到目标字段的映射信息。 字段映射(显式或隐式)设置从源数据到搜索索引的数据路径。 输出字段映射设置从扩充文档到索引的数据路径。
索引编制是将原始和扩充内容引入到搜索索引的物理数据结构(其文件和文件夹)的过程。 词法分析和标记化在此步骤中发生。
“探索”是最后一步。 输出始终是可以从客户端应用查询的搜索索引。 (可选)输出可以是一个知识存储,它由 Azure 存储中可以通过数据探索工具或下游流程访问的 Blob 和表组成。 如果你正在创建知识存储,投影将确定扩充内容的数据路径。 相同的扩充内容可以出现在索引和知识存储中。
何时使用 AI 扩充
如果原始内容为非结构化文本、图像内容或需要语言检测和翻译的内容,则使用扩充会非常有用。 通过 内置技能 应用 AI 可以为全文搜索和数据科学应用程序解锁此内容。
还可以创建自定义 技能 来提供外部处理。 开源、第三方或第一方代码可以作为自定义技能集成到管道中。 识别各种文档类型的突出特征的分类模型属于此类别,但任何可为内容增加价值的外部包均可使用。
内置技能用例
内置的技能基于 Azure AI 服务 API:Azure AI 计算机视觉和语言服务。 除非你的内容输入较小,否则,就需要附加可计费的 Azure AI 服务资源来运行较大的工作负载。
使用内置技能组合起来的技能组非常适合以下应用场景:
“图像处理”技能包括 光学字符识别 (OCR) 和视觉特征标识,例如面部检测、图像解释、图像识别(名人和地标)或属性(例如图像方向)。 这些技能为 Azure AI 搜索中的全文搜索创建图像内容的文本表示形式。
自然语言处理分析文本区块。 此类别中的技能包括实体识别、情绪检测(包括观点挖掘)和个人身份信息检测。 通过这些技能,非结构化文本在索引中映射为可搜索和可筛选的字段。
自定义技能用例
自定义技能 执行你提供的外部代码并在 自定义技能 Web 界面中包装。 可以在 azure-search-power-skills GitHub 存储库中找到自定义技能的几个示例。
自定义技能并非总是很复杂。 例如,如果你的现有包提供模式匹配或文档分类模型,那么你可以将其封装到自定义技能中。
存储输出
在 Azure AI 搜索中,索引器保存它创建的输出。 一个索引器运行最多可以创建三个包含已扩充输出和已编制索引输出的数据结构。
| 数据存储 | Required | Location | Description |
|---|---|---|---|
| 可搜索索引 | Required | 搜索服务 | 用于全文搜索和其他查询表单。 指定索引是一项索引器要求。 索引内容是从技能输出以及直接映射到索引中字段的任何源字段填充的。 |
| 知识存储 | Optional | Azure 存储 | 用于下游应用,例如知识挖掘、数据科学和多模式搜索。 知识存储在技能组中定义。 其定义决定了已扩充的文档是投影为 Azure 存储中的表还是对象(文件或 Blob)。 对于 多模式搜索方案,可以将提取的图像保存到知识存储,并在查询时引用它们,从而允许将图像直接返回到客户端应用。 |
| 扩充缓存 | Optional | Azure 存储 | 用于缓存扩充内容,以便在后续的技能组执行中重用。 缓存存储已导入的但未处理的内容(破解的文档)。 它还存储在技能组执行期间创建的扩充文档。 如果你正在使用图像分析或 OCR,并且希望避免重新处理图像文件的时间和费用,则高速缓存会很有帮助。 |
索引和知识存储完全相互独立。 虽然必须附加索引以满足索引器要求,但如果唯一目标是知识存储,则填充后可以忽略该索引。
探索内容
查询搜索索引
运行查询以访问管道生成的扩充内容。 该索引与可为 Azure AI 搜索创建的其他任何索引类似:可以使用自定义分析器补充文本分析、调用模糊搜索查询、添加筛选器,或尝试使用计分概要文件来调整搜索相关性。
对知识存储使用数据探索工具
在 Azure 存储中,知识存储可以采用以下形式:JSON 文档的 Blob 容器、图像对象的 Blob 容器或表存储中的表。 可以使用存储资源管理器、Power BI 或任何连接到 Azure 存储的应用来访问内容。
Blob 容器捕获整个扩充文档,这很有利于将数据馈送到其他过程。
如果需要扩充文档的切片,或者想要包含或排除输出的特定部分,则表非常有用。 对于 Power BI 中的分析,建议在 Power BI 中将表用作数据源以进行数据研究和可视化。
可用性和定价
AI 扩充在提供 Azure AI 服务的区域中可用。 若要查看 AI 扩充的可用性,请参阅 区域列表。
计费遵循标准定价模型。 在技能组中指定 Azure AI Foundry 模型资源中的 Azure OpenAI 或 Azure AI 服务多服务资源密钥时,会产生与内置技能相关的成本。 还有与图像提取相关的成本(按 Azure AI 搜索计费)。 但是,文本提取和实用工具技能不计费。 有关详细信息,请参阅 Azure AI 搜索如何收费。
清单:典型工作流
扩充管道由具有技能组的索引器组成。 编制索引后,可以查询索引以验证结果。
从支持的数据源中的数据子集开始。 索引器和技能组设计是一个迭代性过程。 使用较小的有代表性数据集可以加快工作进度。
创建一个指定数据的连接的数据源。
创建技能集。 除非项目很小,否则应 附加 Azure AI 服务多服务资源。 如果你正在创建知识存储,请在技能组中定义它。
创建一个索引架构用于定义搜索索引。
创建并运行索引器 以将所有以前的组件组合在一起。 此步骤检索数据、运行技能组并加载索引。
索引器也是指定字段映射,以及输出用于设置搜索索引数据路径的字段映射的位置。
(可选)在索引器配置中启用扩充缓存。 完成此步骤后,以后可以重用现有的扩充。
若要重复上述任何步骤,请在运行 索引器之前重置索引器 。 或者,可以在每次运行时删除并重新创建对象(如果使用的是免费层),建议这样做。 如果启用了缓存,索引器会在源数据不变且对管道的编辑不使缓存失效的情况下,从缓存中获取数据。