Megosztás a következőn keresztül:


Index-előrejelzés definiálása szülő-gyermek indexeléshez

Az adattömbökből álló dokumentumokat tartalmazó indexek esetében az index-előrejelzés azt határozza meg, hogy a szülő-gyermek tartalom hogyan van leképezve a keresési index mezőire az egy-a-többhöz indexeléshez. Index-vetületen keresztül a következő címre küldhet tartalmat:

  • Egyetlen index, ahol a szülőmezők minden adattömbhöz ismétlődnek, de az index szemcséje az adattömb szintjén van. Erre a megközelítésre példa a RAG oktatóanyag .

  • Két vagy több index, ahol a szülőindex a szülődokumentumhoz kapcsolódó mezőkkel rendelkezik, és a gyermekindex adattömbök köré van rendezve. A gyermekindex az elsődleges keresési korpusz, de a szülőindex használható keresési lekérdezésekhez , ha egy adott adattömb szülőmezőit szeretné lekérni, vagy független lekérdezésekhez.

A legtöbb implementáció egyetlen index, amely a szülőmezőkkel rendelkező adattömbök köré van rendezve, például a dokumentumfájl nevét, és minden egyes adattömbhöz ismétlődik. A rendszer azonban úgy van kialakítva, hogy támogassa a különálló és több gyermekindexet, ha ez a követelmény. Az Azure AI Search nem támogatja az indexbeillesztéseket, ezért az alkalmazás kódjának kezelnie kell a használni kívánt indexet.

Az index-előrejelzés egy készségkészletben van definiálva. Feladata az indexelési folyamat koordinálása, amely egy keresési indexbe küldi a tartalomtömböket, valamint az egyes adattömbökhöz társított szülőtartalmakat. Ez javítja a natív adattömbök működését azáltal, hogy további lehetőségeket biztosít a szülő-gyermek tartalom indexelésének szabályozására.

Ez a cikk bemutatja, hogyan hozhat létre indexsémát és indexelővetítési mintákat egy-a-többhöz indexeléshez.

Előfeltételek

  • Indexelőalapú indexelési folyamat.

  • Index (egy vagy több), amely elfogadja az indexelő folyamat kimenetét.

  • Olyan támogatott adatforrás , amely tartalmaz egy adattömbbe beszúrni kívánt tartalmat. Ez lehet vektoros vagy nem meg nem felelős tartalom.

  • Olyan képesség, amely darabokra osztja a tartalmat, vagy a Szöveg felosztása képességre , vagy egy olyan egyéni képességre, amely egyenértékű funkciókat biztosít.

A készségkészlet tartalmazza az indexelő kivetítését, amely az adatokat egy-a-többhöz indexeléshez alakítja. A készségkészletek más készségekkel is rendelkezhetnek, például beágyazási képességekkel, például az AzureOpenAIEmbedding szolgáltatással , ha a forgatókönyv integrált vektorizálást is tartalmaz.

Függőség az indexelő feldolgozásától

Az egy-a-többhöz indexelés a képességkészletek és az indexelőalapú indexelés függőségét veszi igénybe, amely a következő négy összetevőt foglalja magában:

  • Adatforrás
  • Egy vagy több index a kereshető tartalomhoz
  • Indexprojektciót tartalmazó készségkészlet*
  • Indexelő

Az adatok bármilyen támogatott adatforrásból származhatnak, de a feltételezés az, hogy a tartalom elég nagy ahhoz, hogy az adatokat darabolni szeretné, és az adattömbítés oka az, hogy olyan RAG-mintát implementál, amely földi adatokat biztosít egy csevegési modell számára. Vagy vektorkeresést hajt végre, és meg kell felelnie a beágyazási modellek kisebb bemeneti méretére vonatkozó követelményeknek.

Az indexelők előre definiált indexbe töltik be az indexelt adatokat. A séma definiálása és egy vagy több index használata az első döntés egy-a-többhöz indexelési forgatókönyvben. A következő szakasz az indextervet ismerteti.

Index létrehozása egy-a-többhöz indexeléshez

