在 Azure AI 搜尋中使用向量和全文搜索的混合式搜尋

混合式搜尋是全文檢索和向量查詢的組合,針對包含可搜尋純文本內容和產生的內嵌的搜尋索引執行。 針對查詢目的,混合式搜尋為:

本文說明混合式搜尋的概念、優點和限制。 觀看這段 內嵌影片 ,以取得混合式擷取如何促成高品質聊天樣式和警戒應用程式的簡短示範。

混合式搜尋如何運作?

在 Azure AI 搜尋中,包含內嵌的向量欄位可以與文字和數值欄位並存,讓您制定平行執行的混合式查詢。 混合式查詢可以利用現有的功能,例如篩選、多面向、排序、評分配置檔,以及 單一搜尋要求中的語意排名

混合式搜尋結合了全文檢索和向量查詢的結果,其使用不同的排名函式,例如 BM25 和 HNSW。 相互排名融合 (RRF) 演算法會合併結果。 查詢回應只提供一個結果集,使用 RRF 從每個查詢挑選最相關的相符專案。

混合式查詢的結構

混合式搜尋的述詞是包含各種 數據類型欄位的搜尋索引,包括純文本和數位、地理空間搜尋的地理座標,以及文字區塊數學表示的向量。 除了客戶端互動,例如自動完成和建議,您可以使用 Azure AI 搜尋服務中幾乎所有的查詢功能與向量查詢。

代表性的混合式查詢可能如下所示(請注意,系統會修剪向量以求簡潔):

POST https://{{searchServiceName}}.search.windows.net/indexes/hotels-vector-quickstart/docs/search?api-version=2023-11-01
  content-type: application/JSON
{
    "count": true,
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelId, HotelName, Category, Description, Address/City, Address/StateProvince",
    "filter": "geo.distance(Location, geography'POINT(-77.03241 38.90166)') le 300",
    "facets": [ "Address/StateProvince"], 
    "vectors": [
        {
            "value": [ <array of embeddings> ]
            "k": 7,
            "fields": "DescriptionVector"
        },
        {
            "value": [ <array of embeddings> ]
            "k": 7,
            "fields": "Description_frVector"
        }
    ],
    "queryType": "semantic",
    "queryLanguage": "en-us",
    "semanticConfiguration": "my-semantic-config"
}

重點包括:

  • search 指定全文搜索查詢。
  • vectors 針對向量查詢,可以是多個,以多個向量欄位為目標。 如果內嵌空間包含多語種內容,向量查詢就可以找到相符專案,而不需要語言分析器或翻譯。
  • select 指定要在結果中傳回哪些欄位,這可以是人類可讀取的文字欄位。
  • filters 可以指定地理空間搜尋或其他包含和排除準則,例如是否包含停車。 此範例中的地理空間查詢會在華盛頓特區的 300 公里半徑內尋找旅館。
  • facets 可用來計算從混合式查詢傳回之結果的 Facet 貯體。
  • queryType=semantic 會叫用語意排名,套用機器閱讀理解,以呈現更相關的搜尋結果。

篩選和 Facet 會將索引內的數據結構與用於全文搜索的反向索引和用於向量搜尋的向量索引相異。 因此,當篩選和多面向作業執行時,搜尋引擎可以將作業結果套用至回應中的混合式搜尋結果。

請注意查詢中沒有 orderby 。 明確的排序順序會覆寫相關性排名的結果,因此如果您想要相似度和 BM25 相關性,請省略查詢中的排序。

上述查詢的回應可能如下所示:

{
    "@odata.count": 3,
    "@search.facets": {
        "Address/StateProvince": [
            {
                "count": 1,
                "value": "NY"
            },
            {
                "count": 1,
                "value": "VA"
            }
        ]
    },
    "value": [
        {
            "@search.score": 0.03333333507180214,
            "@search.rerankerScore": 2.5229012966156006,
            "HotelId": "49",
            "HotelName": "Old Carrabelle Hotel",
            "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center.",
            "Category": "Luxury",
            "Address": {
                "City": "Arlington",
                "StateProvince": "VA"
            }
        },
        {
            "@search.score": 0.032522473484277725,
            "@search.rerankerScore": 2.111117362976074,
            "HotelId": "48",
            "HotelName": "Nordick's Motel",
            "Description": "Only 90 miles (about 2 hours) from the nation's capital and nearby most everything the historic valley has to offer.  Hiking? Wine Tasting? Exploring the caverns?  It's all nearby and we have specially priced packages to help make our B&B your home base for fun while visiting the valley.",
            "Category": "Boutique",
            "Address": {
                "City": "Washington D.C.",
                "StateProvince": null
            }
        }
    ]
}

混合式搜尋結合了向量搜尋和關鍵詞搜尋的優點。 向量搜尋的優點是尋找在概念上類似於搜尋查詢的資訊,即使反向索引中沒有關鍵詞相符專案也一樣。 關鍵詞或全文搜索的優點是精確度,能夠套用語意排名,以改善初始結果的品質。 某些案例,例如查詢產品名稱、高度特製化的行話、日期和人員名稱,可以透過關鍵詞搜尋執行得更好,因為它可以識別完全相符專案。

對真實世界和基準檢驗數據集的效能評定測試指出,具有語意排名的混合式擷取在搜尋相關性方面具有顯著優勢。

下列影片說明混合式擷取如何為您提供最佳的基礎數據,以產生有用的 AI 回應。

另請參閱

使用混合式擷取和排名來超越向量搜尋 (技術部落格)