Vytvoření hybridního dotazu v Azure AI Vyhledávač

Poznámka

Azure AI Vyhledávač je k dispozici prostřednictvím portálu Azure, rozhraní REST API a Sady Azure SDK. Podporuje také Foundry IQ, spravovanou znalostní vrstvu, která transformuje podnikový obsah na opakovaně použitelné znalostní báze s podporou oprávnění pro agenty na portálu Microsoft Foundry.

Important

Na funkce, možnosti nebo vlastnosti označené jako (Preview) se nevztahuje smlouva o úrovni služeb, nejsou doporučené pro produkční úlohy a mohou se změnit nebo být omezeny dříve, než budou obecně k dispozici. Podmínky Azure AI Vyhledávač Preview platí pro všechny funkce ve verzi Preview, ať už jsou samostatné nebo součástí obecně dostupné funkce.

Hybridní vyhledávání kombinuje text (klíčové slovo) a vektorové dotazy v jediné žádosti o vyhledávání. Oba dotazy se provádějí paralelně. Výsledky se sloučí a přeuspořádají podle nových skóre hledání pomocí Reciproční Rank Fusion (RRF) k vrácení sjednocené sady výsledků. V mnoha případech podle srovnávacích testů vrátí hybridní dotazy se sémantickým řazením nejrelevantnější výsledky.

V tomto článku se dozvíte, jak:

  • Nastavení základního hybridního požadavku
  • Přidání parametrů a filtrů
  • Zlepšení relevance pomocí sémantického řazení nebo vektorových vah
  • Optimalizace chování dotazů pomocí řízení vstupů (maxTextRecallSize)

Na konci tohoto článku můžete spouštět hybridní dotazy, které kombinují hledání klíčových slov a vektorů s volitelným sémantickým řazením.

Požadavky

Volba rozhraní API, nástroje a funkčního vzoru

  • Průzkumník služby Search na portálu Azure (podporuje stabilní i preview syntaxi vyhledávání rozhraní API) má zobrazení JSON, které umožňuje vložit hybridní požadavek.

  • Novější stabilní nebo preview balíčky Sady Azure SDK (viz protokoly změn podpory funkcí sady SDK).

  • Stabilní verze rozhraní REST API nebo novější verzi rozhraní Preview API, pokud používáte funkce ve verzi Preview, jako jsou maxTextRecallSize a countAndFacetMode (preview).

    Pro čitelnost používáme příklady REST, abychom vysvětlili, jak rozhraní API fungují. K vytváření hybridních dotazů můžete použít klienta REST, jako je Visual Studio Code s rozšířením REST. Můžete také použít Sady Azure SDK. Další informace najdete v tématu Rychlý start: Vektorové vyhledávání.

Funkční hybridní vzory

Pokud s hybridním vyhledáváním začínáte, vyberte jeden model a laďte ho po malých krocích. Nezačínejte s maximálním zachycením vektoru, zachycením velkého textu a sémantickým přehodnocením ve stejném požadavku.

  • Vyvážené hybridní (výchozí): Tuto možnost použijte jako první pro většinu úloh. Začněte s rozsahem k 30 až 50, top v rozsahu 10 až 20 a povolte sémantické hodnocení pouze v případě, že zlepšuje měřenou relevanci.

  • Připomeňme si, že se jedná o hybridní řešení: Použijte ho pro obtížné dotazy, kde je cílem pokrytí. Postupně zvětšujte maxTextRecallSize a udržujte střední nastavení vektoru. Očekávejte vyšší náklady na sloučení.

  • Hybrid s prioritou přesnosti: Použijte ho pro dosažení nízké latence ve velkém měřítku. Zachovat k a top skromnost, použít selektivní filtry a vyhnout se sémantickým funkcím, které nepřidají hodnotu.

Proč jsou přetížené dotazy omezovány

Hybridní dotazy spouštějí text a načítání vektorů paralelně a potom sloučí výsledky s RRF. Pokud zvýšíte lexikální příspěvek (například změnou hybridní váhy ve prospěch BM25), zvýšíte počet kandidátů na text, které je nutné sloučit s kandidáty vektorů. Pokud to zkombinujete s nákladným nastavením vektoru a sémantickou rerankací, zvýší se zatížení procesoru a paměti rychle.

U menších konfigurací kapacity může toto dodatečné sloučení a změna pořadí způsobit:

  • Vyšší latence a špičky p95/p99
  • 429 odpovědi na omezení při přetížení
  • Žádosti o vyřazení nebo vypršení časového limitu zjištěné klientem, pokud není nakonfigurované chování opakování

