分享方式:


Azure AI 搜尋服務中的知識存放區

知識存放區是次要儲存體,適用於 Azure AI 搜尋服務中技能集所建立的 AI 擴充內容。 在 Azure AI 搜尋服務中,編製索引作業一律會將輸出傳送至搜尋索引,但如果將技能集附加至索引子,您也可以選擇性地將 AI 擴充的輸出傳送至 Azure 儲存體中的容器或資料表。 知識存放區可以用於非搜尋案例 (例如知識採礦) 中的獨立分析或下游處理。

編製索引的兩個輸出 (搜尋索引和知識存放區) 是相同管線的互斥產品。 這兩者衍生自相同的輸入且包含相同的資料,但其內容分別在不同的應用程式中結構化、儲存及使用。

具有技能的管線

實際上,知識存放區是 Azure 儲存體,可能會以 Azure 表格儲存體和 (或) Azure Blob 儲存體的形式存在。 任何可連線至 Azure 儲存體的工具或程序都可以取用知識存放區的內容。 Azure AI 搜尋服務中沒有查詢支援,用於從知識存放區擷取內容。

透過 Azure 入口網站檢視時,知識存放區看起來就像任何其他資料表、物件或檔案的集合。 下列螢幕擷取畫面顯示由三個資料表組成的知識存放區。 您可以採用命名慣例,例如 kstore 前置詞,將您的內容保存在一起。

技能在擴充樹狀結構讀取和寫入

知識存放區的優點

知識存放區的主要優點有兩個:彈性地存取內容,以及塑造資料的能力。

不同於只能在 Azure AI 搜尋服務中透過查詢存取的搜尋索引,任何支援 Azure 儲存體連線的工具、應用程式或程式,都可以存取知識存放區。 此彈性可創造新的案例來取用擴充管線所產生的分析和擴充內容。

擴充資料的相同技能也可以用來塑造資料。 某些工具 (例如 Power BI) 較適合與資料表搭配使用,而資料科學工作負載可能需要 Blob 格式的複雜資料結構。 將 Shaper 技能新增至技能可讓您控制資料的形態。 然後,您可以將這些形態傳遞至投影項目 (資料表或 Blob),以建立與資料預期用途相符的實體資料結構。

下列影片將說明這兩個優點與其他資訊。

知識存放區定義

知識存放區會在技能定義內進行定義,而且有兩個元件:

  • Azure 儲存體的連接字串

  • 判斷知識存放區是否包含資料表、物件或檔案的投影。 投影元素是陣列。 您可以在一個知識存放區內建立多個「資料表-物件-檔案」組合。

    "knowledgeStore": {
        "storageConnectionString":"<YOUR-AZURE-STORAGE-ACCOUNT-CONNECTION-STRING>",
        "projections":[
           {
              "tables":[ ],
              "objects":[ ],
              "files":[ ]
           }
        ]
    }
    

您在此結構中指定的投影類型會決定知識存放區所使用的儲存體類型,但不是其結構。 資料表中的欄位、物件和檔案是由 Shaper 技能輸出決定 (如果您是以程式設計方式建立知識存放區),或是由匯入資料精靈決定 (如果您是使用入口網站)。

  • tables 會將擴充的內容投影到表格儲存體。 當需要表格式報告結構以輸入至分析工具,或作為資料框架匯出至其他資料存放區時,請定義資料表投影。 您可在相同投影群組中指定多個 tables,以取得擴充文件的子集或橫剖面。 在相同的投影群組內會保留資料表關聯性,如此即可使用所有的資料表。

    投影的內容不會彙總或正規化。 下列螢幕擷取畫面顯示以關鍵片語排序的資料表,並顯示相鄰資料行中指出的父文件。 相較於編製索引期間的資料擷取,這裡沒有內容的語言分析或彙總。 複數形式和大小寫的差異會被視為不同的實例。

    資料表中關鍵片語和文件的螢幕擷取畫面

  • objects 會將 JSON 文件投影至 Blob 儲存體。 object 其實體表示是一種代表擴充文件的階層式 JSON 結構。

  • files 會將映像檔案投影至 Blob 儲存體。 file 是從文件擷取並完整傳輸至 Blob 儲存體的影像。 雖然其名為「檔案」,但其會顯示在 Blob 儲存體中,而不是檔案儲存體。

