Azure AI 搜尋服務中的索引子
Azure AI 搜尋服務中的索引子是編目程式,可從雲端資料來源擷取文字資料,並使用來源資料與搜尋索引之間的欄位對欄位對應來填入搜尋索引。 這種方法有時稱為「提取模型」,因為您不需要撰寫任何程式碼來將資料新增至索引,搜尋服務就會自行提取資料。
索引子也會驅動技能集執行和 AI 擴充,讓您可在其中設定技能以整合路由至索引的額外內容處理。 一些範例包括影像檔案的 OCR、資料區塊化的文字分割技能、多種語言的文字翻譯。
索引子目標支援的資料來源。 索引子組態會指定資料來源 (來源) 和搜尋索引 (目的地)。 數個來源,例如 Azure Blob 儲存體,具有更多該內容類型特有的設定屬性。
您可以隨需執行索引子,也可以依週期性的資料重新整理排程執行,最多每五分鐘執行一次。 若想更頻繁地進行更新,則 Azure AI 搜尋服務和外部資料來源中都必須要有可同時更新資料的「發送模型」。
搜尋服務會對每個搜尋單位執行一次索引子作業。 如果您需要並行處理,請確保您有足夠的複本。 索引子不會在背景執行,因此如果服務面臨壓力,您可能會檢測到比平常更多的查詢節流。
索引子案例和使用案例
您可以使用索引子作為資料擷取的唯一方式,或與其他技術搭配使用。 下表摘要說明主要案例。
案例 | 策略 |
---|---|
單一資料來源 | 這是最簡單的模式:一個資料來源是搜尋索引的唯一內容提供者。 大部分支援的資料來源都提供某種形式的變更偵測,讓後續索引子執行可以在來源中新增或更新內容時挑出差異。 |
多個資料來源 | 索引子規格只能有一個資料來源,但搜尋索引本身可以接受來自多個來源的內容,其中每個索引子執行都會從不同的資料提供者擷取新的內容。 每個來源都可以分享完整文件,或在每個文件中填入選取的欄位。 如需深入探討此案例,請參閱教學課程:從多個資料來源編制索引。 |
多個索引子 | 如果您需要變更執行階段參數、排程或欄位對應,通常必須將多個資料來源與多個索引子配對。 Azure AI 搜尋服務的跨區域擴增是另一個案例。 您可以在不同的區域中有相同搜尋索引的複本。 若要同步處理搜尋索引內容,您可以從相同的資料來源提取多個索引子,其中每個索引子以每個區域中不同的搜尋索引為目標。 平行索引非常大型的資料集需要採用多個索引子策略,其中每個索引子均以資料子集為目標。 |
內容轉換 | 索引子可驅動技能執行和 AI 擴充。 內容轉換定義在您附加至索引子的技能集中。 您可以使用技能以納入資料區塊化和向量化。 |
您應該規劃為每個目標索引和資料來源組合建立一個索引子。 您可將多個索引子寫入相同的索引中,並針對多個索引子重複使用相同的資料來源。 不過,索引子一次只能取用一個資料來源,也只能寫入一個索引中。 如下圖所示,一個資料來源會提供一個索引子,這會接著填入單一索引:
雖然您一次只能使用一個索引子,不過資源可用於不同的組合。 下圖的主要重點是資料來源能夠與一個以上的索引子配對,而且多個索引子可以寫入相同的索引。
支援的資料來源
索引子搜耙 Azure 和 Azure 外部的資料存放區。
- Azure Blob 儲存體
- Azure Cosmos DB
- Azure Data Lake Storage Gen2 \(部分機器翻譯\)
- Azure SQL Database
- Azure 資料表儲存體
- Azure SQL 受控執行個體
- Azure 虛擬機器上的 SQL Server
- Azure 檔案儲存體 (預覽版)
- Azure MySQL (預覽版)
- Microsoft 365 中的 SharePoint (預覽版)
- Azure Cosmos DB for MongoDB (預覽版)
- Azure Cosmos DB for Apache Gremlin (預覽版)
不支援 Azure Cosmos DB for Cassandra。
索引子接受壓平合併的資料列集,例如資料表或檢視,或容器或資料夾中的項目。 在大部分情況下,它會為每個資料列、記錄或項目建立一個搜尋文件。
當您使用共用私人連結時,可以使用標準網際網路連線 (公用) 或加密私人連線來建立遠端資料源的索引子連線。 您也以設定連線使用受控識別進行驗證。 如需安全連線的詳細資訊,請參閱索引子存取受 Azure 網路安全性功能保護的內容,以及使用受控識別連接資料來源。
編制索引階段
初始執行時,當索引空白時,索引子會讀入資料表或容器所提供的所有資料。 在後續執行時,索引子通常只能偵測和擷取已變更的資料。 對於 Blob 資料,系統會自動執行變更偵測。 對於 Azure SQL 或 Azure Cosmos DB 之類的其他資料來源,必須啟用變更偵測。
索引子對於收到的每一個文件,都會實作或協調多個步驟,從文件擷取到最終搜尋引擎「轉接」以進行編制索引。 索引子也可以選擇性地驅動技能集執行和輸出,前提是已定義技能集。
階段 1:文件萃取
文件萃取是開啟檔案和擷取內容的程序。 文字型內容可以從服務上的檔案、資料表中的資料列,或容器或集合中的項目擷取。 如果您新增技能集和影像技能,文件萃取也可以擷取影像並排入佇列以進行影像處理。
根據資料來源,索引子會嘗試不同的作業來擷取可能可編制索引的內容:
當文件是內嵌影像的檔案時,例如 PDF,索引子會擷取文字、影像和中繼資料。 索引子可以從 Azure Blob 儲存體、Azure Data Lake Storage Gen2 和 SharePoint 開啟檔案。
當文件是 Azure SQL 中的記錄時,索引子會從每個記錄中的每個欄位擷取非二進位內容。
當文件是 Azure Cosmos DB 中的記錄時,索引子會從 Azure Cosmos DB 文件中的欄位和子欄位擷取非二進位內容。
階段 2:欄位對應
索引子會從來源欄位擷取文字,並傳送至索引或知識存放區中的目的地欄位。 當欄位名稱和資料類型一致時,路徑就顯而易見了。 不過,您可能想要在輸出中有不同的名稱或類型,在此情況下,您必須告訴索引子如何對應欄位。
若要指定欄位對應,請在索引子定義中輸入來源和目的地欄位。
當索引子讀取來源文件時,欄位對應會發生在文件萃取之後,但在轉換之前。 當您定義欄位對應時,來源欄位的值會依原樣傳送至目的地欄位,不進行任何修改。
階段 3:技能集執行
技能集執行是選用步驟,會叫用內建或自訂 AI 處理。 技能集可以在內容為二進位檔時,新增光學字元辨識 (OCR) 或其他形式的影像分析。 技能集也可以新增自然語言處理。 例如,您可以新增文字翻譯或關鍵字組擷取。
不論是哪一種轉換,技能集執行都是擴充發生的位置。 如果索引子是管線,您可以將技能集視為「管線內的管線」。
階段 4:輸出欄位對應
如果您包含技能集,則必須在索引子定義中指定輸出欄位對應。 技能集的輸出在內部會以稱為擴充文件的樹狀結構來表示。 輸出欄位對應可讓您選取要將此樹狀結構的哪些部分對應到索引中的欄位。
雖然名稱相似,但輸出欄位對應和欄位對應會建置不同來源的關聯性。 欄位對應會將來源欄位的內容關聯至搜尋索引中的目的地欄位。 輸出欄位對應會將內部擴充文件的內容 (技能輸出) 關聯至索引中的目的地欄位。 不同於被視為選用的欄位對應,任何應該在索引中轉換內容都需要輸出欄位對應。
下圖顯示索引子階段的範例索引子偵錯工作階段表示法:文件萃取、欄位對應、技能集執行,以及輸出欄位對應。
基本工作流程
索引子可以提供資料來源特有的功能。 在這方面,索引子或資料來源組態的某些層面會因索引子類型而所有不同。 不過,所有索引子都有共用的基本組成和需求。 下文涵蓋所有的索引子的通用步驟。
步驟 1:建立資料來源
索引子需要資料來源物件,以提供連接字串和可能的認證。 資料來源是獨立的物件。 多個索引子可以使用相同的資料來源物件,一次載入多個索引。
您可以使用下列任意方法建立資料來源:
- 使用 Azure 入口網站,在搜尋服務頁面的 [資料來源] 索引標籤上,選取 [新增資料來源] 以指定資料來源定義。
- 使用 Azure 入口網站,匯入資料精靈會輸出資料來源。
- 使用 REST API,呼叫建立資料來源。
- 使用適用於 .NET 的 Azure SDK,呼叫 SearchIndexerDataSourceConnection 類別
步驟 2:建立索引
索引子會自動執行有關資料擷取的某些工作,但是通常不包括建立索引。 必要條件是,您必須具有預先定義的索引,其中包含外部資料源中任何來源欄位的對應目標欄位。 欄位必須依名稱和資料類型進行比對。 如果沒有,您可以定義欄位對應來建立關聯。
如需詳細資訊,請參閱建立索引。
步驟 3:建立和執行 (或排程) 索引子
索引定義涵蓋可識別索引子的唯一屬性、指定要使用的資料來源和索引,並提供其他影響執行階段行為的組態選項,包括索引子要隨需執行或是按排程執行。
任何有關資料存取或技能集驗證的錯誤或警告都會在索引子執行期間發生。 在索引子執行開始之前,資料來源、索引和技能集等相依物件在搜尋服務上為被動項目。
如需詳細資訊,請參閱建立索引子
您可以在入口網站或透過取得索引子狀態 API 來監視索引子狀態。 您還應在索引上執行查詢,以確認結果如您所預期。
索引子沒有專用的處理資源。 根據此情況,索引子的狀態可能會在執行之前顯示為閒置狀態 (視佇列中的其他作業而定) 且執行階段可能無法預測。 其他因素也可定義索引子效能,例如文件大小、文件複雜度、影像分析等等。
下一步
現在您已建立索引子,下一個步驟是檢閱索引子屬性和參數、排程與索引子監視。 或者,您也可以返回支援的資料來源清單,以取得特定來源的詳細資訊。