在 Azure AI 搜尋中建立語意查詢

在本文中,瞭解如何在結果集上叫用語意排名,將最語意相關的結果提升至堆疊頂端。 您也可以取得語意 標題,其中包含最相關詞彙和片語的醒目提示,以及語意答案

必要條件

  • 具有語意排名的搜尋服務、基本層或更高 層級

  • 具有 語意組態 和 RTF 內容的現有搜尋索引。

  • 如果您需要功能簡介,請檢閱 語意排名

注意

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

選擇用戶端

選擇支援語意排名的搜尋用戶端。 以下列出一些選項:

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

Azure AI 搜尋中的數個查詢功能會略過相關性評分,否則與語意排名不相容。 如果您的查詢邏輯包含下列功能,則無法以語意方式排序結果:

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

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

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

設定查詢

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

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

  1. 登入 Azure 入口網站

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

  3. 選取 [ 查詢選項]。 如果您已經定義語意組態,預設會選取它。 如果您沒有語意組態, 請為您的索引建立語意組態

    Screenshot showing query options in Search explorer.

  4. 輸入查詢,例如「具有良好食物的歷史酒店」,然後選取 [ 搜尋]。

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

    Screenshot showing JSON query syntax in the Azure portal.

    以下是您可以貼到檢視中的一些 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 個相符專案可以語意排名。 如同所有查詢,回應是由標示為可擷取的所有欄位所組成,或只包含選取參數中列出的字段。 回應包含原始相關性分數,也可能包含計數或批次結果,視您制定要求的方式而定。

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

在用戶端應用程式中,您可以建構搜尋頁面,以包含 標題 做為相符專案的描述,而不是特定欄位的整個內容。 當個別欄位對搜尋結果頁面來說太密集時,這個方法很有用。

上述範例查詢的回應會傳回下列相符專案做為最上層選擇。 系統會傳回標題,因為已設定 「標題 s」 屬性,並具有純文字和醒目提示的版本。 系統會從範例中省略答案,因為無法判斷此特定查詢和主體的答案。

"@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"
    },
  ...
]

下一步

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