View a markdown version of this page

Amazon OpenSearch Service 的自動語意擴充 - Amazon OpenSearch Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon OpenSearch Service 的自動語意擴充

簡介

Amazon OpenSearch Service word-to-word比對 (詞搜尋) 來尋找結果,類似於其他傳統搜尋引擎。這種方法非常適合產品代碼或模型編號等特定查詢,但難以進行抽象搜尋,因為了解使用者意圖變得至關重要。例如,當您搜尋 "shoes for the Beach" 時,語彙搜尋會比對目錄項目中的個別單字 "shoes"、"beach"、"for" 和 "the",可能缺少不包含確切搜尋詞彙的相關產品,例如 "water-resistant shoess" 或 "surf shoes"。

自動語意強化透過同時考慮關鍵字比對和搜尋背後的內容意義來解決此限制。此功能可了解搜尋意圖,並改善高達 20% 的搜尋相關性。針對索引中的文字欄位啟用此功能,以增強搜尋結果。

注意

自動語意擴充適用於執行 2.19 版或更新版本的 OpenSearch Service 網域。此外,具有 OpenSearch 2.19 版的網域也需要接受最新的服務軟體版本更新。此功能適用於公有存取和 VPC 存取網域。對於 VPC 網域,您必須先授權 OpenSearch Service 功能主體,才能建立或管理語意擴充索引。如需詳細資訊,請參閱搭配 VPC 網域使用自動語意擴充

模型詳細資訊和效能基準

雖然此功能可處理幕後的技術複雜性,而不會公開基礎模型,但我們透過簡短的模型描述和基準結果來提供透明度,協助您在關鍵工作負載中做出採用特徵的明智決策。

自動語意擴充使用服務受管、預先訓練的稀疏模型,可有效運作,而無需自訂微調。模型會分析您指定的欄位,並根據從各種訓練資料中學到的關聯將其擴展到稀疏向量。展開的詞彙及其重要性權重會以原生 Lucene 索引格式存放,以便有效擷取。我們已使用僅限文件模式最佳化此程序,其中編碼只會在資料擷取期間發生。搜尋查詢只是字符化,而不是透過稀疏模型處理,使解決方案同時符合成本效益和效能。

我們在功能開發期間的效能驗證使用 MS MARCO 段落擷取資料集,其段落平均 334 個字元。對於相關性評分,我們在英文內容的 BEIR 基準上測量了前 10 個搜尋結果的平均標準化折扣累積收益 (NDCG) (ndcg@10),在多語言內容的 MIRACL 上測量了平均 ndcg@10。我們透過用戶端、第 90 個百分位數 (p90) 測量和搜尋回應 p90 評估了延遲這些基準提供搜尋相關性和回應時間的基準效能指標。以下是關鍵基準號碼 -

  • 英文 - 相較於語彙搜尋,相關性改善 20%。它也減少了 7.7% 的 P90 搜尋延遲 (BM25 為 26 毫秒,而自動語意擴充為 24 毫秒)。

  • 多語言 - 相較於語意搜尋,相關性改善 105%,而相較於語意搜尋,P90 搜尋延遲增加 38.4% (BM25 為 26 毫秒,自動語意擴充為 36 毫秒)。

鑑於每個工作負載的獨特性質,我們建議您在做出實作決策之前,先使用自己的基準標準在開發環境中評估此功能。

支援的語言

此功能支援英文。此外,模型也支援阿拉伯文、孟加拉文、中文、芬蘭文、法文、印地文、印尼文、日文、韓文、波斯文、俄文、西班牙文、斯瓦希里文和特拉古文。

設定網域的自動語意擴充索引

為您的文字欄位設定啟用自動語意擴充的索引非常簡單,您可以在新索引建立期間透過主控台、APIs 和 CloudFormation 範本進行管理。若要為現有索引啟用它,您需要為文字欄位重新建立已啟用自動語意擴充的索引。