Pořadí ladění před horizontálním navýšením kapacity

Před přidáním replik vylaďte nastavení dotazů a vektorů:

  1. Nejprve snižte nastavení nákladného hledání vektorů. Například pokud efSearch a maxConnections jsou nastaveny agresivně, snižte je před horizontálním navýšením kapacity (například snížení efSearch z přibližně 800 na 128 na 192 a snížení maxConnections z 64 na 32).
  2. Omezte rozsah sémantického řazení na případy, které z něj mají prospěch.
  3. Znovu otestujte latenci a míru odezvy 429 při reprezentativním zatížení.
  4. Škálovat repliky pouze v případě, že omezení výkonu i po doladění přetrvává.

Pomocí této sekvence můžete před škálováním zlepšit stabilitu a řídit náklady.

Nastavení hybridního dotazu

Tato část vysvětluje základní strukturu hybridního dotazu a způsob nastavení v Průzkumníku služby Search nebo spuštění v klientovi REST.

Výsledky se vrátí ve formátu prostého textu, včetně vektorů v polích označených jako retrievable. Vzhledem k tomu, že číselné vektory nejsou ve výsledcích hledání užitečné, zvolte jiná pole v indexu jako proxy pro shodu vektoru. Pokud má například index pole descriptionVector a descriptionText, dotaz se může shodovat s "descriptionVector", ale výsledek hledání může zobrazit "descriptionText". Pomocí parametru select můžete ve výsledcích zadat pouze pole čitelná pro člověka.

  1. Přejděte do vyhledávací služby na portálu Azure.

  2. V částiIndexy> vyhledávání vyberte index, který obsahuje vektory a ne vektorový obsah. Průzkumník Search je první karta.

  3. V části Zobrazení přepněte do zobrazení JSON , abyste mohli vložit vektorový dotaz.

  4. Nahraďte výchozí šablonu dotazu hybridním dotazem. Základní hybridní dotaz má textový dotaz zadaný v searcha vektorový dotaz zadaný v části vectorQueries.vector. Textový dotaz a vektorový dotaz můžou být ekvivalentní nebo divergentní, ale je běžné, že sdílejí stejný záměr.

    Tento příklad pochází z průvodce rychlým startem pro vector, který obsahuje vektorový a nevektorový obsah a několik příkladů dotazů. Pro stručnost je vektor zkrácený v tomto článku.

    {
        "search": "historic hotel walk to restaurants and shopping",
        "vectorQueries": [
            {
                "vector": [0.01944167, 0.0040178085, -0.007816401 ... <remaining values omitted> ], 
                "k": 7,
                "fields": "DescriptionVector",
                "kind": "vector",
                "exhaustive": true
            }
        ]
    }
    
  5. Vyberte Hledat.

    Tip

    Výsledky hledání se snadněji čtou, pokud vektory skryjete. V možnostech dotazu zapněte možnost Skrýt vektorové hodnoty ve výsledcích hledání.

  6. Tady je další verze dotazu. Tím se přidá count počet nalezených shod, select parametr pro výběr konkrétních polí a top parametr, který vrátí prvních sedm výsledků.

     {
         "count": true,
         "search": "historic hotel walk to restaurants and shopping",
         "select": "HotelId, HotelName, Category, Tags, Description",
         "top": 7,
         "vectorQueries": [
             {
                 "vector": [0.01944167, 0.0040178085, -0.007816401 ... <remaining values omitted> ], 
                 "k": 7,
                 "fields": "DescriptionVector",
                 "kind": "vector",
                 "exhaustive": true
             }
         ]
     }
    

Nastavit maxTextRecallSize a countAndFacetMode (ve verzi Preview)

Hybridní dotaz je možné ladit tak, aby kontroloval, kolik jednotlivých poddotazů přispívá k kombinovaným výsledkům. Nastavení parametru maxTextRecallSize (ve verzi Preview) určuje, kolik výsledků seřazených algoritmem BM25 se předává modelu pro hybridní řazení.

Pokud váš požadavek obsahuje omezující vlastnosti, použijte nevectorová pole označená jako facetable v indexu. Vektorová pole nejsou omezující.

