Sdílet prostřednictvím


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

Tento článek se zaměřuje na základní kroky vytvoření indexeru. V závislosti na zdroji dat a pracovním postupu může být potřeba další konfigurace.

Indexer můžete použít k automatizaci importu a indexování dat ve službě Azure AI Search. Indexer je pojmenovaný objekt ve vyhledávací službě, který se připojuje k externímu zdroji dat Azure, čte data a předává ho do vyhledávacího webu pro indexování. Použití indexerů výrazně snižuje množství a složitost kódu, který potřebujete napsat, pokud používáte podporovaný zdroj dat.

Indexery podporují dva pracovní postupy:

  • Indexování nezpracovaného obsahu (prostý text nebo vektory): Extrahujte řetězce a metadata z textového obsahu pro scénáře fulltextového vyhledávání. Extrahuje nezpracovaný vektorový obsah pro vektorové vyhledávání (například vektory v databázi Azure SQL nebo kolekci Azure Cosmos DB). V tomto pracovním postupu probíhá indexování pouze u existujícího obsahu, který zadáte.

  • Indexování založené na dovednostech: Rozšiřuje indexování prostřednictvím integrovaných nebo vlastních dovedností, které vytvářejí nebo generují nový prohledávatelný obsah. Můžete například přidat integrované strojové učení pro analýzu obrázků a nestrukturovaného textu, extrahování nebo odvozování textu a struktury. Nebo použijte dovednosti k vytvoření bloků a vektorizaci obsahu z textu a obrázků. Indexování založené na dovednostech vytváří nebo generuje nový obsah, který ve vašem externím zdroji dat neexistuje. Nový obsah se stane součástí indexu, když přidáte pole do schématu indexu, který přijímá příchozí data. Další informace najdete v tématu Rozšiřování AI ve službě Azure AI Search.

Požadavky

  • Podporovaný zdroj dat obsahující obsah, který chcete ingestovat.

  • Zdroj dat indexeru, který nastaví připojení k externím datům.

  • Index vyhledávání, který může přijímat příchozí data.

  • Buďte pod maximálními limity pro vaši úroveň služby. Úroveň Free umožňuje tři objekty každého typu a 1–3 minuty zpracování indexeru, nebo 3–10 minut, pokud existuje sada dovedností.

Vzory indexeru

Při vytváření indexeru je definice jedním ze dvou vzorů: indexování založené na obsahu nebo indexování založené na dovednostech. Vzory jsou stejné, s tím rozdílem, že indexování založené na dovednostech má více definic.

Příklad indexeru pro indexování na základě obsahu

Indexování založené na obsahu pro fulltextové nebo vektorové vyhledávání je primárním případem použití indexerů. Pro tento pracovní postup indexer vypadá jako v tomto příkladu.

{
  "name": (required) String that uniquely identifies the indexer,
  "description": (optional),
  "dataSourceName": (required) String indicating which existing data source to use,
  "targetIndexName": (required) String indicating which existing index to use,
  "parameters": {
    "batchSize": null,
    "maxFailedItems": 0,
    "maxFailedItemsPerBatch": 0,
    "base64EncodeKeys": false,
    "configuration": {}
  },
  "fieldMappings": (optional) unless field discrepancies need resolution,
  "disabled": null,
  "schedule": null,
  "encryptionKey": null
}

Indexery mají následující požadavky:

  • Vlastnost name , která jednoznačně identifikuje indexer v kolekci indexeru
  • dataSourceName Vlastnost, která odkazuje na objekt zdroje dat. Určuje připojení k externím datům.
  • Vlastnost targetIndexName odkazující na cílový index vyhledávání

Další parametry jsou volitelné a upravují chování doby běhu, jako je například počet chyb, které se mají přijmout před selháním celé úlohy. Požadované parametry jsou zadány ve všech indexerech a jsou zdokumentované v referenčních informacích k rozhraní REST API.