主控台體驗 - AWS 主控台可讓您使用自動語意擴充欄位輕鬆建立索引。選取網域後,您會在主控台頂端找到建立索引按鈕。按一下建立索引按鈕後,您會找到定義自動語意擴充欄位的選項。在一個索引中,您可以結合英文和多語言的自動語意擴充,以及語彙欄位。

建立索引頁面,顯示索引名稱欄位、語意擴充欄位和搜尋欄位。

API 體驗 - 若要使用 AWS 命令列界面 (AWS CLI) 建立自動語意擴充索引,請使用 create-index 命令:

aws opensearch create-index \ --domain-name [domain_name] \ --index-name [index_name] \ --index-schema [index_body] \

在下列索引結構描述範例中, title_semantic 欄位的欄位類型設定為文字,且參數 semantic_enrichment 設定為狀態 ENABLED。設定語意_enrichment 參數可在 title_semantic 欄位上啟用自動語意擴充。您可以使用 language_options 欄位來指定英文MULTI-LINGUAL

aws opensearch create-index \ --id XXXXXXXXX \ --index-name 'product-catalog' \ --index-schema '{ "mappings": { "properties": { "product_id": { "type": "keyword" }, "title_semantic": { "type": "text", "semantic_enrichment": { "status": "ENABLED", "language_options": "english" } }, "title_non_semantic": { "type": "text" } } } }'

若要描述建立的索引,請使用下列命令:

aws opensearch get-index \ --domain-name [domain_name] \ --index-name [index_name] \

更新現有的索引

您可以更新現有索引以新增語意擴充欄位、啟用或停用現有欄位的語意擴充,或新增非語意文字欄位。使用 update-index命令,並僅提供您要在 中變更的欄位index-schema。請求中未包含的欄位保持不變。

注意

settings 無法更新索引。如果您在請求中包含settings區塊,操作會傳回驗證錯誤。若要變更索引設定,您必須刪除並重新建立索引。

若要使用 更新索引 AWS CLI,請使用 update-index命令:

aws opensearch update-index \ --domain-name [domain_name] \ --index-name [index_name] \ --index-schema [index_body]

新增語意擴充欄位

您可以將啟用語意擴充的新text欄位新增至現有索引。服務會自動設定所需的 ML 模型、擷取管道和搜尋管道。更新後編製索引的新文件會自動擴充。

重要

現有文件不會回填。若要在現有文件上填入語意擴充欄位,您必須在更新後重新擷取它們。在重新擷取之前,現有文件將不會受益於新欄位上的語意搜尋。

aws opensearch update-index \ --domain-name my-domain \ --index-name product-catalog \ --index-schema '{ "mappings": { "properties": { "description": { "type": "text", "semantic_enrichment": { "status": "ENABLED", "language_options": "english" } } } } }'

在欄位上停用語意擴充

若要在目前已啟用它的欄位上停用語意擴充,請將 status設定為 DISABLED。欄位會從擷取和搜尋管道中移除。基礎文字欄位及其內嵌欄位會保留在索引中,但不再富集。

aws opensearch update-index \ --domain-name my-domain \ --index-name product-catalog \ --index-schema '{ "mappings": { "properties": { "title_semantic": { "type": "text", "semantic_enrichment": { "status": "DISABLED" } } } } }'

更新限制

不支援下列操作,update-index並要求您刪除並重新建立索引:

  • 變更language_options目前已啟用語意擴充的欄位。首先停用 欄位,然後使用新語言選項重新啟用它。

  • 更新巢狀欄位。語意擴充僅支援最上層text欄位。

  • 更新索引 settings

注意

如果索引具有不是由自動語意擴充建立的自訂擷取或搜尋管道,則會封鎖更新操作。在新增語意擴充欄位之前,請先移除自訂管道。

資料擷取和搜尋

建立啟用自動語意擴充的索引後,此功能會在資料擷取程序期間自動運作,無需額外的組態。

