Share via


Azure AI 搜尋服務中的資料匯入

在 Azure AI 搜尋服務中,查詢會針對載入至搜尋索引的使用者擁有內容執行。 本文描述兩個用於填入索引的基本工作流程:以程式設計方式將資料「推送」至索引,或使用搜尋索引子「提取」資料。

這兩種方法都會從外部資料來源載入文件。 雖然您可以建立空的索引,但在您新增內容之前無法查詢該索引。

注意

如果 AI 擴充是解決方案需求,您必須使用提取模型 (索引子) 載入索引。 技能集會附加至索引子,且不會獨立執行。

將資料推送到索引

推送模型是使用 API 將文件上傳至現有搜尋索引的方法。 您可以個別或以批次方式上傳文件,每個批次最多 1000 個文件,或每個批次 16 MB,以先到者為準。

主要優點包括:

  • 針對資料來源類型沒有限制。 承載必須包含對應至索引結構描述的 JSON 文件,但資料可以來自任何地方。

  • 針對執行頻率沒有限制。 您可以視需要經常將變更推送到索引。 若應用程式需要低延遲 (例如,當索引需要與產品庫存波動保持同步時),推送模式是您的唯一選擇。

  • 您可以完全掌控連線能力與文件的安全擷取。 相反地,索引子連線是使用 Azure AI 搜尋服務中提供的安全性功能進行驗證。

如何將資料推送至 Azure AI 搜尋服務索引

請使用下列 API,將單一或多份文件載入索引中:

不支援透過 Azure 入口網站推送資料。

如需推送 API 的簡介,請參閱:

編制索引動作:upload、merge、mergeOrUpload、delete

您可以根據文件控制編製索引動作的類型,進而指定文件是否應該完整上傳、與現有文件內容合併,或將其刪除。

無論您使用 REST API 還是 Azure SDK,都支援下列文件作業進行資料匯入:

  • Upload 動作類似 "upsert",如果是新文件,就會插入該文件,如果文件已經存在,就會更新或取代該文件。 如果文件遺漏索引所需的值,則文件欄位的值會設定為 null。

  • merge 會更新已經存在的文件,而且會使找不到的文件失敗。 合併會取代現有的值。 基於這個原因,請務必檢查包含多個值的集合欄位,例如類型為 Collection(Edm.String) 的欄位。 例如,如果 tags 欄位以 ["budget"] 的值開始,而且使用 ["economy", "pool"] 執行合併,則 tags 欄位的最終值為 ["economy", "pool"]。 其不會是 ["budget", "economy", "pool"]

  • 如果文件存在,mergeOrUpload 的行為就像 merge 一樣,而如果文件是新的,則像 upload 一樣。

  • delete 會從索引中刪除整份文件。 如果想要移除個別欄位,請改用 merge,將有問題的欄位設定為 null。

將資料提取到索引中

提取模型會使用連線至受支援資料來源的索引子,自動將資料上傳至您的索引中。 來自 Microsoft 的索引子適用於下列平台:

您可以使用由 Microsoft 合作夥伴開發和維護的第三方連接器。 如需詳細資訊和連結,請參閱資料來源資源庫

索引子可將索引連接到資料來源 (通常是資料表、檢視或對等結構),並將來源欄位對應至索引中的對等欄位。 在執行期間,資料列集會自動轉換為 JSON 並載入指定的索引。 所有索引子都支援排程,以便您可以指定資料重新整理的頻率。 如果資料來源支援索引子,則大部分的索引子都會提供變更追蹤。 除了辨識新文件,索引子還會追蹤現有文件的變更和刪除,讓您不必主動管理索引中的資料。

如何將資料提取至 Azure AI 搜尋服務索引

請使用以下工具和 API,進行以索引子為基礎的索引編製:

索引子功能會在 [Azure 入口網站]、REST API 以及 .NET SDK 中出現。

使用入口網站的優點在於,Azure AI 搜尋服務通常可藉由讀取來源資料集的中繼資料,產生預設的索引結構描述。

透過搜尋總管確認資料匯入

對文件上傳執行初步檢查的快速方法是使用入口網站中的搜尋總管

Screenshot of Search Explorer command in the Azure portal.

此總管可讓您查詢索引,而不需撰寫任何程式碼。 搜尋體驗是以預設設定為基礎,例如簡單語法和預設 searchMode 查詢參數。 結果會以 JSON 格式傳回,以便您檢查整份文件。

以下是您可以透過 JSON 檢視在 [搜尋總管] 中執行的範例查詢。 "HotelId" 是 hotels-sample-index 的文件索引鍵。 篩選條件會提供特定文件的文件識別碼:

{
  "search": "*",
  "filter": "HotelId eq '50'"
}

如果您使用 REST,此查閱查詢會達成相同的目的。

另請參閱