重要
标记为“预览”的特性、功能或属性不受服务级别协议 (SLA) 保障,不建议用于生产工作负载,并且在正式发布之前可能会更改或受到限制。
Azure AI 搜索预览条款适用于所有预览功能,无论是独立功能还是正式版功能的一部分。
本文介绍如何将缓存添加到技能组管道,以便每次都无需完全重新生成即可修改下游扩充步骤。 扩充缓存(预览版)需要 预览版 REST API。 默认情况下,技能组是无状态的,并且更改其组合的任何部分都需要重新运行索引器。 使用 扩充缓存时,索引器会根据技能集或索引器定义更改来确定必须刷新文档树的哪些部分。 索引器尽可能保留并重复使用现有的已处理输出。
使用所提供的连接字符串将缓存的内容放置在Azure 存储中。 索引器在运行时创建这些对象。 将扩充缓存视为由搜索服务管理且不得修改的内部组件。
重要
扩充缓存不是技能集输出、索引器状态或索引文档的备份。 它不会跟踪哪些文档完成处理。 对于大型数据源,请在启用缓存之前查看 “限制” 部分。
- 名为
ms-az-search-indexercache-<alpha-numeric-string> 的容器
- 名为
MsAzSearchIndexerCacheIndex<alpha-numeric-string> 的表
先决条件
你应该熟悉如何设置索引器和技能集。 从索引器概述着手,然后继续学习技能集来了解扩充管道。
限制
大型数据源具有额外的缓存限制。
谨慎
对于大型数据源,在技能运行时间较长、反复中断或技能频繁失败时,增强缓存可以提高整体重新处理效率。 索引器将正确性优先于最小化重新处理,因此缓存积压工作会放大重试行为。 这种行为是预期之中的,不是缺陷。
若要从不断增长的缓存积压工作中恢复,请将数据源分区为较小的容器或虚拟文件夹。 然后使用指向同一索引的 并行索引器 。 若要取消关联缓存,请将 cache 索引器的属性设置为 null。 有关分区模式的指导,请参阅 索引大型数据集 。
权限
Azure AI 搜索标识需要对 Azure 存储 具有写入访问权限:
连接字符串的语法决定使用的是系统分配的标识还是用户分配的标识。 有关详细信息,请参阅使用托管标识连接到Azure存储。
设置缓存属性
对新的索引器和现有索引器使用此过程。
在索引器定义中,使用以下命令进行设置 cache :
- (必需)
storageConnectionString 设置为 Azure 存储连接字符串。
- (可选)
enableReprocessing (true 默认情况下)。 将其设置为 false 以暂时暂停增量扩充,稍后将其切换回 true。
在左侧,选择 “索引器”。
选择 “添加索引器 ”以创建新的索引器,或在 JSON 编辑模式下打开现有索引器。
启用增量扩充,设置扩充缓存存储帐户,并保存索引器。
Azure 门户中用于丰富缓存的选项的屏幕截图
如果索引器已存在,请重置索引器。
运行索引器。 此一次性操作用于初始化缓存。 加载后,增量重用将应用于后续运行。
如果要编辑现有索引器,请使用 GET 索引器 获取当前配置。
使用最新的预览 API 创建 或更新索引器。
PUT https://[YOUR-SEARCH-SERVICE].search.windows.net/indexers/[YOUR-INDEXER-NAME]?api-version=2026-08-01-preview
Content-Type: application/json
api-key: [YOUR-ADMIN-KEY]
{
"name": "<YOUR-INDEXER-NAME>",
"targetIndexName": "<YOUR-INDEX-NAME>",
"dataSourceName": "<YOUR-DATASOURCE-NAME>",
"skillsetName": "<YOUR-SKILLSET-NAME>",
"cache": {
"storageConnectionString": "<YOUR-STORAGE-ACCOUNT-CONNECTION-STRING>",
"enableReprocessing": true
},
"fieldMappings": [],
"outputFieldMappings": [],
"parameters": []
}
如果索引器已存在,请重置索引器 。
运行索引器。 此一次性操作用于初始化缓存。 加载后,增量重用将应用于后续运行。
POST https://[YOUR-SEARCH-SERVICE].search.windows.net/indexers/[YOUR-INDEXER-NAME]/run?api-version=2026-08-01-preview
Content-Type: application/json
api-key: [YOUR-ADMIN-KEY]
如果现在对索引器发出另一个 GET 请求,则来自服务的响应将一个 ID 属性包含在缓存对象中。 该字符串追加到容器的名称,其中包含此索引器处理的每个文档的所有缓存结果和中间状态。 ID 用于在 Blob 存储中唯一命名缓存。
"cache": {
"ID": "<ALPHA-NUMERIC STRING>",
"enableReprocessing": true,
"storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<YOUR-STORAGE-ACCOUNT>;AccountKey=<YOUR-STORAGE-KEY>;EndpointSuffix=core.windows.net"
}
检查缓存的输出
登录到 Azure 门户,找到Azure 存储帐户。
使用存储浏览器查看容器和表。
索引器创建和使用缓存。 其内容对人类不可读。
若要验证缓存是否正常运行,请修改技能集并运行索引器,然后比较执行时间和文档计数的前后指标。
包含扫描文档的图像分析和光学字符识别(OCR)的技能集非常适合测试用例。 如果修改下游文本技能或任何与图像无关的技能,索引器可以从缓存中检索以前处理的图像和 OCR 内容,并仅处理与文本相关的编辑更改。 预期索引器执行计数中的文档更少,执行时间更短,成本更低。
文件集被用于 cog-search-demo 教程,这是一个有用的测试用例,因为它包含 14 个不同格式的文件,包括 JPG、PNG、HTML、DOCX、PPTX 等类型。 在文本翻译技能中,将 en 更改为 es 或另一种语言,以对增量扩充进行概念证明测试。
常见错误
如果忘记在请求中指定预览 API 版本,则会发生以下错误:
"The request is invalid. Details: indexer : A resource without a type name was found, but no expected type was specified. To allow entries without type information, the expected type must also be specified when the model is specified."
如果缺少索引器所需的条件,也会出现 400“错误请求”错误。 错误消息指定任何缺失的依赖项。
下一步
可以对包含技能集的索引器使用增量扩充,以便可以为索引和知识存储重复使用内容。 若要了解有关缓存管理的详细信息,请参阅以下文章: