註
Azure AI 搜尋服務 可透過 Azure 入口網站、REST API 及 Azure SDK 取得。 它同時也是 Foundry IQ 的基礎,這是一個管理式知識層,能將企業內容轉化為可重複使用、權限感知的知識庫,供 Microsoft Foundry 入口網站中的代理使用。
Important
這些功能支援與其他 Microsoft 服務 及第三方服務的連結。 使用這些服務須遵守其各自的條款,可能導致資料處理或儲存超出 Azure 合規邊界,以及資料流入 Azure 合規邊界。
你有責任管理資料是否會超出組織的合規與地理邊界及相關影響,並確保適當的權限、邊界與核准被提供。
你有責任仔細審查並測試你在特定使用情境中所建置的應用程式,並做出所有適當的決策與客製化。 這包括實施你自己負責任的 AI 緩解措施,例如元提示、內容過濾器或其他安全系統,並確保你的應用程式符合適當的品質、可靠性、安全性與可信度標準。 欲了解更多資訊,請參閱Azure AI 搜尋服務透明度說明。
在本文中,您將學習如何使用一套技能,將 內容從支援的資料來源中分割並向量化。 技能組中會呼叫「 Text Split 」技能或 「文件佈局 」來進行區塊化,並有一個嵌入技能,該技能會附加到 支援的嵌入模型 ,用於區塊向量化。 你也會學會如何將分塊和向量化的內容存入 向量索引中。
本文描述使用 REST 進行 整合向量化 的端到端工作流程。 關於入口網站的說明,請參見 快速入門:在Azure入口網站中向量化文字與圖片。
先決條件
一個有有效訂閱的 Azure 帳號。 免費註冊帳號。
一個Azure AI 搜尋服務服務。 我們建議基本層級或更高層級。
快速 啟動完成:無需金鑰連接 並 設定系統指派的管理身份。 雖然你可以使用基於金鑰的認證來進行資料平面操作,但本文假設角色 與受管理身份,這些更為安全。
支援的資料來源
整合向量化 適用於所有支援的資料來源。 然而,本文著重於最常用的資料來源,如下表所述。
| 資料來源 | 描述 |
|---|---|
| Azure Blob 儲存體 | 這個資料來源適用於 Blob 和表格。 你必須使用標準效能(一般用途 v2)帳號。 存取層級可分為熱、冷或寒冷。 |
| Azure Data Lake Storage(ADLS)第二代 | 這是一個啟用階層命名空間的 Azure 儲存體 帳號。 要確認你有Data Lake Storage,請檢查Overview頁面上的Properties標籤。
|
| Microsoft OneLake | 此資料來源可連結至 OneLake 檔案與捷徑。 |
支援的嵌入模型
請使用以下其中一種嵌入模型進行整合向量化。 部署說明會在 後面章節提供。
| 提供者 | 支援的模型 |
|---|---|
| Azure OpenAI 資源1, 2 | text-embedding-ada-002 text-embedding-3-small text-embedding-3-large |
| Microsoft Foundry 資源3 | 對於文字與圖像: Azure 視覺多模態4 |
1 你的 Azure OpenAI 資源的端點必須有一個 custom 子網域,例如 https://my-unique-name.openai.azure.com。 如果你在 Azure 入口網站建立資源,這個子網域會在資源設定時自動產生。
2 Azure 在 Microsoft Foundry 入口網站 建立的 OpenAI 資源(可存取嵌入模型)不被支援。 你必須在 Azure 入口網站建立一個 Azure OpenAI 資源。
3 為了計費,您必須將您的 Microsoft Foundry 資源附加到您的 Azure AI 搜尋服務 技能集中。 除非您使用 無索引鍵連線 來建立技能集,否則這兩個資源都必須位於相同的區域中。
4 Azure Vision 多模態嵌入模型可在 select regions 提供。
基於角色的存取
您可以搭配使用 Microsoft Entra ID 和角色指派,或是金鑰型驗證搭配完整存取連線字串。 對於 Azure AI 搜尋服務 與其他資源的連結,我們建議角色分配。
要配置基於角色的存取以進行整合向量化:
在你的搜尋服務中, 啟用角色 並 設定系統指派的管理身份。
在您的資料來源平台與嵌入模型提供者中,建立角色分配,讓您的搜尋服務能存取資料與模型。 請參閱 「準備你的資料 」和 「準備你的嵌入模型」。
註
免費搜尋服務支援與 Azure AI 搜尋服務的角色型連線。 不過,他們不支援在 Azure 儲存體 或 Azure Vision 的出站連線中使用受管理身份。 這種行為要求你在免費搜尋服務與其他 Azure 資源之間的連線中使用基於金鑰的認證。
想要更安全的連線,請使用基本層級或更高等級。 接著你可以啟用角色並設定一個受管理身份以取得授權存取。
取得 Azure AI 搜尋服務 的連線資訊
在此區塊中,您可以取得 Azure AI 搜尋服務 服務的端點與 Microsoft Entra 令牌。 這兩個值都是建立 REST 請求連接所必需的。
提示
以下步驟假設你使用 基於角色的存取 來進行概念驗證測試。 如果你想使用整合向量化來開發應用程式,請參考 使用 identities 將你的應用程式連接到Azure AI 搜尋服務。
在Azure 入口網站中,進入您的搜尋服務。
要取得您的搜尋端點,請複製概 覽 頁面上的網址。 一個搜尋端點的範例為
https://my-service.search.windows.net。要取得您的 Microsoft Entra 令牌,請在您的本地系統執行以下指令。 此步驟需完成 快速啟動:無鑰匙連接。
az account get-access-token --scope https://search.azure.com/.default --query accessToken --output tsv
準備好你的資料
在本節中,你將透過上傳檔案至 支援的資料來源、分配角色並取得連線資訊,為整合向量化做準備。
請前往Azure入口網站,進入你的Azure 儲存體帳號。
從左側窗格選擇 資料儲存>容器。
建立一個容器或選擇現有容器,然後將你的檔案上傳到容器中。
分配角色:
從左側窗格選擇 存取控制 (IAM)。
選擇 新增>角色分配。
在 工作函式角色中,選擇 儲存區資料讀取器,然後選擇 下一步。
在 「成員」中,選擇 「管理身份」,然後選擇 「選擇成員」。
選擇您的訂閱及搜尋服務的管理身份。
要取得 連接字串:
從左側窗格選擇「Security + networking>Access keys」。
複製任一連接字串,然後在 Set variables 中指定。
(可選)將你容器中的刪除與搜尋索引中的刪除同步。 要設定你的索引器進行刪除偵測:
新增自訂的元資料 ,讓索引器能掃描以判斷哪些斑點被標記為要刪除。 給你的自訂物件一個描述性的名稱。 例如,你可以將屬性命名為「IsDeleted」並設為 false。 對容器裡的每個黏液重複這個步驟。 當你想刪除 blob 時,將屬性改為 true。 如需更多資訊,請參閱從 Azure 儲存體索引時的變更與刪除偵測。
準備你的嵌入模型
在本節中,你將透過分配角色、取得端點,並部署一個支援的嵌入模型,來準備你的Azure AI 資源進行整合向量化。
Azure AI 搜尋服務 支援 text-embedding-ada-002、text-embedding-3-small 及 text-embedding-3-large。 Azure AI 搜尋服務 內部呼叫 Azure OpenAI 嵌入技能 以連接至 Azure OpenAI。
請前往 Azure portal 的 Azure OpenAI 資源。
分配角色:
從左側窗格選擇存取控制(IAM)。
選擇 新增>角色分配。
在 職缺功能角色中,選擇 認知服務 OpenAI 使用者,然後選擇 下一步。
在 「成員」中,選擇 「管理身份」,然後選擇 「選擇成員」。
選擇您的訂閱及搜尋服務的管理身份。
若要取得端點:
從左側窗格選擇 資源管理>鍵與端點。
複製你的 Azure OpenAI 資源端點。 你在 Set 變數中稍後指定這個 URL。
要部署嵌入模型:
登入 Foundry 入口網站,選擇你Azure的 OpenAI 資源。
部署 支援的嵌入模型。
複製部署名稱和模型名稱,這些名稱你之後在 Set 變數中指定。 部署名稱是你選擇的自訂名稱,而模型名稱則是你部署的模型,例如
text-embedding-ada-002。
設定變數
在本節中,你指定你的Azure AI 搜尋服務服務的連線資訊、支援的資料來源,以及你的支援的嵌入模型。
在Visual Studio Code中,將以下佔位符貼到你的
.rest或.http檔案中。@baseUrl = PUT-YOUR-SEARCH-SERVICE-URL-HERE @token = PUT-YOUR-MICROSOFT-ENTRA-TOKEN-HERE將
@baseUrl替換成搜尋端點,將@token替換成你在 取得 Azure AI 搜尋服務 的連線資訊 中獲得的 Microsoft Entra token。根據你的資料來源,加入以下變數。
資料來源 變數 輸入此資訊 Azure Blob 儲存體 @storageConnectionString以及@blobContainer在Prepare your data中建立的容器名稱和連接字串。 ADLS Gen2 @storageConnectionString以及@blobContainer在Prepare your data中建立的容器名稱和連接字串。 OneLake @workspaceId以及@lakehouseId您在準備資料中取得的工作區和資料湖存放庫識別碼。 根據你的嵌入模型提供者,加入以下變數。
嵌入模型提供者 變數 輸入此資訊 Azure OpenAI @aoaiEndpoint、、@aoaiDeploymentName和@aoaiModelName你在 準備你的嵌入模型時取得的端點名稱、部署名稱和模型名稱。 Azure Vision @AiFoundryEndpoint你在 準備嵌入模型時所取得的端點。 要驗證變數,請發送以下請求。
### List existing indexes by name GET {{baseUrl}}/indexes?api-version=2026-04-01 HTTP/1.1 Content-Type: application/json Authorization: Bearer {{token}}回應應該會出現在相鄰的窗格。 如果您有現有索引,系統會列出這些索引。 否則,清單就是空白。 如果 HTTP 程式碼是
200 OK,你就可以繼續了。
連線至資料
在本節中,您會連線到支援的資料來源,以進行索引子型編製索引。 索引器 在 Azure AI 搜尋服務 中需要一個資料來源,該來源需指定資料類型、憑證與容器。
使用 Create Data Source 定義一個在索引過程中提供連線資訊的資料來源。
### Create a data source POST {{baseUrl}}/datasources?api-version=2026-04-01 HTTP/1.1 Content-Type: application/json Authorization: Bearer {{token}} { "name": "my-data-source", "type": "azureblob", "subtype": null, "credentials": { "connectionString": "{{storageConnectionString}}" }, "container": { "name": "{{blobContainer}}", "query": null }, "dataChangeDetectionPolicy": null, "dataDeletionDetectionPolicy": null }設定
type為你的資料來源:azureblob或adlsgen2。要建立資料來源,請選擇 「發送請求」。
如果你用 OneLake,請設
credentials.connectionString為ResourceId={{workspaceId}}和container.name為{{lakehouseId}}。
建立一套技能集
在這個區塊中,你會 創建一套技能 組,需要一個內建技能來分割內容,並有一個嵌入技能來建立區塊的向量表示。 技能會在 後續章節進行索引時執行。
呼叫內建技能來分割內容
將內容分割成區塊有助於滿足嵌入模型的要求,並防止因截斷而遺失資料。 若要進一步瞭解分塊,請參閱向量搜尋解決方案的大型文件分塊。
對於內建的資料分塊,Azure AI 搜尋服務 提供 文字分割技能 和 Azure Content Understanding 技能。 Text Split 技能會將文字依特定長度拆分為句子或頁面,而 Azure 內容理解技能則會執行考量版面配置的語意分塊,並保留段落邊界。
使用 Create Skillset 來定義技能組。
### Create a skillset POST {{baseUrl}}/skillsets?api-version=2026-04-01 HTTP/1.1 Content-Type: application/json Authorization: Bearer {{token}} { "name": "my-skillset", "skills": [] }在
skills陣列中,呼叫文字分割技能或Azure內容理解技能。 你可以貼上以下其中一個定義。"skills": [ { "@odata.type": "#Microsoft.Skills.Text.SplitSkill", "name": "my-text-split-skill", "textSplitMode": "pages", "maximumPageLength": 2000, "pageOverlapLength": 500, "maximumPagesToTake": 0, "unit": "characters", "defaultLanguageCode": "en", "inputs": [ { "name": "text", "source": "/document/text", "inputs": [] } ], "outputs": [ { "name": "textItems" } ] }, { "@odata.type": "#Microsoft.Skills.Util.ContentUnderstandingSkill", "name": "my-content-understanding-skill", "context": "/document", "chunkingProperties": { "method": "semantic", "unit": "tokens", "maximumLength": 500 }, "inputs": [ { "name": "file_data", "source": "/document/file_data" } ], "outputs": [ { "name": "text_sections", "targetName": "text_sections" } ] } ]
呼叫一個嵌入技能來向量化區塊
若要向量化您的區塊化內容,技能集需要指向支援內嵌模型的內嵌技能。
在
skills陣列中的內建分塊技能之後,接著呼叫 Azure OpenAI 嵌入技能或 Azure Vision 多模態嵌入技能(預覽)。 你可以貼上以下其中一個定義。{ "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill", "resourceUri": "{{aoaiEndpoint}}", "deploymentId": "{{aoaiDeploymentName}}", "modelName": "{{aoaiModelName}}", "dimensions": 1536, "inputs": [ { "name": "text", "source": "/document/text" } ], "outputs": [ { "name": "embedding" } ] }, { "@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill", "context": "/document", "modelVersion": "2023-04-15", "inputs": [ { "name": "url", "source": "/document/metadata_storage_path" }, { "name": "queryString", "source": "/document/metadata_storage_sas_token" } ], "outputs": [ { "name": "vector" } ] }註
Azure Vision 多模態嵌入技能目前處於預覽階段。 如果你想呼叫這個技能,請使用最新的預覽 API 版本。
如果你使用 Azure OpenAI 嵌入技能,請將
dimensions設為由你的嵌入模型產生的 嵌入數量。如果您使用 Azure Vision 多模態嵌入技能,請在 陣列之後
skills。 此附件僅供帳單用途。"skills": [ ... ], "cognitiveServices": { "@odata.type": "#Microsoft.Azure.Search.AIServicesByIdentity", "subdomainUrl": "{{AiFoundryEndpoint}}" }要建立技能組,請選擇 「發送請求」。
建立向量索引
在本節中,你要在Azure AI 搜尋服務服務上建立一個 向量索引來建立實體資料結構。 向量索引的模式需要以下條件:
- 名稱
- 鍵域(字串)
- 一個或多個向量場
- 向量配置
向量場儲存了分塊資料的數值表示。 它們必須是可以搜尋和檢索的,但不能是可篩選、可分面或可排序的。 它們也不能有分析器、正規化器或同義映射指派。
除了向量場外,以下步驟的範例索引還包含非向量場,適用於人類可讀的內容。 通常會包含你想要向量化內容的純文字對應物。 欲了解更多資訊,請參閱 建立向量索引。
使用 Create Index 來定義向量索引的結構。
### Create a vector index POST {{baseUrl}}/indexes?api-version=2026-04-01 HTTP/1.1 Content-Type: application/json Authorization: Bearer {{token}} { "name": "my-vector-index", "fields": [], "vectorSearch": [] }-
"vectorSearch": { "algorithms": [ { "name": "hnsw-algorithm", "kind": "hnsw", "hnswParameters": { "m": 4, "efConstruction": 400, "efSearch": 100, "metric": "cosine" } } ], "profiles": [ { "name": "vector-profile-hnsw", "algorithm": "hnsw-algorithm", } ] }vectorSearch.algorithms指定用於索引與查詢向量場的演算法,並將vectorSearch.profiles演算法配置連結到你可以指派給向量場的設定檔。 根據你的嵌入模型,請更新
vectorSearch.algorithms.metric。 距離度量的有效值 為cosine、dotproduct、euclidean、hamming和 。在陣列中加入欄位
fields。 包含用於文件識別的鍵域、用於人類可讀內容的非向量欄位,以及用於嵌入的向量欄位。"fields": [ { "name": "id", "type": "Edm.String", "key": true, "filterable": true }, { "name": "title", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "retrievable": true }, { "name": "titleVector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": false, "stored": true, "dimensions": 1536, "vectorSearchProfile": "vector-profile-hnsw" }, { "name": "content", "type": "Edm.String", "searchable": true, "retrievable": true }, { "name": "contentVector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": false, "stored": false, "dimensions": 1536, "vectorSearchProfile": "vector-profile-hnsw" } ]根據你的嵌入技能,為每個向量場設
dimensions為以下數值。嵌入技巧 輸入這個數值 Azure OpenAI 你的嵌入模型產生的嵌入數量。 Azure Vision 1024
在索引中加入向量器
在本節中,你透過 在索引中定義向量化 器,在查詢時啟用向量化。 向量器利用嵌入模型,將你的資料索引,將搜尋字串或影像解碼成向量進行向量搜尋。
在
vectorSearch.profiles之後新增 Azure OpenAI 向量化工具 或 Azure Vision 向量化工具(預覽版) 你可以貼上以下其中一個定義。"profiles": [ ... ], "vectorizers": [ { "name": "my-openai-vectorizer", "kind": "azureOpenAI", "azureOpenAIParameters": { "resourceUri": "{{aoaiEndpoint}}", "deploymentId": "{{aoaiDeploymentName}}", "modelName": "{{aoaiModelName}}" } }, { "name": "my-ai-services-vision-vectorizer", "kind": "aiServicesVision", "aiServicesVisionParameters": { "resourceUri": "{{AiFoundryEndpoint}}", "modelVersion": "2023-04-15" } } ]註
Azure Vision 向量器目前處於預覽階段。 如果你想呼叫這個向量器,請使用最新的預覽版 API。
在
vectorSearch.profiles中指定你的向量器。"profiles": [ { "name": "vector-profile-hnsw", "algorithm": "hnsw-algorithm", "vectorizer": "my-openai-vectorizer" } ]要建立向量索引,請選擇 「發送請求」。
建立索引器
在這個章節中,你會建立一個 索引器 ,來驅動整個向量化流程,從資料擷取到技能組合執行再到索引。 我們建議您依 照排程執行索引器 ,以處理因限速而遺漏的變更或文件。
使用 Create Indexer 來定義一個執行向量化管線的索引器。
### Create an indexer POST {{baseUrl}}/indexers?api-version=2026-04-01 HTTP/1.1 Content-Type: application/json Authorization: Bearer {{token}} { "name": "my-indexer", "dataSourceName": "my-data-source", "targetIndexName": "my-vector-index", "skillsetName": "my-skillset", "schedule": { "interval": "PT2H" }, "parameters": { "batchSize": null, "maxFailedItems": null, "maxFailedItemsPerBatch": null } }要建立索引器,請選擇 「發送請求」。
執行向量查詢以確認索引
在本節中,你將透過 建立向量查詢來驗證內容是否成功被索引。 因為你在 前一節設定了向量器,搜尋引擎可以將純文字或圖片解碼成向量以執行查詢。
使用 Documents - Search Post 來定義一個在查詢時被向量化的查詢。
### Run a vector query POST {{baseUrl}}/indexes('my-vector-index')/docs/search.post.search?api-version=2026-04-01 HTTP/1.1 Content-Type: application/json Authorization: Bearer {{token}} { "count": true, "select": "title, content", "vectorQueries": [ { "kind": "text", "text": "a sample text string for integrated vectorization", "fields": "titleVector, contentVector", "k": "3" } ] }註
Azure Vision 向量器目前處於預覽階段。 如果你想呼叫這個向量器,請使用最新的預覽版 API。
對於呼叫整合向量化的查詢,
kind必須設為text,且text必須指定文字字串。 此字串會傳遞給指派給向量場的向量器。 欲了解更多資訊,請參閱 「帶整合向量化的查詢」。要執行向量查詢,請選擇 「發送請求」。