Sdílet prostřednictvím


Vytvoření indexu ve službě Azure AI Search

V tomto článku se dozvíte, jak definovat schéma indexu vyhledávání a nasdílit ho do vyhledávací služby. Vytvoření indexu vytvoří fyzické datové struktury ve vyhledávací službě. Jakmile index existuje, načtěte index jako samostatný úkol.

Požadavky

  • Oprávnění k zápisu jako přispěvatele vyhledávací služby nebo klíče rozhraní API pro správu pro ověřování na základě klíčů

  • Pochopení dat, která chcete indexovat. Index vyhledávání je založený na externím obsahu, který chcete prohledávat. Prohledávatelný obsah se ukládá jako pole v indexu. Měli byste mít jasnou představu o tom, která zdrojová pole chcete prohledávat, načíst, filtrovatelné, fasetové a řaditelné (pokyny najdete v kontrolním seznamu schématu).

  • Musíte mít také jedinečné pole ve zdrojových datech, které lze použít jako klíč dokumentu (nebo ID) v indexu.

  • Stabilní umístění indexu. Přesunutí existujícího indexu do jiné vyhledávací služby se nepodporuje. Znovu si projděte požadavky na aplikaci a ujistěte se, že vaše stávající vyhledávací služba (kapacita a umístění) dostatečná pro vaše potřeby.

  • Nakonec všechny úrovně služby mají omezení indexu počtu objektů, které můžete vytvořit. Pokud například experimentujete na úrovni Free, můžete mít v daném okamžiku pouze tři indexy. V samotném indexu existují omezení vektorů a limitů indexu pro počet jednoduchých a složitých polí.

Klíče dokumentu

Index vyhledávání má dva požadavky: musí mít název a klíč dokumentu.

Klíč dokumentu je jedinečný identifikátor hledaného dokumentu a hledaný dokument je kolekce polí, která něco úplně popisují. Pokud například indexujete datovou sadu filmů, obsahuje hledaný dokument název, žánr a dobu trvání jednoho filmu.

Ve službě Azure AI Search musí být klíč dokumentu řetězec a musí pocházet z jedinečných hodnot ve zdroji dat, který poskytuje obsah, který se má indexovat. Vyhledávací služba negeneruje klíčové hodnoty, ale v některých scénářích (například indexeru tabulek Azure) syntetizuje existující hodnoty a vytvoří jedinečný klíč pro indexované dokumenty.

Během přírůstkového indexování, kde se indexuje nový a aktualizovaný obsah, se přidají příchozí dokumenty s novými klíči, zatímco příchozí dokumenty s existujícími klíči se buď sloučí, nebo přepíšou v závislosti na tom, jestli jsou pole indexu null nebo naplněná.

Kontrolní seznam schématu