Akár a szülőértékeket ismétlő adattömbökhöz hoz létre egy indexet, akár külön indexeket a szülő-gyermek mező elhelyezéséhez, a kereséshez használt elsődleges index adattömbök köré van tervezve. A következő mezőkkel kell rendelkeznie:

  • Egy dokumentumkulcsmező, amely egyedileg azonosítja az egyes dokumentumokat. Típusként Edm.String kell definiálni az keyword elemzővel.

  • Az egyes adattömböket a szülővel társító mező. Típusnak Edm.Stringkell lennie. Nem lehet a dokumentumkulcs mezője, és igaz értékre kell filterable állítania. A jelen cikkben szereplő példákban parent_id néven és előre jelzett kulcsértékként is hivatkozunk rá.

  • Egyéb tartalommezők, például szöveg- vagy vektorizált adattömbmezők.

A képességkészlet létrehozása vagy az indexelő futtatása előtt indexnek kell léteznie a keresési szolgáltatásban.

Szülő- és gyermekmezőket tartalmazó egyetlen indexséma

A RAG- és vektorkeresési forgatókönyvek elsődleges mintája az egyes adattömbökhöz ismétlődő szülőtartalommal rendelkező adattömbök köré tervezett egyetlen index. A megfelelő szülőtartalom és az egyes adattömbök társításának lehetősége indexprojekciókon keresztül engedélyezve van.

Az alábbi séma egy példa, amely megfelel az index-előrejelzések követelményeinek. Ebben a példában a szülőmezők a parent_id és a cím. A gyermekmezők a vektorok és a nem vektoros adattömbök. A chunk_id az index dokumentumazonosítója. A parent_id és a cím ismétlődik az index minden adattömbjére vonatkozóan.

Index létrehozásához használhatja az Azure Portalt, a REST API-kat vagy az Azure SDK-t.

{
    "name": "my_consolidated_index",
    "fields": [
        {"name": "chunk_id", "type": "Edm.String", "key": true, "filterable": true, "analyzer": "keyword"},
        {"name": "parent_id", "type": "Edm.String", "filterable": true},
        {"name": "title", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "retrievable": true},
        {"name": "chunk", "type": "Edm.String","searchable": true,"retrievable": true},
        {"name": "chunk_vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": false, "stored": false, "dimensions": 1536, "vectorSearchProfile": "hnsw"}
    ],
    "vectorSearch": {
        "algorithms": [{"name": "hsnw", "kind": "hnsw", "hnswParameters": {}}],
        "profiles": [{"name": "hsnw", "algorithm": "hnsw"}]
    }
}

Index-előrejelzések hozzáadása egy készségkészlethez

Az index-előrejelzések egy képességkészlet-definícióban vannak definiálva, és elsősorban tömbként selectorsvannak definiálva, ahol minden választó egy másik célindexnek felel meg a keresési szolgáltatásban. Ez a szakasz a környezet szintaxisával és példáival kezdődik, majd paraméterhivatkozással.

Válasszon egy lapot a különböző API-szintaxishoz. A JSON-definíció szerkesztésén kívül a portál jelenleg nem támogatja az előrejelzések beállítását. Tekintse meg a JSON REST-példáját.

Az index-előrejelzések általánosan elérhetők. A legújabb stabil API-t javasoljuk:

Íme egy példa hasznos adat egy index-előrejelzés definíciójára, amellyel az egyes oldalak kimenetét a Szöveg felosztása képesség saját dokumentumként vetheti ki a keresési indexben.

"indexProjections": {
    "selectors": [
        {
            "targetIndexName": "my_consolidated_index",
            "parentKeyFieldName": "parent_id",
            "sourceContext": "/document/pages/*",
            "mappings": [
                {
                    "name": "chunk",
                    "source": "/document/pages/*",
                    "sourceContext": null,
                    "inputs": []
                },
                {
                    "name": "chunk_vector",
                    "source": "/document/pages/*/chunk_vector",
                    "sourceContext": null,
                    "inputs": []
                },
                {
                    "name": "title",
                    "source": "/document/title",
                    "sourceContext": null,
                    "inputs": []
                }
            ]
        }
    ],
    "parameters": {
        "projectionMode": "skipIndexingParentDocuments"
    }
}

Paraméterhivatkozás

