在 Azure AI 搜尋服務中啟用累加擴充的快取
重要
此功能在補充使用規定下處於公開預覽狀態。 預覽 REST API 支援此功能。
本文說明如何將快取新增至擴充管線,以便能修改下游擴充步驟,而無須每次都全部重建。 根據預設,技能集沒有狀態,而要其任一部分,都需要徹底重新執行索引子。 透過擴充快取,索引子可根據在技能集或索引子定義中偵測到的變更,判斷必須重新整理文件樹狀結構的哪些部分。 現有的已處理輸出會保留,並盡可能重複使用。
快取的內容會使用您提供的帳戶資訊放在 Azure 儲存體中。 當您執行索引子時,會建立名為 ms-az-search-indexercache-<alpha-numerc-string>
的容器。 我們應將其視為由搜尋服務管理且不可修改的內部元件。
必要條件
若只有 blob 索引編制,如果您需要在從資料來源刪除 Blob 時從快取和索引中移除同步處理的文件,請在索引子中啟用刪除原則。 如果沒有此原則,則不支援從快取中刪除文件。
您應該熟悉設定索引子。 從 索引子概觀 開始,然後繼續至 技能集,以了解擴充管線。 如需更多關於重要概念的背景資訊,請參閱累加擴充。
警告
如果使用的是 SharePoint Online 索引子 (預覽),您應該避免累加擴充。 在某些情況下,快取會變成無效,因此如果您選擇重新載入索引子,需要重設和執行索引子。
在新的索引子上啟用
您必須使用 Azure 入口網站、預覽 API 或 Beta Azure SDK,才能在索引子上啟用擴充快取。
在左側,選取 [索引子],然後選取 [新增索引子]。
提供索引子名稱和現有的索引、資料來源和技能集。
啟用增量快取並設定 Microsoft Azure 儲存體帳戶。
在現有的索引子上啟用
對於已有技能集的現有索引子,請使用下列步驟來新增快取。 作為一次性作業,徹底重設並重新執行索引子以載入快取。
步驟 1:取得索引子定義
請從具有下列元件的有效工作索引子開始:資料來源、技能集、索引。 使用 API 用戶端,傳送 GET Indexer 要求以擷取索引子。 當您使用預覽 API 版本來取得索引子時,設定為 null 的 "cache" 屬性會自動新增至定義。
GET https://[YOUR-SEARCH-SERVICE].search.windows.net/indexers/[YOUR-INDEXER-NAME]?api-version=2024-05-01-preview
Content-Type: application/json
api-key: [YOUR-ADMIN-KEY]
步驟 2:設定快取屬性
在索引定義中修改 "cache",以包含下列必要和選擇性屬性:
- (必要)
storageConnectionString
必須設定為 Azure 儲存體連接字串。 - (選擇性)
enableReprocessing
布林屬性 (預設為true
),指出累加擴充已啟用。 如果您想要在其他資源密集的作業 (例如編製新文件的索引) 執行期間暫停累加處理,請設定為false
,且稍後再切換回true
。
POST https://[service name].search.windows.net/indexers?api-version=2024-05-01-preview
{
"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": []
}
步驟 3:重設索引子
設定現有索引子的累加擴充時必須重設索引子,以確保所有文件都處於一致狀態。 對這項工作可以使用入口網站或 API 用戶端。
POST https://[YOUR-SEARCH-SERVICE].search.windows.net/indexers/[YOUR-INDEXER-NAME]/reset?api-version=2024-05-01-preview
Content-Type: application/json
api-key: [YOUR-ADMIN-KEY]
步驟 4:儲存索引子
使用 PUT 要求更新索引子,其中,要求本文包含 "cache"。
PUT https://[YOUR-SEARCH-SERVICE].search.windows.net/indexers/[YOUR-INDEXER-NAME]?api-version=2024-05-01-preview
Content-Type: application/json
api-key: [YOUR-ADMIN-KEY]
{
"name" : "<YOUR-INDEXER-NAME>",
...
"cache": {
"storageConnectionString": "<YOUR-STORAGE-ACCOUNT-CONNECTION-STRING>",
"enableReprocessing": true
}
}
如果您現在對索引子發出另一個 GET 要求,服務的回應將會在快取物件中包含 ID
屬性。 此索引子所處理之每個文件的所有快取結果和中繼狀態所在的容器,會在其名稱附加英數字元字串。 識別碼將用來唯一為 Blob 儲存體中的快取命名。
"cache": {
"ID": "<ALPHA-NUMERIC STRING>",
"enableReprocessing": true,
"storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<YOUR-STORAGE-ACCOUNT>;AccountKey=<YOUR-STORAGE-KEY>;EndpointSuffix=core.windows.net"
}
步驟 5:執行索引子
若要執行索引子,您可以使用入口網站或 API。 在入口網站中,從索引子清單中選取索引子,然後選取 [執行]。 使用入口網站的優點之一,是可以監視索引子狀態、記下作業的持續時間,以及處理的文件數目。 入口網站頁面每隔幾分鐘會重新整理一次。
或者,您可以使用 REST 來執行索引子:
POST https://[YOUR-SEARCH-SERVICE].search.windows.net/indexers/[YOUR-INDEXER-NAME]/run?api-version=2024-05-01-preview
Content-Type: application/json
api-key: [YOUR-ADMIN-KEY]
注意
重設並重新執行索引子會導致完全重建,而使內容可供快取。 所有認知擴充都會在所有文件上重新執行。 載入快取後,就會開始從快取重複使用擴充的內容。
檢查快取的輸出
在 Azure 儲存體中的 Blob 容器下尋找快取。 容器名稱為 ms-az-search-indexercache-<some-alphanumeric-string>
。
快取由索引子建立和使用。 其內容不是常人可讀的。
若要確認快取是否正常運作,請修改技能集並執行索引子,然後比較執行時間和文件計數的前後計量。
技能集若包含掃描文件的影像分析和光學字元辨識 (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 不正確的要求」錯誤。 錯誤訊息會指定任何遺漏的相依性。
下一步
累加擴充適用於包含技能集的索引子,對索引和知識存放區都能提供可重複使用的內容。 下列連結提供關於快取和技能集的詳細資訊。