Sdílet prostřednictvím


Přidání sémantického řazení do dotazů ve službě Azure AI Search

Sémantické řazení můžete použít u textových dotazů, hybridních dotazů a vektorových dotazů, pokud vaše hledané dokumenty obsahují řetězcová pole a vektorový dotaz má v vyhledávacím dokumentu textovou reprezentaci .

Tento článek vysvětluje, jak vyvolat sémantický ranker u dotazů.

Požadavky

  • Vyhledávací služba, úroveň Basic nebo vyšší s povoleným sémantickým rankerem.

  • Existující index vyhledávání s sémantickou konfigurací a obsahem ve formátu RTF.

  • Pokud potřebujete úvod k této funkci, projděte si sémantické hodnocení .

Poznámka:

Titulky a odpovědi se extrahují doslovně z textu ve vyhledávacím dokumentu. Sémantický subsystém používá strojové čtení k rozpoznávání obsahu, který má charakteristiky titulku nebo odpovědi, ale nevytváí nové věty nebo fráze. Z tohoto důvodu je nejvhodnější obsah, který obsahuje vysvětlení nebo definice pro sémantické řazení. Pokud chcete komunikovat ve stylu chatu s vygenerovanými odpověďmi, přečtěte si téma Načítání rozšířené generace (RAG).

Volba klienta

K vytvoření dotazu, který používá sémantické řazení, můžete použít kterýkoli z následujících nástrojů a sad SDK:

Vyhněte se funkcím, které obcházejí vyhodnocování relevance

Několik možností dotazů obchází vyhodnocování relevance, což z nich dělá nekompatibilní sémantické hodnocení. Pokud logika dotazu obsahuje následující funkce, nemůžete výsledky seřadit sémanticky:

  • Dotaz s nebo prázdným vyhledávacím řetězcem search=* , jako je čistý dotaz jen pro filtr, nebude fungovat, protože neexistuje nic k měření sémantické relevance, a proto skóre hledání je nula. Dotaz musí obsahovat termíny nebo fráze, které je možné vyhodnotit během zpracování.

  • Řazení (klauzule orderBy) u konkrétních polí přepíše skóre hledání a sémantické skóre. Vzhledem k tomu, že sémantické skóre má poskytnout pořadí, přidání klauzule orderby má za následek chybu HTTP 400, pokud použijete sémantické řazení u seřazených výsledků.

Nastavení dotazu

V tomto kroku přidejte do požadavku dotazu parametry. Aby byl dotaz úspěšný, měl by být fulltextové vyhledávání (pomocí parametru search pro předání řetězce) nebo vektorového dotazu a index by měl obsahovat textová pole s bohatým sémantickým obsahem a sémantickou konfigurací.

Průzkumník služby Search obsahuje možnosti pro sémantické řazení.

  1. Přihlaste se k portálu Azure.

  2. Otevřete vyhledávací index a vyberte Průzkumníka služby Search.

  3. Vyberte možnosti dotazu. Pokud jste už definovali sémantickou konfiguraci, je ve výchozím nastavení vybraná. Pokud ho nemáte, vytvořte pro svůj index sémantickou konfiguraci .

    Snímek obrazovky s možnostmi dotazu v Průzkumníku služby Search

  4. Zadejte dotaz, například "historický hotel s dobrým jídlem", a vyberte Hledat.

  5. Alternativně vyberte zobrazení JSON a vložte definice do editoru dotazů:

    Snímek obrazovky zobrazující syntaxi dotazu JSON na webu Azure Portal

    Tady je nějaký text JSON, který můžete vložit do zobrazení:

     {
         "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
     }
    

Vyhodnocení odpovědi

Pouze prvních 50 shod z počátečních výsledků může být sémanticky seřazeno. Stejně jako u všechdotazůch select Odpověď zahrnuje původní skóre relevance a může také obsahovat počet nebo dávkové výsledky v závislosti na tom, jak jste žádost formulovali.

V sémantickém řazení má odpověď více prvků: nové sémanticky seřazené skóre relevance, volitelný titulek ve formátu prostého textu a zvýraznění a volitelná odpověď. Pokud vaše výsledky neobsahují tyto nadbytečné prvky, může být váš dotaz nesprávně nakonfigurovaný. Jako první krok k řešení potíží zkontrolujte sémantickou konfiguraci a ujistěte se, že je zadaná v definici indexu i dotazu.

V klientské aplikaci můžete vytvořit strukturu vyhledávací stránky tak, aby obsahovala titulek jako popis shody, a ne celý obsah konkrétního pole. Tento přístup je užitečný, když jsou jednotlivá pole pro stránku výsledků hledání příliš hustá.

Odpověď pro výše uvedený příklad dotazu vrátí následující shodu jako horní výběr. Titulky se vrátí, protože je nastavena vlastnost titulky s prostým textem a zvýrazněnými verzemi. Odpovědi jsou z příkladu vynechány, protože nebylo možné určit pro tento konkrétní dotaz a korpus.

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

Očekávané úlohy

Pro sémantické řazení byste měli očekávat, že vyhledávací služba bude podporovat až 10 souběžných dotazů na repliku.

Služba omezuje sémantické požadavky na řazení, pokud jsou svazky příliš vysoké. Chybová zpráva, která obsahuje tyto fráze, značí, že služba má kapacitu pro sémantické řazení:

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

Pokud očekáváte konzistentní požadavky na propustnost blízko této úrovně nebo vyšší než tato úroveň, vytvořte lístek podpory, abychom pro vaši úlohu mohli zřídit.

Další kroky

Sémantické řazení lze použít v hybridních dotazech, které kombinují vyhledávání klíčových slov a vektorové vyhledávání do jednoho požadavku a jednotné odpovědi.