Vytvoření indexeru v Azure AI Vyhledávač

Note

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.

Tento článek vysvětluje základní kroky pro vytvoření indexeru, který automatizuje příjem dat pro podporované zdroje dat. V závislosti na zdroji dat a pracovním postupu možná budete potřebovat další konfiguraci.

Indexer můžete použít k automatizaci importu a indexování dat v Azure AI Vyhledávač. Indexer je pojmenovaný objekt v search service, který se připojuje k externímu Azure zdroji dat, čte a serializuje data a předává je 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 k zápisu pro podporované zdroje dat.

Indexery podporují dva pracovní postupy:

  • Indexování nezpracovaného obsahu (prostý text nebo vektory): Extrahuje řetězce a metadata z textového obsahu pro scénáře fulltextového vyhledávání. Extrahuje také nezpracovaný vektorový obsah pro vyhledávání vektorů (například vektory v kolekci Azure SQL database nebo 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é generují nový prohledávatelný obsah. Můžete například přidat integrované machine learning pro analýzu obrázků a nestrukturovaného textu, extrahování nebo odvozování textu a struktury. Dovednosti můžete použít také k vytvoření bloku a vektorizaci obsahu z textu a obrázků. Indexování založené na dovednostech 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ímají příchozí data. Další informace najdete v obohacování AI v Azure AI Vyhledávač.

Prerequisites

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

  • Definice zdroje dat , která nastaví připojení k externím datům.

  • Vyhledávací index, který může přijímat příchozí data.

  • Ujistěte se, že jste pod maximálními limity pro váš tarif 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í.

Indexovací vzory

Při vytváření indexeru se definice řídí jedním ze dvou vzorů: indexování založené na obsahu nebo indexování založené na dovednostech. Vzory jsou podobné, ale indexování založené na dovednostech zahrnuje další vlastnosti.

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í

Jiné parametry jsou volitelné a upravují chování modulu runtime, 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ší parametry configuration pro chování specifické pro zdroj. Pokud je zdroj například Blob Storage, můžete nastavit parametr pro filtrování podle přípony souboru, například:

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

Pokud je zdroj 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 na search service. 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 předchozí vlastnosti a parametry platí, ale následující dodatečné vlastnosti jsou specifické pro obohacení 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. Další informace najdete v tématech Obohacení pomocí AI, Dovednostní sady v Azure AI Vyhledávač, Vytvoření dovednostní sady, Mapování obohacených výstupních polí a Povolení ukládání do mezipaměti pro obohacení pomocí AI (Preview).

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 a pak ho předá do vyhledávacího webu pro indexování. Tato část popisuje požadavky na příchozí data pro indexování na základě textu.

Zdrojová data Tasks
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í.
Relational 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ů, vytvořte zobrazení SQL nebo vytvořte 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šťuje souhrnná data do sady řádků, vloží informace o všech místnostech jako dokumenty JSON do každého hotelového záznamu. Vložené informace o místnosti jsou generovány 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 použít jiné přístupy, které vytvoří stejný výsledek.
Files 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 parsovat 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.

Pamatujte, že je potřeba zpracovávat pouze data, která lze vyhledávat a filtrovat.

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

Azure AI Vyhledávač nemůže provádět fulltextové vyhledávání binárních dat v žádném formátu, i když může extrahovat a odvodit textové popisy souborů obrázků (viz AI rozšiřování) 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.

Protože indexery neopravují problémy s kvalitou dat, možná budete potřebovat samostatné kroky čištění nebo transformace dat. Další informace najdete v dokumentaci k produktu pro databázový produkt 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, například Azure SQL nebo Cosmos DB, povolte change tracking. Azure Storage má zabudované sledování změn prostřednictvím vlastnosti LastModified pro každý objekt blob, soubor a tabulku. Odkazy na 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é výrazně ovlivňují indexování řetězců (analyzují se a tokenizují pouze řetězcová pole).

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

  2. Nastavte kolekci polí a atributy polí.

    Pole jsou jedinými cíli příchozího obsahu. V závislosti na atributech polí ve schématu se každá hodnota pole analyzuje, tokenizuje nebo ukládá jako doslovný řetězec 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 na vzdáleném search service, potřebujete klienta vyhledávání. Klient vyhledávání může být Azure portal, klient REST nebo kód aplikace, který vytvoří instanci klienta indexeru. Doporučujeme Azure portal nebo rozhraní REST API pro počáteční vývoj a testování konceptu.

  1. Na webu Azure Portal přejděte do vyhledávací služby.

  2. Vyberte si z následujících možností:

    • Importovat data: Tento průvodce vytvoří všechny požadované prvky, včetně indexéru. 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, který zobrazuje tlačítko Přidat indexer.

Spusťte indexer

Ve výchozím nastavení se indexer spustí okamžitě, když ho vytvoříte na search service. Toto chování můžete přepsat nastavením disabled na true v definici indexeru. Provádění indexeru je moment pravdy, kdy zjistíte, jestli dochází k problémům s propojováním, mapováním polí nebo sestavováním kompetenčních sad.

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

  • Spuštění na vytvoř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římá odchozí volání do jiných prostředků Azure. Pokud jde o Azure role, indexery nemají samostatné identity. Připojení z vyhledávače k jinému prostředku Azure se provádí pomocí systémové spravované identity nebo uživatelem přiřazené spravované identity vyhledávací služby. Pokud se indexer připojí k prostředku Azure na virtuální síti, měli byste pro toto připojení vytvořit sdílený privátní odkaz. Další informace najdete v tématu Zabezpečený přístup k externím datům.

Kontrola výsledků

Monitorujte stav indexeru a zkontrolujte stav spuštění. Úspěšné spuštění může i nadá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ý zpracovali 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í životopisů, buď během naplánovaného spuštění, nebo spuštěním na vyžádání, indexer odkazuje na referenční bod, 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í reindexování použijte Obnovení dovedností nebo Obnovení 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ů.