資料擷取:當您將文件新增至索引時,系統會自動:

  • 分析您為語意擴充指定的文字欄位

  • 使用 OpenSearch Service 受管稀疏模型產生語意編碼

  • 將這些豐富的表示與原始資料一起存放

此程序使用 OpenSearch 的內建 ML 連接器和擷取管道,這些管道會在幕後自動建立和管理。

搜尋:語意擴充資料已編製索引,因此查詢會有效率地執行,而不會再次叫用 ML 模型。這表示您可以改善搜尋相關性,而不需要額外的搜尋延遲額外負荷。

搭配 VPC 網域使用自動語意擴充

透過最新的服務軟體更新,執行 OpenSearch 2.19 版或更新版本的公有存取和 VPC 存取網域都支援自動語意擴充。

對於 VPC 存取網域,Amazon OpenSearch Service 使用受管服務來佈建 ML 模型、擷取管道和支援語意擴充的搜尋管道。由於 VPC 網域無法公開連線,您必須先授權此受管服務存取您的網域,才能建立或管理語意擴充索引。

授權 OpenSearch Service 功能主體

使用 AuthorizeVpcEndpointAccess API 授予存取權,指定 features.opensearchservice.amazonaws.com做為服務主體:

aws opensearch authorize-vpc-endpoint-access \ --domain-name domain-name \ --service "features.opensearchservice.amazonaws.com" \ --region region

成功呼叫會傳回:

{ "AuthorizedPrincipal": { "PrincipalType": "AWS Service", "Principal": "features.opensearchservice.amazonaws.com" } }

每個網域只需要授權委託人一次。公有存取網域不需要此步驟。

如果您在授權委託人之前,在 VPC 網域上嘗試語意擴充索引操作 (get-index、、create-index update-indexdelete-index),操作會失敗,並出現類似下列的錯誤:

An error occurred (AccessDeniedException) when calling the GetIndex operation: This operation is not authorized for VPC domain. Please authorize 'features.opensearchservice.amazonaws.com' through the AuthorizeVpcEndpointAccess API.

授權委託人之後,請重試 操作。

主控台體驗

您可以直接從主控台完成授權,並建立 VPC 網域的語意擴充索引。在 Amazon OpenSearch Service 主控台中,選取您的 VPC 網域以顯示自動語意擴充橫幅,然後選擇移至索引以開啟索引索引標籤。

如果 OpenSearch Service 功能主體尚未獲得存取網域的授權,則索引索引標籤會顯示存取遭拒訊息,而不是建立索引按鈕。選擇授權委託人以開啟 VPC 端點索引標籤。

索引索引標籤顯示存取遭拒橫幅與授權委託人按鈕。

在 VPC 端點索引標籤上,選擇授權委託人,選擇從其他服務授權委託人 AWS ,然後選擇 OpenSearch Service 功能。這會執行與上節所述 AuthorizeVpcEndpointAccess API 相同的授權。

VPC 端點索引標籤,其中包含 VPC 端點和授權主體面板。
選取 OpenSearch Service 功能的授權主體對話方塊。

返回索引索引標籤。建立索引按鈕現已可用。選擇建立索引以開啟建立索引頁面,您可以在其中定義自動語意擴充欄位,並為 VPC 網域建立索引。

授權後的索引索引標籤會顯示資訊橫幅和建立索引按鈕。
注意

對於 VPC 網域,由於 VPC 網路限制,索引清單無法顯示在主控台中。若要檢視您的索引,請直接搭配儀表板 URL 使用 OpenSearch Dashboards。由於您無法在主控台中檢視索引,因此也無法更新現有的語意擴充索引。若要更新 VPC 網域上的語意擴充索引,請使用 update-index API。如需詳細資訊,請參閱更新現有的索引

設定自動語意擴充的許可

在建立具有自動語意擴充的索引之前,您需要設定必要的許可。本節說明不同索引操作所需的許可,以及如何針對 AWS Identity and Access Management (IAM) 和精細存取控制案例進行設定。

IAM 許可