Index-vetítési paraméterek Definíció
selectors A fő keresési korpusz paraméterei általában az adattömbök köré tervezettek.
projectionMode Nem kötelező paraméter, amely utasításokat ad az indexelőnek. Ennek a paraméternek skipIndexingParentDocumentsaz egyetlen érvényes értéke, és akkor használatos, ha az adattömb indexe az elsődleges keresési korpusz, és meg kell adnia, hogy a szülőmezők további keresési dokumentumokként vannak-e indexelve az adattömb indexében. Ha nem állítja be skipIndexingParentDocuments, akkor az indexben olyan további keresési dokumentumokat kap, amelyek adattömbök esetén null értékűek, de csak szülőmezőkkel vannak kitöltve. Ha például öt dokumentum 100 adattömböt ad hozzá az indexhez, akkor az indexben lévő dokumentumok száma 105. Az öt létrehozott dokumentum vagy szülőmező null értékű az adattömb (gyermek) mezők esetében, így azok jelentősen eltérnek az indexben lévő dokumentumok többségétől. Javasoljuk, hogy projectionMode állítsa a következőre skipIndexingParentDocument: .

A választók definíciójuk részeként az alábbi paraméterekkel rendelkeznek.

Választóparaméterek Definíció
targetIndexName Annak az indexnek a neve, amelybe az indexadatok előrevetítve lesznek. Ez vagy az ismétlődő szülőmezőkkel rendelkező egyetlen darabolt index, vagy a gyermekindex, ha külön indexeket használ a szülő-gyermek tartalomhoz.
parentKeyFieldName A szülődokumentum kulcsát tartalmazó mező neve.
sourceContext A bővítési széljegyzet, amely meghatározza, hogy az adatok milyen részletességgel képezhetők le az egyes keresési dokumentumokba. További információ: Skill context and input annotation language.
mappings Gazdagított adatok a keresési index mezőire való leképezésének tömbje. Minden leképezés a következőkből áll:
name: Annak a mezőnek a neve a keresési indexben, amelybe az adatokat indexelni kell.
source: A bővítési széljegyzet elérési útja, amelyből az adatokat le kell húzni.

Mindegyik mapping rekurzív módon is definiálhat adatokat egy választható sourceContext és inputs egy mezővel, hasonlóan a tudástárhoz vagy a Shaper Skillhez. Az alkalmazástól függően ezek a paraméterek lehetővé teszik az adatok típusmezőkké Edm.ComplexType alakítását a keresési indexben. Egyes LLM-ek nem fogadnak el összetett típust a keresési eredményekben, ezért a használt LLM határozza meg, hogy az összetett típusleképezés hasznos-e vagy sem.

A mappings paraméter fontos. Explicit módon le kell képeznie a gyermekindex minden mezőjét, kivéve az azonosító mezőket, például a dokumentumkulcsot és a szülőazonosítót.

Ez a követelmény ellentétben áll az Azure AI Search más mezőleképezési konvencióival. Egyes adatforrástípusok esetében az indexelő implicit módon megfeleltethet mezőket hasonló nevek vagy ismert jellemzők alapján (például a blobindexelők alapértelmezett dokumentumkulcsként az egyedi metaadat-tárolási útvonalat használják). Az indexelővetítések esetében azonban explicit módon meg kell adnia a kapcsolat "több" oldalán lévő összes mezőleképezést.

Ne hozzon létre mezőleképezést a szülőkulcsmezőhöz. Ez megzavarja a változáskövetést és a szinkronizált adatfrissítést.

Szülődokumentumok kezelése

Most, hogy több mintát is látott az egy-a-többhöz indexeléshez, összehasonlíthatja az egyes beállításokkal kapcsolatos főbb különbségeket. Az index-előrejelzések hatékonyan hoznak létre "gyermek" dokumentumokat minden olyan "szülő" dokumentumhoz, amely egy képességkészleten fut. A "szülő" dokumentumok kezelésére számos lehetőség közül választhat.

  • Ha szülő- és gyermekdokumentumokat szeretne külön indexekbe küldeni, állítsa az targetIndexName indexelő definícióját a szülőindexre, és állítsa az targetIndexName index-vetületválasztóban a gyermekindexre.

  • Ha a szülő- és gyermekdokumentumokat ugyanabban az indexben szeretné tárolni, állítsa az indexelőt targetIndexName és az index-előrejelzést targetIndexName ugyanarra az indexre.

  • Ha el szeretné kerülni a szülőkeresési dokumentumok létrehozását és annak biztosítását, hogy az index csak egységes szemcsés gyermekdokumentumokat tartalmaz, állítsa targetIndexName be az indexelő definícióját és a választót is ugyanarra az indexre, de adjon hozzá egy további parameters objektumot selectorsaz alábbihoz hasonló kulcskészlettel projectionModeskipIndexingParentDocuments:

    "indexProjections": {
        "selectors": [
            ...
        ],
        "parameters": {
            "projectionMode": "skipIndexingParentDocuments"
        }
    }
    

