共用方式為


在 Azure AI 搜尋中將語意排名新增至查詢

本文說明如何在查詢上叫語意排名工具。 如果您的搜尋文件包含字串欄位,且 向量查詢具有文字表示,您可以將語意排名套用至文字查詢、混合式查詢和向量查詢。

語意排名會逐一查看初始結果集,並套用 L2 排名方法,將語意上最相關的結果提升至堆疊頂端。 您也可以取得語意標題,其中反白顯示最相關的字詞和片語,以及語意答案

必要條件

注意

會從搜尋文件中的文字擷取標題和答案。 語意子系統會使用機器閱讀理解來識別具有標題或答案特性的內容,但其不會撰寫新的句子或片語。 因此,包含說明或定義的內容最適用於語意排名。 如果您要與產生的回應進行聊天樣式互動,請參閱擷取擴增生成 (RAG)

選擇用戶端

您可以使用下列任何工具和 SDK 來建置使用語意排名的查詢:

避免會略過相關性評分的功能

Azure AI 搜尋服務中的多個查詢功能會略過相關性評分,或與語意排名不相容。 如果您的查詢邏輯包含下列功能,則無法對結果進行語意排名:

  • 具有 search=* 或空白搜尋字串的查詢 (例如純篩選查詢) 將無法運作,因為沒有任何內容可供測量語意相關性。 查詢必須提供可在處理期間評估的字詞或片語。

  • 完整 Lucene 語法 (queryType=full) 所組成的查詢與語意排名 (queryType=semantic) 不相容。 語意模型不支援完整 Lucene 語法。

  • 針對特定欄位排序 (orderBy 子句) 會覆寫搜尋分數和語意分數。 有鑑於語意分數應該會提供排名,若您將語意排名套用至已排序的結果,則新增 orderby 子句會導致 HTTP 400 錯誤。

設定查詢

在此步驟中,將參數新增至查詢要求。 若要操作成功,您的查詢應該是全文檢索搜尋 (使用 search 參數傳入字串),而且索引應該包含具有豐富語意內容和語意設定的文字欄位。

搜尋總管包含語意排名選項。

  1. 登入 Azure 入口網站

  2. 開啟搜尋索引,然後選取 [搜尋總管]

  3. 選取 [查詢選項]。 如果您已定義語意設定,則系統預設會選取此設定。 如果您還未設定,請為索引建立語意設定

    螢幕擷取畫面顯示搜尋總管中的查詢選項。

  4. 輸入查詢,例如「提供美食且歷史悠久的酒店」,然後選取 [搜尋]

  5. 或者,選取 [JSON 檢視],並將定義貼到查詢編輯器中:

    螢幕擷取畫面顯示 Azure 入口網站中的 JSON 查詢語法。

    以下是一些可以貼到檢視中的 JSON 文字:

     {
         "queryType": "semantic",
         "search": "historic hotel with good food",
         "semanticConfiguration": "my-semantic-config",
         "answers": "extractive|count-3",
         "captions": "extractive|highlight-true",
         "highlightPreTag": "<strong>",
         "highlightPostTag": "</strong>",
         "select": "HotelId,HotelName,Description,Category",
         "count": true
     }
    

評估回應

只有來自初始結果的前 50 個相符項目可以以語意方式設定優先順位。 如同所有查詢項目,回應是由標示為可擷取的所有欄位所組成,或只包含指定參數中列出的欄位。 回應包含原始相關性分數,也可能包含計數或批次結果,視您制定要求的方式而定。

在語意排名中,回應具有更多元素:新的語意排名相關性分數、純文字中的選擇性標題、醒目提示,以及選擇性答案。 如果您的結果未包含這些額外的元素,則您的查詢可能設定不正確。 第一個步驟是針對問題進行疑難排解,請檢查語意設定,以確保在索引定義和查詢中都有指定該語意設定。

在用戶端應用程式中,您可以建構搜尋分頁,包含標題作為相符項目的說明,而不是特定欄位的整個內容。 當個別欄位對搜尋結果分頁而言太密集時,此方法很有用。

上述範例查詢的回應會傳回下列相符項目做為首選。 系統會傳回標題,因為已設定「標題」屬性,且具有純文字和反白顯示的版本。 因為無法判斷此特定查詢和主體的答案,所以會從範例中省略答案。

"@odata.count": 35,
"@search.answers": [],
"value": [
    {
        "@search.score": 1.8810667,
        "@search.rerankerScore": 1.1446577133610845,
        "@search.captions": [
            {
                "text": "Oceanside Resort. Luxury. New Luxury Hotel. Be the first to stay. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
                "highlights": "<strong>Oceanside Resort.</strong> Luxury. New Luxury Hotel. Be the first to stay.<strong> Bay</strong> views from every room, location near the pier, rooftop pool, waterfront dining & more."
            }
        ],
        "HotelName": "Oceanside Resort",
        "Description": "New Luxury Hotel. Be the first to stay. Bay views from every room, location near the pier, rooftop pool, waterfront dining & more.",
        "Category": "Luxury"
    },
  ...
]

預期的工作負載

針對語意排名,您應該預期搜尋服務支援每個複本最多 10 個同時查詢。

如果磁碟區太高,服務會節流語意排名要求。 包含這些片語的錯誤訊息表示服務具有語意排名的容量:

Error in search query: Operation returned an invalid status 'Partial Content'`
@search.semanticPartialResponseReason`
CapacityOverloaded

如果您預期輸送量需求接近、位於或高於此層級,請提出支援票證,以便我們可以為您的工作負載佈建。

下一步

語意排名可用於混合式查詢,將關鍵詞搜尋和向量搜尋合併為單一要求和統一回應。