自動語意擴充操作需要下列 IAM 許可。這些許可會根據您要執行的特定索引操作而有所不同。

CreateIndex API 許可

若要建立具有自動語意擴充的索引,您需要下列 IAM 許可:

  • es:CreateIndex – 建立具有語意擴充功能的索引。

  • es:ESHttpHead – 執行 HEAD 請求以檢查索引是否存在。

  • es:ESHttpPut – 執行建立索引的 PUT 請求。

  • es:ESHttpPost – 執行索引操作的 POST 請求。

UpdateIndex API 許可

若要使用自動語意擴充更新現有索引,您需要下列 IAM 許可:

  • es:UpdateIndex – 更新索引設定和映射。

  • es:ESHttpPut – 執行索引更新的 PUT 請求。

  • es:ESHttpGet – 執行 GET 請求以擷取索引資訊。

  • es:ESHttpPost – 執行索引操作的 POST 請求。

GetIndex API 許可

若要擷取具有自動語意擴充之索引的相關資訊,您需要下列 IAM 許可:

  • es:GetIndex – 擷取索引資訊和設定。

  • es:ESHttpGet – 執行 GET 請求以擷取索引資料。

DeleteIndex API 許可

若要刪除具有自動語意擴充的索引,您需要下列 IAM 許可:

  • es:DeleteIndex – 刪除索引及其語意擴充元件。

  • es:ESHttpDelete – 執行 DELETE 請求以移除索引。

範例 IAM 政策

下列以身分為基礎的存取政策範例提供使用者使用自動語意擴充管理索引所需的許可:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSemanticEnrichmentIndexOperations", "Effect": "Allow", "Action": [ "es:CreateIndex", "es:UpdateIndex", "es:GetIndex", "es:DeleteIndex", "es:ESHttpHead", "es:ESHttpGet", "es:ESHttpPut", "es:ESHttpPost", "es:ESHttpDelete" ], "Resource": "arn:aws:es:aws-region:111122223333:domain/domain-name" } ] }

aws-region111122223333domain-name 取代為您的特定值。您可以在資源 ARN 中指定特定索引模式,以進一步限制存取。

精細存取控制許可

如果您的 Amazon OpenSearch Service 網域已啟用精細存取控制,則需要 IAM 許可以外的其他許可。

2026 年 8 月 12 日當天或之後建立的網域包含預先定義的精細存取控制角色 automatic_semantic_enrichment_full_access,授予管理語意擴充索引所需的許可。如果您的網域使用精細存取控制,請將您的使用者或後端角色映射至 ,automatic_semantic_enrichment_full_access而不是手動指派個別叢集和索引許可。

如果您的網域在此日期之前建立,請使用以下各節所述的精細存取控制許可。每個索引操作都需要下列許可。

CreateIndex API 許可

啟用精細存取控制時,建立具有自動語意擴充的索引需要下列額外許可:

  • indices:admin/create – 建立索引操作。

  • indices:admin/mapping/put – 建立和更新索引映射。

  • cluster:admin/opensearch/ml/create_connector – 建立機器學習連接器以進行語意處理。

  • cluster:admin/opensearch/ml/register_model – 註冊機器學習模型以進行語意擴充。

  • cluster:admin/ingest/pipeline/put – 建立用於資料處理的擷取管道。

  • cluster:admin/search/pipeline/put – 建立查詢處理的搜尋管道。

UpdateIndex API 許可

啟用精細存取控制時,更新具有自動語意擴充的索引需要下列額外許可:

  • indices:admin/get – 擷取索引資訊。

  • indices:admin/settings/update – 更新索引設定。

  • indices:admin/mapping/put – 更新索引映射。

  • cluster:admin/opensearch/ml/create_connector – 建立機器學習連接器。

  • cluster:admin/opensearch/ml/register_model – 註冊機器學習模型。

  • cluster:admin/ingest/pipeline/put – 建立擷取管道。

  • cluster:admin/search/pipeline/put – 建立搜尋管道。

  • cluster:admin/ingest/pipeline/get – 擷取擷取管道資訊。

  • cluster:admin/search/pipeline/get – 擷取搜尋管道資訊。