Mezőleképezések áttekintése

Az indexelők három különböző típusú mezőleképezéssel vannak társítva. Az indexelő futtatása előtt ellenőrizze a mezőleképezéseket, és tudja, mikor érdemes használni az egyes típusokat.

A mezőleképezések egy indexelőben vannak definiálva, és egy forrásmező indexmezőhöz való leképezésére szolgálnak. A mezőleképezések olyan adatútvonalakhoz használhatók, amelyek adatokat emelnek ki a forrásból, és indexelés céljából adják át azokat, köztes képességfeldolgozási lépés nélkül. Az indexelők általában automatikusan leképezhetik az azonos nevű és típusú mezőket. Explicit mezőleképezésekre csak akkor van szükség, ha eltérések vannak. Az egy-a-többhöz indexelés és az eddig tárgyalt minták esetén előfordulhat, hogy nincs szükség mezőleképezésekre.

A kimeneti mezőleképezések egy indexelőben vannak definiálva, és a képességkészlet által létrehozott gazdagított tartalomnak a fő indexbe való leképezésére szolgálnak. A cikkben tárgyalt egy-a-többhöz mintákban ez egy kétindexes megoldás szülőindexe. A cikkben bemutatott példákban a szülőindex ritkább, csak egy címmezővel rendelkezik, és ez a mező nem töltődik fel tartalommal a képességkészlet feldolgozásából, így nem a kimeneti mező megfeleltetése.

Az indexelő vetületi mezőleképezések a képességkészlet által létrehozott tartalmak gyermekindexben lévő mezőkre való leképezésére szolgálnak. Azokban az esetekben, amikor a gyermekindex szülőmezőket is tartalmaz (az összevont indexmegoldáshoz hasonlóan), minden tartalommal rendelkező mezőhöz be kell állítania a mezőleképezéseket, beleértve a szülőszintű címmezőt is, feltéve, hogy azt szeretné, hogy a cím megjelenjen az egyes darabolt dokumentumokban. Ha külön szülő- és gyermekindexeket használ, az indexelő előrejelzéseknek csak a gyermekszintű mezők mezőleképezésével kell rendelkezniük.

Feljegyzés

A kimeneti mezőleképezések és az indexelővetítési mezőleképezések egyaránt gazdagított dokumentumfacsomópontokat fogadnak el forrásbemenetként. Az adatelérési út beállításához elengedhetetlen az egyes csomópontok elérési útjának megadása. Az elérési út szintaxisáról további információt a bővített csomópontok elérési útjának és a képességkészlet definíciójának hivatkozása példákban talál.

Az indexelő futtatása

Miután létrehozott egy adatforrást, indexet és képességkészletet, készen áll az indexelő létrehozására és futtatására. Ez a lépés végrehajtja a folyamatot.

A keresési index lekérdezhető, miután a feldolgozás befejeződött a megoldás teszteléséhez.

Tartalom életciklusa

Az alapul szolgáló adatforrástól függően az indexelők általában folyamatos változáskövetést és törlésészlelést biztosítanak. Ez a szakasz az egy-a-többhöz indexelés tartaloméletciklusát ismerteti az adatfrissítéshez kapcsolódóan.

A változáskövetést és törlésészlelést biztosító adatforrások esetében az indexelő folyamat képes a forrásadatok változásainak felvételére. Minden alkalommal, amikor az indexelőt és a készségkészletet futtatja, az index-előrejelzések frissülnek, ha a képességkészlet vagy a mögöttes forrásadatok megváltoztak. Az indexelő által észlelt módosítások a bővítési folyamaton keresztül kerülnek propagálásra az indexben lévő előrejelzésekre, biztosítva, hogy a tervezett adatok a forrásból származó adatforrás tartalmának aktuális ábrázolása legyen. Az adatfrissítési tevékenység minden adattömbhöz egy előre jelzett kulcsértékben lesz rögzítve. Ez az érték frissül a mögöttes adatok változásakor.