Počty faset závisí na typu dotazu:

  • Při pouze textovém dotazu fasety počítají dokumenty, které odpovídají textovému dotazu.
  • V dotazu pouze s vektory fasety k počítají dokumenty vrácené vektorovým dotazem.
  • V hybridním dotazu fasety zohledňují vektorové i textové výsledky. Vektorová strana přispívá k nejbližším dokumentům k . Textová část dodává dokumenty seřazené podle BM25. Parametr countAndFacetMode (preview) určuje, zda výpočty počtu a faset používají všechny textové shody, nebo pouze textové shody načtené pro účely hodnocení relevance.

Pokud používáte maxTextRecallSize, můžete také chtít nastavit countAndFacetMode. Tento parametr určuje, zda count a facets zahrnout všechny dokumenty, které odpovídají textovému dotazu, nebo pouze dokumenty načtené v maxTextRecallSize okně. Výchozí hodnota je countAllResults.

Ve výchozím režimu countAllResults můžou počty a fasety zahrnovat dokumenty na textové straně, které nejsou načteny pro hodnocení RRF, protože spadají mimo okno maxTextRecallSize. Zvýšení maxTextRecallSize zvýší počet dokumentů seřazených podle BM25, které jsou k dispozici pro hodnocení, ale nezvýší příspěvek vektorové složky nad k. Použijte countRetrievableResults, pokud chcete, aby výpočty počtu a faset byly omezeny na dokumenty načtené pro hybridní řazení.

Pro nastavení těchto možností doporučujeme nejnovější rozhraní REST API verze Preview .

Tip

Dalším přístupem k ladění hybridních dotazů je vektorová váha, která se používá ke zvýšení důležitosti vektorových dotazů v požadavku.

  1. Pomocí funkce Hledat – POST (Preview) nebo Search – GET (Preview) můžete zadat parametry náhledu.

  2. Přidejte objekt parametru hybridSearch dotazu pro nastavení maximálního počtu dokumentů, které byly staženy prostřednictvím výsledků hybridního dotazu seřazených podle BM25. Má dvě vlastnosti:

    • maxTextRecallSize určuje počet výsledků seřazených podle BM25, které poskytnout rankeru Reciprocal Rank Fusion (RRF) používanému v hybridních dotazech. Výchozí hodnota je 1 000. Maximum je 10 000.

    • countAndFacetMode uvádí počet a rozsah aspektů pro hybridní dotaz. Ve výchozím nastavení countAllResultspoužívá úplnou hybridní sadu výsledků včetně všech dokumentů, které odpovídají textovému dotazu, i když některé z těchto textových shod nejsou načteny pro hodnocení RRF, protože spadají mimo maxTextRecallSize okno. Pomocí countRetrievableResults můžete omezit počet a aspekty na dokumenty načtené pro účely hodnocení relevance, včetně maxTextRecallSize dokumentů seřazených podle BM25 a k vektorových shod.

  3. Nastavit maxTextRecallSize:

    • Snižte maxTextRecallSize , pokud hledání podobnosti vektorů většinou překonává textovou část hybridního dotazu.

    • Zvyšte maxTextRecallSize, pokud máte velký index a výchozí hodnota nezachytí dostatečný počet výsledků. Pokud máte větší sadu výsledků seřazenou podle BM25, můžete také nastavit top, skip a next pro načtení částí těchto výsledků.

Následující příklady REST ukazují dva případy použití pro nastavení maxTextRecallSize.

První příklad snižuje maxTextRecallSize na 100, čímž omezuje textovou část hybridního dotazu na pouhých 100 dokumentů. Také nastaví countAndFacetMode tak, aby do výpočtů počtu a faset zahrnoval pouze načitatelné dokumenty.

POST https://[service-name].search.windows.net/indexes/[index-name]/docs/search?api-version=2026-08-01-preview

    { 
      "vectorQueries": [ 
        { 
          "kind": "vector", 
          "vector": [1.0, 2.0, 3.0], 
          "fields": "my_vector_field", 
          "k": 10 
        } 
      ], 
      "search": "hello world", 
      "hybridSearch": { 
        "maxTextRecallSize": 100, 
        "countAndFacetMode": "countRetrievableResults" 
      } 
    } 

Druhý příklad zvýší maxTextRecallSize na 5 000. Také používá top, skip a next k načtení výsledků z velkých množin výsledků. V tomto případě žádost získává seřazené výsledky BM25 od pozice 1 500 do 2 000 jako příspěvek textového dotazu do kompozitní sady výsledků RRF.