GetIndex API 許可

啟用精細存取控制時,需要下列額外許可,才能擷取具有自動語意擴充之索引的相關資訊:

  • indices:admin/get – 擷取索引資訊。

  • cluster:admin/ingest/pipeline/get – 擷取擷取管道資訊。

  • cluster:admin/search/pipeline/get – 擷取搜尋管道資訊。

DeleteIndex API 許可

啟用精細存取控制時,需要下列額外許可才能刪除具有自動語意擴充的索引:

  • indices:admin/delete – 刪除索引操作。

查詢重寫

自動語意擴充會自動將現有的「比對」查詢轉換為語意搜尋查詢,而不需要修改查詢。如果比對查詢是複合查詢的一部分,系統會周遊您的查詢結構、尋找比對查詢,並將它們取代為神經稀疏查詢。目前,此功能僅支援取代「比對」查詢,無論是獨立查詢還是複合查詢的一部分。不支援「多重_比對」。此外,此功能支援所有複合查詢來取代其巢狀比對查詢。複合查詢包括:bool、Boosting、 constant_score、dis_max、 function_score 和 hybrid。

自動語意擴充的限制

當套用至包含自然語言內容small-to-medium欄位時,自動語意搜尋最有效,例如電影標題、產品描述、評論和摘要。雖然語意搜尋增強了大多數使用案例的相關性,但它可能不適用於某些案例。在決定是否為特定使用案例實作自動語意擴充時,請考慮下列限制。

  • 非常長的文件 – 目前的稀疏模型只會處理每個英文文件的前 8,192 個字符。對於多語言文件,它是 512 個字符。對於冗長的文章,請考慮實作文件區塊,以確保完整的內容處理。

  • 日誌分析工作負載 – 語意擴充會大幅增加索引大小,這對於日誌分析而言可能不必要,其中完全相符通常就足夠。其他語意內容很少改善日誌搜尋的有效性,足以證明增加的儲存需求。

  • 自動語意擴充與衍生來源功能不相容。

  • 調節 – OpenSearch Service 網域的索引推論請求目前上限為 200 TPS。這是軟性限制;請聯絡 AWS Support 以取得更高的限制。

定價

Amazon OpenSearch Service 會根據索引時間產生稀疏向量時消耗的 OpenSearch Compute Units (OCUs) 來計費自動語意擴充。只有在啟用自動語意擴充的文字欄位編製索引期間,才會向您收取實際用量的費用。一個語意搜尋 OCU 可以處理 1,110 萬個英文內容字符。若要處理 24 億個字符,您需要大約 216 個語意搜尋 OCU 小時 (24 億/1,110 萬)。價格為每個語意搜尋 OCU 小時 0.24 USD,處理 10 GB 資料以進行自動語意搜尋的成本為 $51 (216 OCU 小時 x $0.24/OCU 小時)。在搜尋操作或資料儲存期間,不需要支付額外的語意搜尋 OCU 費用。

您可以使用 Amazon CloudWatch 指標 來監控此耗用量SemanticSearchOCU。如需模型字符限制的特定詳細資訊、每個 OCU 的磁碟區輸送量,以及範例計算範例,請造訪 OpenSearch Service 定價

支援的 AWS 區域

下列提供自動語意擴充 AWS 區域:

  • 美國東部 (維吉尼亞北部)

  • 美國東部 (俄亥俄)

  • 美國西部 (奧勒岡)

  • 亞太地區 (孟買)

  • 亞太地區 (新加坡)

  • 亞太地區 (雪梨)

  • 亞太地區 (東京)

  • 歐洲 (法蘭克福)

  • 歐洲 (愛爾蘭)

  • 歐洲 (斯德哥爾摩)

  • 歐洲 (西班牙)