Vytvoření sémantického dotazu ve službě Azure AI Search

V tomto článku se dozvíte, jak vyvolat sémantické hodnocení nad sadou výsledků a propagovat nejvíce sémanticky relevantních výsledků na začátek zásobníku. Můžete také získat sémantické popis, se zvýrazněnými výrazy a frázemi a sémantické odpovědi.

Požadavky

  • Vyhledávací služba, úroveň Basic nebo vyšší sémantické řazení.

  • 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á vlastnosti popis 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

Zvolte klienta vyhledávání, který podporuje sémantické řazení. Zde je uvedeno několik možností:

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

Několik možností dotazů ve službě Azure AI Search obchází vyhodnocování relevance nebo je jinak nekompatibilní s sémantickým řazením. Pokud logika dotazu obsahuje následující funkce, nemůžete výsledky seřadit sémanticky:

  • Dotaz s hledaným řetězcem 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. Dotaz musí obsahovat termíny nebo fráze, které je možné vyhodnotit během zpracování.

  • Dotaz složený z úplné syntaxe Lucene (queryType=full) není kompatibilní s sémantickým řazením (queryType=semantic). Sémantický model nepodporuje úplnou syntaxi Lucene.

  • Ř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) 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 .

    Screenshot showing query options in Search explorer.

  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ů:

    Screenshot showing JSON query syntax in the 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 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é popis v prostém textu a zvýraznění a volitelnou 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 popis 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 jsou vráceny, protože vlastnost "popis s" je nastavena, 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"
    },
  ...
]

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.