POST https://[service-name].search.windows.net/indexes/[index-name]/docs/search?api-version=2026-08-01-preview

    { 
      "vectorQueries": [ 
        { 
          "kind": "vector", 
          "vector": [1.0, 2.0, 3.0], 
          "fields": "my_vector_field", 
          "k": 10 
        } 
      ], 
      "search": "hello world",
      "top": 500,
      "skip": 1500,
      "next": 500,
      "hybridSearch": { 
        "maxTextRecallSize": 5000, 
        "countAndFacetMode": "countRetrievableResults" 
      } 
    } 

Referenční informace: hybridSearch | maxTextRecallSize | countAndFacetMode

Příklady hybridních dotazů

Tato část obsahuje několik příkladů dotazů, které ilustrují vzory hybridních dotazů.

Příklad: Hybridní vyhledávání s filtrem

Tento příklad přidá filtr, který se použije na filterable nevektorových polí indexu vyhledávání.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "k": 10
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "vectorFilterMode": "preFilter",
    "filter": "ParkingIncluded",
    "top": "10"
}

Klíčové body:

  • Filtry se použijí na obsah filtrovatelných polí. V tomto příkladu je pole ParkingIncluded logická hodnota a je označená jako filterable ve schématu indexu.

  • V hybridních dotazech se filtry dají použít před provedením dotazu, aby se snížila plocha dotazu nebo po provedení dotazu, aby se výsledky ořízly. "preFilter" je výchozí hodnota. Pokud chcete použít postFilter nebo strictPostFilter (Preview), nastavte režim zpracování filtru , jak je znázorněno v tomto příkladu.

  • Při postfiltrování výsledků dotazu může být počet výsledků menší než maximální počet n výsledků.

Odkaz: filter | vectorFilterMode

Příklad: Hybridní vyhledávání s filtry, které cílí na vektorové poddotazy (náhled)

Pomocí nejnovějšího rozhraní REST API ve verzi Preview můžete přepsat globální filtr požadavku na vyhledávání použitím sekundárního filtru, který cílí pouze na poddotazy vektoru v hybridním požadavku.

Tato funkce poskytuje jemně odstupňované řízení tím, že zajišťuje, aby filtry ovlivnily pouze výsledky vektorového hledání, takže výsledky hledání založené na klíčových slovech nejsou ovlivněné.

Cílový filtr plně přepíše globální filtr, včetně všech filtrů používaných pro ochranné oříznutí nebo vyhledávání v geoprostorových datech. V případech, kdy jsou vyžadovány globální filtry, například oříznutí zabezpečení, musíte tyto filtry explicitně zahrnout do filtru nejvyšší úrovně i do každého filtru na úrovni vektorů, aby se zajistilo konzistentní vynucování zabezpečení a dalších omezení.

Použití cílových filtrů vektorů:

  • Použijte rozhraní REST API pro vyhledávání dokumentů latest preview nebo Azure SDK beta balíček, který tuto funkci poskytuje.

  • Upravte požadavek dotazu a přidejte do vectorQueries.filterOverride novou sadu parametrů.

Tady je příklad hybridního dotazu, který přidává přepis filtru. Globální filtr "Hodnocení větší než 3" se při filterOverrideběhu nahradí.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-08-01-preview

{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "exhaustive": true,
            "filterOverride": "Address/City eq 'Seattle'",
            "k": 10
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Address/City, Rating",
    "filter": "Rating gt 3",
    "debug": "vector",
    "top": 10
}

Za předpokladu, že definice indexu obsahuje sémantickou konfiguraci, můžete formulovat dotaz, který zahrnuje vyhledávání vektorů a vyhledávání klíčových slov, sémantické řazení nad sloučenou sadou výsledků. Volitelně můžete přidat titulky a odpovědi.

Kdykoli použijete sémantické řazení s vektory, ujistěte se, že k je nastavená hodnota 50. Sémantický ranker používá jako vstup až 50 shod. Určení méně než 50 zbaví sémantických modelů řazení nezbytných vstupů.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "k": 50
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Tags",
    "queryType": "semantic",
    "semanticConfiguration": "my-semantic-config",
    "captions": "extractive",
    "answers": "extractive",
    "top": "50"
}

Klíčové body:

  • Sémantický ranker přijímá až 50 výsledků z sloučené odpovědi.

  • Vyžaduje se "queryType" a "sémanticConfiguration".

  • "titulky" a "odpovědi" jsou volitelné. Hodnoty se ve výsledcích extrahují z doslovného textu. Odpověď se vrátí pouze v případě, že výsledky obsahují obsah, který má charakteristiky odpovědi na dotaz.