Tento kontrolní seznam vám pomůže při rozhodování o návrhu indexu vyhledávání.

  1. Zkontrolujte zásady vytváření názvů, aby názvy indexů a polí odpovídaly pravidlům pojmenování.

  2. Viz Podporované datové typy. Datový typ ovlivňuje způsob použití pole. Například číselný obsah je filtrovatelný, ale není prohledávatelný jako fulltext. Nejběžnějším datovým typem pro prohledávatelný text je Edm.String, který se tokenizuje a dotazuje pomocí fulltextového vyhledávacího modulu. Nejběžnějším datovým typem vektorového pole je Edm.Single , ale můžete použít i jiné typy.

  3. Identifikace klíče dokumentu Klíč dokumentu je požadavek na index. Jedná se o jedno řetězcové pole, které je vyplněné ze zdrojového datového pole, které obsahuje jedinečné hodnoty. Pokud například indexujete ze služby Blob Storage, jako klíč dokumentu se často používá cesta k úložišti metadat, protože jednoznačně identifikuje každý objekt blob v kontejneru.

  4. Identifikujte pole ve zdroji dat, která přispívají k prohledávatelnému obsahu v indexu.

    Prohledávatelný obsah nevectoru obsahuje krátké nebo dlouhé řetězce, které jsou dotazovány pomocí fulltextového vyhledávacího webu. Pokud je obsah podrobný (Krátké fráze nebo větší bloky dat), experimentujte s různými analyzátory a zjistěte, jak se text tokenizuje.

    Prohledávatelný vektorový obsah může být obrázky nebo text (v libovolném jazyce), které existují jako matematická reprezentace. Pomocí úzkých datových typů nebo komprese vektorů můžete zmenšit vektorová pole.

    Přiřazení atributů polí určuje chování vyhledávání i fyzické znázornění indexu ve vyhledávacím modulu. Určení, jak je třeba zadat pole, je pro mnoho zákazníků iterativní proces. Pokud chcete iterace urychlit, začněte ukázkovými daty, abyste je mohli snadno zahodit a znovu sestavit.

  5. Určete, která zdrojová pole je možné použít jako filtry. Vhodné je použít pole s číselným obsahem a pole s krátkým textem, zejména pole s opakujícími se hodnotami. Při práci s filtry nezapomeňte:

    • Filtry lze použít v dotazech vektoru a nevectoru, ale samotný filtr se v indexu použije alfanumerická pole (nevector).

    • Filtrovatelná pole se dají volitelně použít ve fasetové navigaci.

    • Filtrovatelná pole se vrátí v arbitrárním pořadí, proto zvažte možnost jejich řazení.

  6. U vektorových polí zadejte konfiguraci vektorového vyhledávání a algoritmy používané k vytváření navigačních cest a vyplňování vloženého prostoru. Další informace naleznete v tématu Přidání vektorových polí.

    Vektorová pole mají další vlastnosti, které pole bezvectoru nemají, například které algoritmy použít a kompresi vektorů.

    Vektorová pole vynechají atributy, které nejsou užitečné pro vektorová data, jako jsou řazení, filtrování a fasety.

  7. U polí, která nejsou typuvector, určete, jestli se má použít výchozí analyzátor ("analyzer": null) nebo jiný analyzátor. Analyzátory se používají k tokenizaci textových polí během indexování a k provádění dotazů.

    U vícejazyčných řetězců zvažte použití analyzátoru jazyka.

    U řetězců se spojovníky nebo zvláštními znaky zvažte specializované analyzátory. Jedním z příkladů je klíčové slovo , které zachází s celým obsahem pole jako s jedním tokenem. Toto chování je užitečné pro data, jako jsou PSČ, ID a některé názvy produktů. Další informace najdete v tématu Hledání zkrácených termínů a vzorce se zvláštními znaky.

Poznámka:

Fulltextové vyhledávání se provádí pomocí termínů, které jsou tokenizovány během indexování. Pokud se vašim dotazům nepodaří vrátit očekávané výsledky, otestujte tokenizaci a ověřte, že řetězec, který hledáte, skutečně existuje. Můžete u řetězců vyzkoušet různé analyzátory a zjistit, jak se pro různé analyzátory vytvářejí tokeny.

Vytvoření indexu

Až budete připraveni vytvořit index, použijte vyhledávacího klienta, který může požadavek odeslat. K počátečnímu vývoji a testování konceptu můžete použít azure Portal nebo rozhraní REST API, jinak je běžné používat sady Azure SDK.

Během vývoje naplánujte časté opětovné sestavení. Vzhledem k tomu, že se ve službě vytvářejí fyzické struktury, je pro mnoho úprav nezbytné vyřazení a opětovné vytvoření indexů . Můžete zvážit, že budete pracovat s podmnožinou dat, aby opětovné sestavení bylo rychlejší.

Návrh indexu prostřednictvím portálu vynucuje požadavky a pravidla schématu pro konkrétní datové typy, například zakázání funkcí fulltextového vyhledávání u číselných polí.

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

  2. Zkontrolujte místo. Search podléhají maximálnímu počtu indexů, které se liší podle úrovně služby. Ujistěte se, že máte prostor pro druhý index.

  3. Na stránce Přehled vyhledávací služby zvolte jednu z možností pro vytvoření indexu vyhledávání:

    Průvodce je komplexní pracovní postup, který vytvoří indexer, zdroj dat a dokončený index. Načte také data. Pokud je to víc, než chcete, použijte místo toho přidat index .