建立知識存放區

若要建立知識存放區,請使用入口網站或 API。

您將需要 Azure 儲存體技能 (部分機器翻譯) 和索引子。 由於索引子需要搜尋索引,因此您也需要提供索引定義。

使用入口網站方法是快速完成知識存放區的路徑。 或者,選擇 REST API 以深入了解物件的定義方式和關聯方式。

使用匯入資料精靈,在四個步驟中建立您的第一個知識存放區

  1. 定義其中包含待擴充資料的資料來源。

  2. 定義技能。 技能會指定擴充步驟和知識存放區。

  3. 定義索引結構描述。 您可能不需要索引結構描述,但索引子需要。 精靈可推斷索引。

  4. 完成精靈。 最後一個步驟會建立資料擷取、擴充和知識存放區。

精靈會自動執行數個工作。 具體而言,其會為您建立塑形和投影 (Azure 儲存體中實體資料結構的定義)。

使用應用程式連線

一旦儲存體中存在擴充的內容之後,連線到 Azure 儲存體的任何工具或技術都可以用來探索、分析或取用內容。 下列清單是一個起點:

  • Azure 入口網站中的 [儲存體總管]或 [儲存體瀏覽器],用於檢視擴充的文件結構和內容。 您可以將此視為基準工具來檢視知識存放區內容。

  • Power BI,用於報告和分析。

  • Azure Data Factory,用於進一步操作。

內容生命週期

每次執行索引子和技能時,如果技能或基礎來源資料變更,知識存放區就會隨之更新。 索引子所挑選的任何變更都會透過擴充程序傳播到知識存放區中的投影,以確保投影的資料是原始資料來源中內容的目前形式。

注意

雖然您可以在投影中編輯資料,但假設來源資料中的文件已更新,則任何編輯都會在下一個管線叫用上遭到覆寫。

來源資料中的變更

對於支援變更追蹤的資料來源,索引子會處理最新和變更的文件,並略過已經處理的現有文件。 時間戳記資訊會因資料來源不同而有所差異,但在 Blob 容器中,索引子會查看 lastmodified 日期以判斷需要擷取哪些 Blob。

技能的變更

如果您要變更技能集,您應該啟用擴充文件的快取,以盡可能重複使用現有的擴充。

如果沒有累加式快取,索引子一律會依高水位線的順序處理文件,而不會往回移動。 對於 Blob,索引子會處理依 lastModified 排序的 Blob,而不論索引子設定或技能有任何變更。 如果您變更技能,先前處理的文件並不會更新以反映新的技能。 技能變更之後處理的文件會使用新的技能,導致索引文件中混合舊技能和新技能。

透過累加快取,技能更新之後,索引子便會重複使用未受到技能變更影響的任何擴充。 上游擴充會從快取提取,如同無關已變更技能的任何獨立擴充。

刪除

雖然索引子會在 Azure 儲存體中建立和更新結構及內容,但不會將其刪除。 即使刪除索引子或技能,投影仍會繼續存在。 身為儲存體帳戶的擁有者,如果不再需要投影,您應該將其刪除。

下一步

知識存放區可提供擴充文件的持續性,在設計技能集時,或是在建立新結構和內容供任何能夠存取 Azure 儲存體帳戶的用戶端應用程式使用時,將可發揮作用。

建立擴充文件最簡單的方法是透過入口網站 (部分機器翻譯),但 REST 用戶端和 REST API 可以讓我們更深入了解如何以程式設計方式建立和參考物件。

使用 REST 建立知識存放區 (部分機器翻譯)