Azure 認知搜尋中的累加式擴充和快取

重要

這項功能在 補充使用規定下處于公開預覽狀態。 預覽 REST API支援此功能。

累加式擴充 是指 在技能集執行 期間使用快取擴充,因此只有新的和已變更的技能和檔會產生 AI 處理。 快取包含 檔破解的輸出,加上每個檔每個技能的輸出。 雖然快取是可計費 (它會使用 Azure 儲存體) ,但擴充的整體成本會降低,因為儲存體的成本小於影像擷取和 AI 處理。

當您啟用快取時,索引子會評估更新,以判斷是否可以從快取提取現有的擴充。 來自檔破解階段的影像和文字內容,加上上游或正交編輯的技能輸出,可能可重複使用。

執行技能集更新所指示的累加式擴充之後,重新整理的結果會寫回快取,也會寫回搜尋索引或知識存放區。

快取組態

實際上,快取會儲存在 Azure 儲存體帳戶的 Blob 容器中,每個索引子一個。 每個索引子都會獲派唯一且不可變的快取識別碼,對應至它所使用的容器。

當您指定 「cache」 屬性並執行索引子時,就會建立快取。 只能快取擴充的內容。 如果您的索引子沒有附加技能集,則不會套用快取。

下列範例說明已啟用快取的索引子。 如需完整指示 ,請參閱啟用擴充快取 。 請注意,新增快取屬性時,請在要求上使用預覽 API 版本 2020-06-30-Preview 或更新版本。

POST https://[search service name].search.windows.net/indexers?api-version=2020-06-30-Preview
    {
        "name": "myIndexerName",
        "targetIndexName": "myIndex",
        "dataSourceName": "myDatasource",
        "skillsetName": "mySkillset",
        "cache" : {
            "storageConnectionString" : "<Your storage account connection string>",
            "enableReprocessing": true
        },
        "fieldMappings" : [],
        "outputFieldMappings": [],
        "parameters": []
    }

快取管理

快取的生命週期由索引子所管理。 如果刪除索引子,也會刪除其快取。 如果索引子上的 「cache」 屬性設定為 null 或連接字串已變更,則會在下一個索引子執行時刪除現有的快取。

雖然累加式擴充的設計目的是要偵測和回應變更,但您不需要介入,但有可用來叫用特定行為的參數:

設定新檔的優先順序

「cache」 屬性包含 「enableReprocessing」 參數。 它用來控制處理快取中已表示的傳入檔。 當 true (預設) 時,當您重新執行索引子時,快取中已經有的檔會重新處理,假設您的技能更新會影響該檔。

若為 false,則不會重新處理現有檔,有效地將新的傳入內容優先于現有內容。 您只應該暫時將 「enableReprocessing」 設定為 false。 在大部分情況下,將 「enableReprocessing」 設定為 true 可確保所有檔和現有檔都根據目前的技能集定義有效。

略過技能集評估

修改技能並重新處理該技能通常會交手。 不過,技能的某些變更不應該重新處理 (例如,將自訂技能部署至新位置,或使用新的存取金鑰) 。 最有可能的是,這些是周邊修改,不會影響技能輸出本身的本質。

如果您知道技能的變更確實是超級的,您應該將 「disableCacheReprocessingChangeDetection」 參數設定為 true 來覆寫技能評估:

  1. 呼叫 更新技能集 並修改技能集定義。
  2. 在要求上附加 「disableCacheReprocessingChangeDetection=true」 參數。
  3. 提交變更。

設定此參數可確保只會認可技能集定義的更新,而且不會評估變更對現有快取的影響。 使用預覽 API 版本 2020-06-30-Preview 或更新版本。

PUT https://[servicename].search.windows.net/skillsets/[skillset name]?api-version=2020-06-30-Preview
    {
        "disableCacheReprocessingChangeDetection" : true
    }

略過資料來源驗證檢查

對資料來源定義所做的大部分變更都會使快取失效。 不過,對於您知道變更不應該使快取失效的案例,例如變更連接字串或輪替儲存體帳戶上的金鑰 - 在資料來源更新上附加 「ignoreResetRequirement」 參數。 將此參數設定為 true 可讓認可通過,而不需要觸發重設條件,會導致從頭重建和填入所有物件。