Feljegyzés

Bár manuálisan szerkesztheti a tervezett dokumentumok adatait az index leküldéses API-val, el kell kerülnie ezt. Az index manuális frissítései felülíródnak a következő folyamathíváskor, feltéve, hogy a forrásadatokban lévő dokumentum frissül, és az adatforrásban engedélyezve van a változáskövetés vagy a törlésészlelés.

Frissített tartalom

Ha új tartalmat ad hozzá az adatforráshoz, a rendszer új adattömböket vagy gyermekdokumentumokat ad hozzá az indexhez a következő indexelő futtatásakor.

Ha módosítja az adatforrás meglévő tartalmát, az adattömbök növekményesen frissülnek a keresési indexben, ha a használt adatforrás támogatja a változáskövetést és a törlés észlelését. Ha egy dokumentumban megváltozik egy szó vagy mondat, akkor az adott szót vagy mondatot tartalmazó célindex adattömbje frissül a következő indexelő futtatásakor. A meglévő mezők nem támogatnak más típusú frissítéseket, például egy mezőtípust és néhány hozzárendelést. Az engedélyezett frissítésekről további információt az indexséma frissítése című témakörben talál.

Egyes adatforrások, például az Azure Storage alapértelmezés szerint támogatják a változás- és törléskövetést az időbélyeg alapján. Más adatforrásokat, például a OneLake-t, az Azure SQL-t vagy az Azure Cosmos DB-t a változáskövetéshez kell konfigurálni.

Törölt tartalom

Ha a forrástartalom már nem létezik (például ha a szöveg kevesebb adattömbhöz van lerövidítve), a keresési index megfelelő gyermekdokumentuma törlődik. A fennmaradó gyermekdokumentumok a kulcsukat is frissítik, hogy új kivonatértéket tartalmazzanak, még akkor is, ha a tartalmuk egyébként nem változott.

Ha egy szülődokumentumot teljesen töröl az adatforrásból, a megfelelő gyermekdokumentumok csak akkor törlődnek, ha a törlést az adatforrás-definícióban meghatározottak dataDeletionDetectionPolicy észlelik. Ha nincs dataDeletionDetectionPolicy konfigurálva, és törölnie kell egy szülődokumentumot az adatforrásból, akkor manuálisan kell törölnie a gyermekdokumentumokat, ha már nem szeretné őket.

Előre jelzett kulcsérték

A frissített és törölt tartalmak adatintegritásának biztosítása érdekében az egy-a-többhöz indexelés adatfrissítése a "több" oldalon előrejelzett kulcsértékre támaszkodik. Ha integrált vektorizálást vagy az Adatok importálása és vektorizálása varázslót használja, a tervezett kulcs értéke az parent_id index egy darabolt vagy "több" oldalán lévő mező.

A tervezett kulcsérték egy egyedi azonosító, amelyet az indexelő minden dokumentumhoz létrehoz. Biztosítja az egyediséget, és lehetővé teszi a módosítások és törlések nyomon követését a megfelelő működéshez. Ez a kulcs a következő szegmenseket tartalmazza:

  • Véletlenszerű kivonat az egyediség garantálásához. Ez a kivonat akkor változik, ha a szülődokumentum frissül az indexelő későbbi futtatásakor.
  • A szülődokumentum kulcsa.
  • A bővítési széljegyzet elérési útja, amely azonosítja azt a környezetet, amelyből a dokumentum létrejött.

Ha például feloszt egy szülődokumentumot az "aa1b22c33" kulcsértékkel négy lapra, majd az egyes oldalakat saját dokumentumként veti ki az indexprojekciók segítségével:

  • aa1b22c33
  • aa1b22c33_pages_0
  • aa1b22c33_pages_1
  • aa1b22c33_pages_2

Ha a szülődokumentum frissül a forrásadatokban, esetleg több adattömbbe ágyazott lapot eredményez, a véletlenszerű kivonat megváltozik, több oldal lesz hozzáadva, és az egyes adattömbek tartalma a forrásdokumentum tartalmával megegyező módon frissül.