Indexery specifické pro zdroje dat pro objekty blob, SQL a Azure Cosmos DB poskytují další configuration parametry pro chování specifické pro zdroj. Pokud je zdrojem například Blob Storage, můžete nastavit parametr, který filtruje přípony souborů, například:

"parameters" : { "configuration" : { "indexedFileNameExtensions" : ".pdf,.docx" } }

Pokud je zdrojem Azure SQL, můžete nastavit parametr časového limitu dotazu.

Mapování polí se používají k explicitnímu mapování zdrojových a cílových polí v případě nesrovnalostí podle názvu nebo typu mezi polem ve zdroji dat a polem v indexu vyhledávání.

Ve výchozím nastavení se indexer spustí okamžitě, když ho vytvoříte ve vyhledávací službě. Pokud nechcete provádět indexer, nastavte disabled při vytváření indexeru hodnotu true .

Můžete také zadat plán nebo nastavit šifrovací klíč pro doplňkové šifrování definice indexeru.

Příklad indexeru pro indexování založené na dovednostech

Indexování založené na dovednostech využívá rozšiřování AI ke zpracování obsahu, který není prohledávatelný v nezpracované podobě. Všechny výše uvedené vlastnosti a parametry platí, ale následující dodatečné vlastnosti jsou specifické pro rozšiřování AI: skillSetName, , cacheoutputFieldMappings.

{
  "name": (required) String that uniquely identifies the indexer,
  "dataSourceName": (required) String, provides raw content that will be enriched,
  "targetIndexName": (required) String, name of an existing index,
  "skillsetName" : (required for AI enrichment) String, name of an existing skillset,
  "cache":  {
    "storageConnectionString" : (required if you enable the cache) Connection string to a blob container,
    "enableReprocessing": true
    },
  "parameters": { },
  "fieldMappings": (optional) Maps fields in the underlying data source to fields in an index,
  "outputFieldMappings" : (required) Maps skill outputs to fields in an index,
}

Rozšiřování AI je vlastní předmětnou oblastí a je mimo rozsah tohoto článku. Pokud potřebujete další informace, začněte rozšiřováním AI, sadami dovedností ve službě Azure AI Search, vytvořte sadu dovedností, mapujte rozšířená výstupní pole a povolte ukládání do mezipaměti pro rozšiřování AI.

Příprava externích dat

Indexery pracují s datovými sadami. Když spustíte indexer, připojí se ke zdroji dat, načte data z kontejneru nebo složky, volitelně je serializuje do formátu JSON před předáním do vyhledávacího webu pro indexování. Tato část popisuje požadavky příchozích dat pro indexování na základě textu.

Zdrojová data Úlohy
Dokumenty JSON Dokumenty JSON můžou obsahovat text, čísla a vektory. Ujistěte se, že struktura nebo tvar příchozích dat odpovídá schématu indexu vyhledávání. Většina indexů vyhledávání je poměrně plochá, kde kolekce polí se skládá z polí na stejné úrovni. Hierarchické nebo vnořené struktury jsou však možné prostřednictvím složitých polí a kolekcí.
Relační Zadejte data jako zploštěnou sadu řádků, kde se každý řádek stane úplným nebo částečným vyhledávacím dokumentem v indexu.

Pokud chcete zploštět relační data do sady řádků, měli byste vytvořit zobrazení SQL nebo vytvořit dotaz, který vrátí nadřazené a podřízené záznamy ve stejném řádku. Ukázková datová sada předdefinovaných hotelů je například databáze SQL, která má 50 záznamů (jednu pro každý hotel), propojenou se záznamy místností v související tabulce. Dotaz, který zploštějí souhrnná data do sady řádků, vloží všechny informace o místnosti do dokumentů JSON do každého záznamu hotelu. Vložené informace o místnosti jsou vygenerované dotazem, který používá klauzuli FOR JSON AUTO .