Reference: dotazovýTyp | semantickáKonfigurace | popisky | odpovědi

Příklad: Sémantické hybridní vyhledávání s filtrem

Tento příklad přidá ParkingIncluded filtr do sémantického hybridního dotazu.

POST https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}/docs/search?api-version=2026-04-01
Content-Type: application/json
api-key: {{admin-api-key}}
{
    "vectorQueries": [
        {
            "vector": [
                -0.009154141,
                0.018708462,
                . . . 
                -0.02178128,
                -0.00086512347
            ],
            "fields": "DescriptionVector",
            "kind": "vector",
            "k": 50
        }
    ],
    "search": "historic hotel walk to restaurants and shopping",
    "select": "HotelName, Description, Tags",
    "queryType": "semantic",
    "semanticConfiguration": "my-semantic-config",
    "captions": "extractive",
    "answers": "extractive",
    "filter": "ParkingIncluded",
    "vectorFilterMode": "preFilter",
    "top": "50"
}

Klíčové body:

  • Režim filtru může ovlivnit počet výsledků dostupných pro sémantický ranker. Osvědčeným postupem je přiřadit sémantickému řazení maximální počet dokumentů (50). Pokud jsou předběžné nebo následné filtry příliš selektivní, můžete omezit možnosti modulu sémantického hodnocení tím, že mu poskytnete ke zpracování méně než 50 dokumentů.

  • preFilter se použije před spuštěním dotazu. Pokud prefilter zmenšuje vyhledávací oblast na 100 dokumentů, provede vektorový dotaz DescriptionVector přes pole těchto 100 dokumentů a vrátí nejlepší shody k=50. Těchto 50 odpovídajících dokumentů pak projde ke sloučeným výsledkům v RRF a následně do sémantického rankeru.

  • postFilter se použije po spuštění dotazu. Pokud při k=50 vrátí 50 shod na straně vektorového dotazu a následně je na tyto shody aplikován filtr, výsledky se sníží o počet dokumentů, které splňují kritéria filtru. To vám zanechá méně než 50 dokumentů, které předáte sémantickému rankeru. Mějte na paměti, pokud používáte sémantické hodnocení. Sémantický ranker funguje nejlépe, pokud má jako vstup 50 dokumentů.

  • strictPostFilter (Preview) se použije u nefiltrovaných hlavníchk výsledků po provedení dotazu. Vždy vrátí počet dokumentů, který je menší nebo roven k. Pokud nefiltrovaný k=50 vrátí 50 nefiltrovaných výsledků a filtr odpovídá 30 dokumentům, vrátí se ve sadě výsledků pouze 30 dokumentů, a to i v případě, že index obsahuje více než 30 dokumentů, které odpovídají filtru. Vzhledem k tomu, že tento režim má největší ztrátu dosažení, nedoporučujeme jej používat se sémantickým rankerem.

Konfigurace odpovědi dotazu

Při nastavování hybridního dotazu se zamyslete nad strukturou odpovědí. Vyhledávací web řadí odpovídající dokumenty a vrací nejrelevavantnější výsledky. Odpověď je zploštěná množina řádků. Parametry dotazu určují, která pole jsou v každém řádku a kolik řádků je v odpovědi.

Pole v odpovědi

Výsledky hledání se skládají z retrievable polí z indexu vyhledávání. Výsledek je jeden z těchto:

  • Všechna pole retrievable (výchozí pro rozhraní REST API).
  • Pole jsou explicitně uvedena v select parametru dotazu.

Příklady v tomto článku použily select výrok k určení textových polí (nevektorových) ve výsledku odpovědi.

Poznámka

Vektory nejsou zpětně analyzovány do člověkem čitelného textu, takže je v odpovědi nevracejte. Místo toho zvolte nevectorová pole, která jsou reprezentativní pro hledaný dokument. Pokud například dotaz cílí na pole PopisVector, vrátí ekvivalentní textové pole, pokud máte v odpovědi jedno pole ("Popis").

Počet výsledků

Dotaz se může shodovat s libovolným počtem dokumentů, tolik jako všechny, pokud jsou vyhledávací kritéria slabá (například "search=*" pro dotaz s hodnotou null). Vzhledem k tomu, že vrácení nevázaných výsledků je málokdy praktické, měli byste pro celkovou odpověď zadat maximum:

  • "top": n výsledky pro dotazy pouze s klíčovými slovy (bez vektoru)
  • "k": n výsledky pro dotazy pouze s vektory
  • "top": n výsledky pro hybridní dotazy (s sémantickou nebo bez nich), které obsahují parametr "search".