Následující snímek obrazovky ukazuje, kde se na panelu příkazů zobrazí přidání indexu a importu dat . Po vytvoření indexu ho můžete znovu najít na kartě Indexy .

Příkaz Přidat index

Tip

Po vytvoření indexu na portálu můžete zkopírovat reprezentaci JSON a přidat ho do kódu aplikace.

Nastavení corsOptions pro dotazy mezi zdroji

Schémata indexu obsahují oddíl pro nastavení corsOptions. JavaScript na straně klienta ve výchozím nastavení nemůže volat žádná rozhraní API, protože prohlížeče brání všem požadavkům mezi zdroji. Pokud chcete povolit dotazy mezi zdroji prostřednictvím indexu, povolte CORS (sdílení prostředků mezi zdroji) nastavením atributu corsOptions . Z bezpečnostních důvodů podporují CORS jenom rozhraní API dotazů.

"corsOptions": {
  "allowedOrigins": [
    "*"
  ],
  "maxAgeInSeconds": 300

Pro CORS je možné nastavit následující vlastnosti:

  • allowedOrigins (povinné): Toto je seznam původů, které mají povolený přístup k vašemu indexu. Kód JavaScriptu obsluhované z těchto zdrojů může dotazovat index (za předpokladu, že volající poskytuje platný klíč nebo má oprávnění). Každý původ je obvykle ve formuláři protocol://<fully-qualified-domain-name>:<port> , i když <port> je často vynechán. Další informace najdete v tématu Sdílení prostředků mezi zdroji (Wikipedie).</a0>

    Pokud chcete povolit přístup ke všem zdrojům, zahrňte * jako jednu položku do pole allowedOrigins . To není doporučený postup pro produkční vyhledávací služby , ale často je užitečný pro vývoj a ladění.

  • maxAgeInSeconds (volitelné): Prohlížeče používají tuto hodnotu k určení doby trvání (v sekundách) pro ukládání předběžných odpovědí CORS do mezipaměti. Musí to být nezáporné celé číslo. Delší období mezipaměti poskytuje lepší výkon, ale prodlužuje dobu, po kterou se zásady CORS musí projevit. Pokud tato hodnota není nastavená, použije se výchozí doba trvání 5 minut.

Povolené aktualizace existujících indexů

Vytvořit index vytvoří ve vyhledávací službě fyzické datové struktury (soubory a invertované indexy). Po vytvoření indexu může vaše schopnost projevit změny pomocí funkce Vytvořit nebo Aktualizovat index na základě toho, jestli vaše úpravy zneplatní tyto fyzické struktury. Většinu atributů pole nelze po vytvoření pole v indexu změnit.

Alternativně můžete vytvořit alias indexu, který slouží jako stabilní odkaz v kódu aplikace. Místo aktualizace kódu můžete aktualizovat alias indexu tak, aby odkazovat na novější verze indexu.

Pokud chcete minimalizovat četnost změn v procesu návrhu, následující tabulka popisuje, které prvky jsou ve schématu pevné a flexibilní. Změna pevného prvku vyžaduje opětovné sestavení indexu, zatímco flexibilní prvky lze kdykoli změnit, aniž by to mělo vliv na fyzickou implementaci.

Element (Prvek) Dá se aktualizovat?
Název No
Klíč No
Názvy a typy polí No
Atributy pole (prohledávatelné, filtrovatelné, facetable, řazení) No
Atribut pole (retrievable) Ano
Uložené (platí pro vektory) No
Analyzátor Do indexu můžete přidat a upravit vlastní analyzátory. Pokud jde o přiřazení analyzátoru u řetězcových polí, můžete upravit searchAnalyzerpouze . Všechna ostatní přiřazení a úpravy vyžadují opětovné sestavení.
Profily skórování Ano
Moduly pro návrhy No
sdílení prostředků mezi zdroji (CORS) Ano
Šifrování Ano

Další kroky

Pomocí následujících odkazů se seznamte s načtením indexu s daty nebo rozšířením indexu s mapou synonym.