Další informace o této technice najdete v definování dotazu, který vrací vložený JSON. Toto je jen jeden příklad; můžete najít další přístupy, které vytvoří stejný výsledek.
Soubory Indexer obvykle vytvoří jeden vyhledávací dokument pro každý soubor, kde se prohledávací dokument skládá z polí pro obsah a metadata. V závislosti na typu souboru může indexer někdy analyzovat jeden soubor do více vyhledávacích dokumentů. Například v souboru CSV se každý řádek může stát samostatným vyhledávacím dokumentem.

Mějte na paměti, že potřebujete načíst pouze prohledávatelná a filtrovatelná data:

  • Prohledávatelná data jsou text nebo vektory.
  • Filtrovatelná data jsou text a čísla (ne vektorová pole)

Azure AI Search nemůže provádět fulltextové vyhledávání binárních dat v žádném formátu, i když dokáže extrahovat a odvodit textové popisy souborů obrázků (viz obohacení AI) k vytvoření prohledávatelného obsahu. Podobně lze velký text rozdělit a analyzovat pomocí modelů přirozeného jazyka a najít strukturu nebo relevantní informace a generovat nový obsah, který můžete přidat do hledaného dokumentu. Může také provádět vektorové vyhledávání při vkládání, včetně kvantovaných vkládání v binárním formátu.

Vzhledem k tomu, že indexery neřeší problémy s daty, můžou být potřeba jiné formy čištění nebo manipulace s daty. Další informace najdete v dokumentaci k produktu databázového produktu Azure.

Příprava zdroje dat

Indexery vyžadují zdroj dat, který určuje typ, kontejner a připojení.

  1. Ujistěte se, že používáte podporovaný typ zdroje dat.

  2. Vytvořte definici zdroje dat. Mezi nejčastěji používané zdroje dat patří následující zdroje:

  3. Pokud je zdrojem dat databáze, jako je Azure SQL nebo Cosmos DB, povolte sledování změn. Azure Storage má integrované sledování změn prostřednictvím LastModified vlastnosti pro každý objekt blob, soubor a tabulku. Odkazy pro různé zdroje dat vysvětlují, které metody sledování změn jsou podporovány indexery.

Příprava indexu

Indexery také vyžadují index vyhledávání. Vzpomeňte si, že indexery předávají data do vyhledávacího webu pro indexování. Stejně jako indexery mají vlastnosti, které určují chování provádění, schéma indexu má vlastnosti, které hluboce ovlivňují způsob indexování řetězců (analyzují se a tokenizují pouze řetězce).

  1. Začněte vytvořením indexu vyhledávání.

  2. Nastavte kolekci polí a atributy polí.

    Pole jsou jedinými receptory vnějšího obsahu. V závislosti na tom, jak jsou pole přiřazena ve schématu, se hodnoty pro každé pole analyzují, tokenizují nebo ukládají jako doslovné řetězce pro filtry, přibližné vyhledávání a dotazy typu.

    Indexery můžou při ekvivalentních názvech a typech automaticky mapovat zdrojová pole na cílová pole indexu. Pokud pole nelze implicitně mapovat, nezapomeňte, že můžete definovat explicitní mapování polí, které indexeru říká, jak směrovat obsah.

  3. Zkontrolujte přiřazení analyzátoru v jednotlivých polích. Analyzátory mohou transformovat řetězce. Proto se indexované řetězce můžou lišit od toho, co jste předali. Účinky analyzátorů můžete vyhodnotit pomocí funkce Analyzovat text (REST). Další informace o analyzátorech naleznete v tématu Analyzátory pro zpracování textu.

Při indexování indexer kontroluje pouze názvy a typy polí. Neexistuje žádný ověřovací krok, který zajistí správnost příchozího obsahu pro odpovídající vyhledávací pole v indexu.

Vytvoření indexeru