PUT https://[search service].search.windows.net/datasources/[data source name]?api-version=2020-06-30-Preview
    {
        "ignoreResetRequirement" : true
    }

強制技能集評估

快取的目的是要避免不必要的處理,但假設您變更索引子不會偵測到 (的技能,例如變更外部程式碼中的某個專案,例如自訂技能) 。

在此情況下,您可以使用 重設技能 來強制重新處理特定技能,包括依賴該技能輸出的任何下游技能。 此 API 會接受 POST 要求,其中包含應失效並標示要重新處理的技能清單。 重設技能之後,請遵循 執行索引子 要求來叫用管線處理。

重新快取特定檔

重設索引子 會導致重新處理搜尋主體中的所有檔。 在只需要重新處理少數檔的情況下,請使用重 設檔 (預覽) 強制重新處理特定檔。 重設檔時,索引子會讓該檔的快取失效,然後從資料來源讀取它來重新處理。 如需詳細資訊,請參閱 執行或重設索引子、技能和檔

若要重設特定檔,要求會提供從搜尋索引讀取的檔索引鍵清單。 如果索引鍵對應至外部資料源中的欄位,您提供的值應該是搜尋索引中使用的值。

根據您呼叫 API 的方式,要求會附加、覆寫或排入金鑰清單佇列:

  • 使用不同金鑰多次呼叫 API 會將新金鑰附加至檔金鑰重設清單。

  • 將 「overwrite」 查詢字串參數設定為 true 的呼叫 API 將會覆寫要求承載所要重設的檔金鑰目前清單。

  • 呼叫 API 只會在索引子執行的工作佇列中新增檔索引鍵。 下次叫用索引子時,會依排程或視需要排定,優先處理重設檔索引鍵,再處理資料來源的任何其他變更。

下列範例說明重設檔要求:

POST https://[search service name].search.windows.net/indexers/[indexer name]/resetdocs?api-version=2020-06-30-Preview
    {
        "documentKeys" : [
            "key1",
            "key2",
            "key3"
        ]
    }

使快取失效的變更

啟用快取之後,索引子會評估管線組合中的變更,以判斷可以重複使用哪些內容,以及需要重新處理的內容。 本節會列舉讓快取立即失效的變更,後面接著觸發累加處理的變更。

失效變更是指會讓整個快取都不再有效的變更。 舉例來說,讓您的資料來源進行更新的變更,即為失效變更。 以下是索引子管線中任何部分變更的完整清單,會使快取失效:

  • 變更資料來源類型
  • 變更資料來源容器
  • 變更資料來源認證
  • 變更資料來源變更偵測原則
  • 變更資料來源刪除偵測原則
  • 變更索引子欄位對應
  • 變更索引子參數:
    • 剖析模式
    • 排除的副檔名
    • 已編製索引的副檔名
    • 僅針對過大的文件編製儲存體中繼資料的索引
    • 分隔符號文字標頭
    • 分隔符號文字分隔符號
    • 文件根目錄
    • 影像動作 (影像擷取方式的變更)

觸發累加處理的變更

累加處理會評估您的技能集定義,並判斷要重新執行哪些技能,選擇性更新文件樹狀結構受影響的部分。 以下是導致累加式擴充的變更完整清單:

  • 變更技能類型 (更新技能的 OData 類型)
  • 技能特定參數會更新,例如 URL、預設值或其他參數
  • 技能輸出變更,技能會傳回其他或不同的輸出
  • 技能輸入變更導致不同的進階,技能鏈結已變更
  • 如果為任何上游技能提供輸入的技能已更新,則此上游技能將會失效
  • 更新至知識存放區投影位置,會導致重新投影檔
  • 知識存放區投影的變更,會導致重新投影檔
  • 索引子上變更的輸出欄位對應會導致將檔重新投影至索引

用於快取的 API

REST API 版本或更新版本 2020-06-30-Preview 透過索引子上的其他屬性提供累加式擴充。 技能集和資料來源可以使用正式發行的版本。 除了參考檔之外,請參閱 設定增量擴充的快取 ,以取得作業順序的詳細資料。

下一步

累加式擴充是一項功能強大的功能,可擴充技能集和 AI 擴充的變更追蹤。 累加式擴充可讓您在逐一查看技能集設計時重複使用現有的已處理內容。 在下一個步驟中,在您的索引子上啟用快取。