Példa külön szülő-gyermek indexekre

Ez a szakasz példákat mutat be a külön szülő- és gyermekindexekre. Ez nem gyakori minta, de lehetséges, hogy olyan alkalmazáskövetelményekkel rendelkezik, amelyek a legjobban megfelelnek ennek a megközelítésnek. Ebben a forgatókönyvben szülő-gyermek tartalmat vetít két külön indexbe.

Minden séma rendelkezik az adott szemcséje mezőivel, és a szülőazonosító mező közös mindkét indexben a keresési lekérdezésben való használathoz. Az elsődleges keresési korpusz a gyermekindex, majd adjon ki egy keresési lekérdezést, amely lekéri az eredményben szereplő egyes egyezések szülőmezőit. Az Azure AI Search nem támogatja az illesztéseket lekérdezéskor, ezért az alkalmazás kódjának vagy vezénylési rétegének egyesítenie vagy össze kellválogatnia az alkalmazásnak vagy folyamatnak átadható eredményeket.

A szülőindex parent_id mezővel és címmel rendelkezik. A parent_id a dokumentumkulcs. Nincs szükség vektorkeresési konfigurációra, hacsak nem szeretné vektorizálni a mezőket a szülődokumentum szintjén.

{
    "name": "my-parent-index",
    "fields": [

        {"name": "parent_id", "type": "Edm.String", "filterable": true},
        {"name": "title", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "retrievable": true},
    ]
}

A gyermekindexben vannak az adattömbmezők, valamint a parent_id mező. Ha integrált vektorizálást, pontozási profilokat, szemantikai rangsorolókat vagy elemzőket használ, ezeket a gyermekindexben állíthatja be.

{
    "name": "my-child-index",
    "fields": [
        {"name": "chunk_id", "type": "Edm.String", "key": true, "filterable": true, "analyzer": "keyword"},
        {"name": "parent_id", "type": "Edm.String", "filterable": true},
         {"name": "chunk", "type": "Edm.String","searchable": true,"retrievable": true},
        {"name": "chunk_vector", "type": "Collection(Edm.Single)", "searchable": true, "retrievable": false, "stored": false, "dimensions": 1536, "vectorSearchProfile": "hnsw"}
    ],
    "vectorSearch": {
        "algorithms": [{"name": "hsnw", "kind": "hnsw", "hnswParameters": {}}],
        "profiles": [{"name": "hsnw", "algorithm": "hnsw"}]
    },
    "scoringProfiles": [],
    "semanticConfiguration": [],
    "analyzers": []
}

Íme egy példa egy indexprojektálási definícióra, amely meghatározza, hogy az indexelőnek mely adatelérési utat kell használnia a tartalom indexeléséhez. Megadja a gyermekindex nevét az indexprojekció definíciójában, és minden gyermek- vagy adattömbszintű mező megfeleltetését adja meg. Ez az egyetlen hely, ahol a gyermekindex neve meg van adva.

"indexProjections": {
    "selectors": [
        {
            "targetIndexName": "my-child-index",
            "parentKeyFieldName": "parent_id",
            "sourceContext": "/document/pages/*",
            "mappings": [
                {
                    "name": "chunk",
                    "source": "/document/pages/*",
                    "sourceContext": null,
                    "inputs": []
                },
                {
                    "name": "chunk_vector",
                    "source": "/document/pages/*/chunk_vector",
                    "sourceContext": null,
                    "inputs": []
                }
            ]
        }
    ]
}

Az indexelő definíciója a folyamat összetevőit határozza meg. Az indexelő definíciójában a megadható indexnév a szülőindex. Ha mezőleképezésekre van szüksége a szülőszintű mezőkhöz, definiálja őket az outputFieldMappings fájlban. A különálló indexeket használó egy-a-többhöz indexelés esetén az indexelő definíciója az alábbi példához hasonlóan nézhet ki.

{
  "name": "my-indexer",
  "dataSourceName": "my-ds",
  "targetIndexName": "my-parent-index",
  "skillsetName" : "my-skillset"
  "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,
}

Következő lépés

Az adattömb és az egy-a-többhöz indexelés az Azure AI Search RAG-mintájának része. További információért folytassa az alábbi oktatóanyag és kódminta használatával.