Až budete připraveni vytvořit indexer ve vzdálené vyhledávací službě, potřebujete klienta vyhledávání. Vyhledávacím klientem může být Azure Portal, klient REST nebo kód, který vytvoří instanci klienta indexeru. Pro počáteční vývoj a testování konceptu doporučujeme azure Portal nebo rozhraní REST API.

  1. Přihlaste se k webu Azure Portal a vyhledejte vyhledávací službu.

  2. Na stránce Přehled vyhledávací služby vyberte ze dvou možností:

    • Průvodce importem dat : Průvodce je jedinečný v tom, že vytvoří všechny požadované prvky. Jiné přístupy vyžadují předdefinovaný zdroj dat a index.

      Snímek obrazovky znázorňující průvodce importem dat

    • Přidání indexeru: Vizuální editor pro zadání definice indexeru.

      Snímek obrazovky s tlačítkem Přidat indexer

Spuštění indexeru

Ve výchozím nastavení se indexer spustí okamžitě, když ho vytvoříte ve vyhledávací službě. Toto chování můžete přepsat nastavením disabled na true v definici indexeru. Provádění indexeru je moment pravdy, kde zjistíte, jestli dochází k problémům s propojením, mapováním polí nebo sestavováním sad dovedností.

Indexer můžete spustit několika způsoby:

  • Spusťte spuštění při vytváření nebo aktualizaci indexeru (výchozí).

  • Spusťte na vyžádání, pokud nejsou v definici žádné změny, nebo před resetováním pro úplné indexování. Další informace najdete v tématu Spuštění nebo resetování indexerů.

  • Naplánujte zpracování indexeru pro vyvolání provádění v pravidelných intervalech.

Plánované spouštění se obvykle implementuje, když potřebujete přírůstkové indexování, abyste mohli získat nejnovější změny. Plánování proto závisí na detekci změn.

Indexery jsou jedním z několika subsystémů, které provádějí přesáhlá odchozí volání jiných prostředků Azure. Pokud jde o role Azure, indexery nemají samostatné identity; Připojení z vyhledávacího webu k jinému prostředku Azure se provádí pomocí spravované identity přiřazené systémem nebo uživatelem přiřazené vyhledávací služby. Pokud se indexer připojí k prostředku Azure ve virtuální síti, měli byste pro toto připojení vytvořit sdílené privátní propojení . Další informace o zabezpečených připojeních najdete v tématu Zabezpečení ve službě Azure AI Search.

Kontrola výsledků

Monitorujte stav indexeru a zkontrolujte stav. Úspěšné spuštění může stále obsahovat upozornění a oznámení. Nezapomeňte zkontrolovat úspěšná i neúspěšná oznámení o stavu, kde najdete podrobnosti o úloze.

Pro ověření obsahu spusťte dotazy na naplněném indexu, který vrací celé dokumenty nebo vybraná pole.

Detekce změn a vnitřní stav

Pokud váš zdroj dat podporuje detekci změn, může indexer detekovat základní změny v datech a zpracovávat pouze nové nebo aktualizované dokumenty při každém spuštění indexeru a ponechat nezměněný obsah tak, jak je. Pokud historie provádění indexeru říká, že spuštění proběhlo úspěšně se zpracovanými dokumenty 0/0 , znamená to, že indexer nenašel žádné nové nebo změněné řádky nebo objekty blob v podkladovém zdroji dat.

Logika detekce změn je integrovaná do datových platforem. Způsob, jakým indexer podporuje detekci změn, se liší podle zdroje dat:

Indexery sledují poslední dokument, který zpracoval ze zdroje dat, prostřednictvím interní horní meze. Značka se v rozhraní API nikdy nezpřístupní, ale indexer interně sleduje, kde se zastavil. Při indexování se obnoví buď naplánovaným spuštěním, nebo vyvoláním na vyžádání, indexer odkazuje na horní mez, aby mohl pokračovat tam, kde skončil.

Pokud potřebujete vymazat horní značku, která se má přeindexovat úplně, můžete použít resetování indexeru. Pro selektivní přeindexování použijte resetování dovedností nebo resetování dokumentů. Prostřednictvím rozhraní API pro resetování můžete vymazat interní stav a také vyprázdnit mezipaměť, pokud jste povolili přírůstkové rozšiřování. Další pozadí a porovnání jednotlivých možností resetování najdete v tématu Spuštění nebo resetování indexerů, dovedností a dokumentů.