Obě k a top jsou volitelné. Není zadáno, výchozí počet výsledků v odpovědi je 50. Můžete nastavit top a skip tak, aby procházel více výsledků nebo změnit výchozí nastavení.

Poznámka

Pokud používáte hybridní vyhledávání v rozhraní API verze 2024-05-01-preview, můžete řídit počet výsledků z dotazu klíčových slov pomocí maxTextRecallSize. Zkombinujte to s nastavením k pro řízení reprezentace z každého subsystému vyhledávání (klíčové slovo a vektor).

Výsledky sémantického rankeru

Poznámka

Sémantický ranker může zpracovat až 50 výsledků.

Pokud používáte sémantický ranker ve verzi 2024-05-01-preview nebo novější, je osvědčeným postupem nastavit k a maxTextRecallSize tak, aby jejich součet byl alespoň 50. Výsledky vrácené uživateli pak můžete omezit pomocí parametru top .

Pokud používáte sémantický ranker ve verzi rozhraní API starší než 2024-05-01-preview, postupujte takto:

  • Pro vyhledávání pouze s klíčovými slovy (bez vektorů) nastaveno top na 50
  • V případě hybridního vyhledávání nastaveného k na 50 se ujistěte, že sémantický ranker získá alespoň 50 výsledků.

Pořadí

Pro hybridní dotazy se vytvoří více sad s volitelným sémantickým pořadím nebo bez. Hodnocení výsledků se počítá pomocí metody Reciprocal Rank Fusion (RRF).

V této části porovnejte odpovědi mezi vyhledáváním s jedním vektorem a jednoduchým hybridním vyhledáváním pro nejlepší výsledek. Různé algoritmy řazení, metrika podobnosti HNSW a RRF jsou v tomto případě výsledkem skóre s různými velikostmi. Toto chování je záměrně. Skóre RRF může být poměrně nízké, i když je shodnost vysoká. Nižší skóre jsou charakteristickým prvkem algoritmu RRF. V hybridním dotazu s RRF jsou do výsledků zahrnuty více dokumentů podle recipročního skóre seřazených dokumentů, s ohledem na relativně nižší skóre seřazených dokumentů RRF oproti čistě vektorovému vyhledávání.

Jednoduché hledání vektorů: @search.score výsledky seřazené podle kosinus podobnosti (výchozí funkce vzdálenosti vektoru).

{
    "@search.score": 0.8399121,
    "HotelId": "49",
    "HotelName": "Swirling Currents 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"
    }
}

Hybridní hledání: @search.score Hybridní výsledky seřazené pomocí reciproční Rank Fusion.

{
    "@search.score": 0.032786883413791656,
    "HotelId": "49",
    "HotelName": "Swirling Currents 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"
    }
}

Řešení potíží s hybridními dotazy

Pomocí následující tabulky můžete diagnostikovat běžné problémy s hybridními dotazy.

Problém Možná příčina Rozlišení
Prázdné výsledky Neshoda názvů vektorových polí nebo chybějící data indexu Ověřte, že fields v vectorQueries odpovídá vektorovému poli ve schématu indexu. Zkontrolujte, jestli dokumenty obsahují vektorová data.
Nízké skóre RRF Normální chování RRF Skóre RRF jsou ze své podstaty nižší než skóre podobnosti. Skóre 0,03 může stále značit silnou shodu.
Vektorové výsledky dominují Textový dotaz s nedostatečným výkonem Zvyšte hodnotu maxTextRecallSize pro zahrnutí více výsledků BM25 nebo upravte vážení vektoru.
Dominují výsledky textu Příliš nízká podobnost vektorů Zkontrolujte kvalitu vkládání. Zajistěte, aby vektor dotazu používal stejný model jako vektory dokumentu.
Sémantický ranker vrací méně výsledků. Nedostatečné vstupní dokumenty Při použití sémantického řazení nastavte k alespoň 50. Zkontrolujte, jestli filtry nejsou příliš omezující.
Filtr se neuplatní na vektory Pouze použití globálního filtru Pro filtrování specifické pro vektory použijte filterOverride ve vektorovém dotazu (náhled).
Neočekávané pole ve výsledcích select Chybí parametr Přidejte select , abyste určili, která pole se mají vrátit. Vylučte vektorová pole pro čitelnost.