Keresési indexek az Azure AI Keresés-ben

Note

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

Az Azure AI Keresés search index a keresési szolgáltatásban található kereshető tartalom, amely a helyi keresőmotor által érhető el indexeléshez, ágens-alapú lekéréshez, teljes szöveges kereséshez, vektoralapú kereséshez, hibrid kereséshez és szűrt lekérdezésekhez. Az indexeket egy olyan séma határozza meg, amely a keresési szolgáltatásba van mentve, és az adatbetöltést második lépésként követik. Az indexelt tartalom az elsődleges külső adattárakon kívül létezik a keresési szolgáltatásban, ami a modern keresőalkalmazásokban várt ezredmásodpercnyi válaszidőhöz szükséges. A távoli ügynöki lekérési és indexelőalapú indexelési forgatókönyvek kivételével a keresési szolgáltatás soha nem csatlakozik a külső forrásadatokhoz, és nem is lekérdezéseket végez.

Ez a cikk a keresési indexek létrehozásának és kezelésének főbb fogalmait ismerteti, többek között az alábbiakat:

  • Tartalom (dokumentumok és séma)
  • Fizikai adatstruktúra
  • Alapszintű műveletek

Tip

Rövid összefoglalás:

  • Egy index tárolja a kereshető tartalmat
  • A séma mezőket és azok viselkedését határozza meg
  • A dokumentumok önálló kereshető elemek (az adatbázis soraihoz hasonlóan)
  • Ugrás az index létrehozásához →

Keresési index sémája

Az indexek az Azure AI Keresés keresési dokumentumokat tartalmaznak. A dokumentum elméletileg az indexben lévő kereshető adatok egyetlen egysége. Előfordulhat például, hogy egy kiskereskedő minden termékhez rendelkezik dokumentumokkal, egy egyetem minden osztályhoz rendelkezik dokumentumokkal, az utazási helyeken pedig minden szállodához és célhelyhez egy dokumentum tartozik, és így tovább. Ezeket a fogalmakat jobban ismert adatbázis-megfelelőkre kell leképeznie: a keresési index egy táblával egyenlő, a dokumentumok pedig nagyjából egyenértékűek a tábla soraival.

Íme egy példa az indexséma megjelenésére.

{
  "name": "name_of_index, unique across the service",
  "description" : "Health plan coverage for standard and premium plans for Northwind and Contoso employees.",
  "fields": [
    {
      "name": "name_of_field",
      "type": "Edm.String | Collection(Edm.String) | Collection(Edm.Single) | Edm.Int32 | Edm.Int64 | Edm.Double | Edm.Boolean | Edm.DateTimeOffset | Edm.GeographyPoint",
      "searchable": true (default where applicable) | false (only Edm.String and Collection(Edm.String) fields can be searchable),
      "filterable": true (default) | false,
      "sortable": true (default where applicable) | false (Collection(Edm.String) fields cannot be sortable),
      "facetable": true (default where applicable) | false (Edm.GeographyPoint fields cannot be facetable),
      "key": true (only Edm.String fields can be keys) | false (default where applicable),
      "retrievable": true (default) | false,
      "analyzer": "name_of_analyzer_for_search_and_indexing" (only if 'searchAnalyzer' and 'indexAnalyzer' are not set),
      "searchAnalyzer": "name_of_search_analyzer" (only if 'indexAnalyzer' is set and 'analyzer' is not set),
      "indexAnalyzer": "name_of_indexing_analyzer" (only if 'searchAnalyzer' is set and 'analyzer' is not set),
      "normalizer":  "name_of_normalizer" (applies to fields that are filterable),
      "synonymMaps": "name_of_synonym_map" (optional, only one synonym map per field is currently supported),
      "dimensions": "number of dimensions used by an embedding models" (applies to vector fields of type Collection(Edm.Single)),
      "vectorSearchProfile": "name_of_vector_profile" (indexes can have many configurations but a field can use just one)
    }
  ],
  "suggesters": [ ],
  "scoringProfiles": [ ],
  "analyzers":(optional)[ ... ],
  "charFilters":(optional)[ ... ],
  "tokenizers":(optional)[ ... ],
  "tokenFilters":(optional)[ ... ],
  "defaultScoringProfile": (optional) "...",
  "corsOptions": (optional) { },
  "encryptionKey":(optional){ },
  "semantic":(optional){ },
  "vectorSearch":(optional){ }
}

A fields gyűjtemény általában a legnagyobb rész. Minden mező rendelkezik névvel, adattípussal és attribútumokkal, amelyek meghatározzák a lekérdezési időpontban való használatot.

Más elemek össze vannak csukva a rövidség kedvéért, de az alábbi hivatkozások részletes információkat tartalmaznak:

  • A javaslattevők támogatják az előtöltött lekérdezéseket, például az automatikus kiegészítést.
  • A scoringProfiles a relevanciahangoláshoz használatos.
  • Az elemzők a sztringek tokenekké való feldolgozására szolgálnak a nyelvi szabályok vagy az elemző által támogatott egyéb jellemzők szerint.
  • A corsOptions vagy a cross-origin remote scripting (CORS) olyan alkalmazásokhoz használható, amelyek különböző tartományokból érkező kéréseket ad ki.
  • A encryptionKey az indexben lévő bizalmas tartalmak dupla titkosítását konfigurálja.
  • a szemantika teljes szöveges és hibrid kereséssel konfigurálja a szemantikai rerankingot.
  • A vectorSearch vektormezőket és lekérdezéseket konfigurál.

Meződefiníciók

A keresési dokumentumokat az fieldsIndex létrehozása kérelem törzsében található gyűjtemény határozza meg. Mezőkre van szüksége a dokumentumazonosításhoz (kulcsokhoz), a kereshető szöveg tárolásához, valamint a szűrők, aspektusok és rendezés mezőihez. Szükség lehet olyan adatok mezőire is, amelyeket egy felhasználó soha nem lát. Előfordulhat például, hogy a keresési pontszám növeléséhez a pontozási profilban használható haszonkulcsok vagy marketingösztönzések mezőit szeretné használni.

Ha a bejövő adatok hierarchikus jellegűek, akkor az indexen belül összetett típusként jelölhetők, beágyazott struktúrákhoz. A Hotels példaadatkészlet olyan komplex típusokat mutat be, például a Cím típussal (több almezőt tartalmaz), amely egy-az-egyhez kapcsolattal rendelkezik az egyes szállodákkal, valamint a Szobák komplex gyűjteményével, amelyben minden szállodához több szoba van társítva.

Mezőattribútumok

A mezőattribútumok határozzák meg a mező használatát, például azt, hogy teljes szöveges keresésben, részletes navigációban, rendezési műveletekben stb. használják-e.

  • A karakterlánc mezőket gyakran searchable és retrievable jelölik.
  • A keresési eredmények szűkítéséhez vagy megrendeléséhez használt mezőket a program a következőként sortablejelöli meg: , filterableés facetable.
Attribute Description
kereshető Teljes szöveg vagy vektor kereshető. A szövegmezők lexikai elemzésnek vannak alávetve, például a szótörés az indexelés során. További részletek az A teljes szöveges keresés működése című cikkben.
szűrhető A $filter lekérdezésekben hivatkozott. Szűrhető típusú Edm.String mezők, vagy Collection(Edm.String) nem esnek szófeltörés alá, ezért az összehasonlítások csak pontos egyezéseket tartalmaznak. Tekintettel a "napos nap" sztringre, $filter=f eq 'sunny' nem talál egyezést, de $filter=f eq 'sunny day' sikeres.
rendezhető A rendszer alapértelmezés szerint keresési pontszám szerint rendez, de a dokumentumok mezői alapján konfigurálhat explicit rendezést. A típusmezők Collection(Edm.String) nem rendezhetők.
tényezők szerint csoportosítható Általában a keresési eredmények bemutatására használják, amely kategóriánkénti találatok számát is tartalmazza (például szállodák egy adott városban). Ez a beállítás nem használható típusmezőkkel Edm.GeographyPoint. A szűrhető, rendezhető vagy facetable típusú Edm.String mezők hossza legfeljebb 32 kilobájt lehet. Részletek az Index létrehozása (REST API) című cikkben.
kulcs Kulcs – Az indexen belüli dokumentumok egyedi azonosítója. Kulcsmezőként egyetlen Edm.String típusú mezőt kell megadni.
visszaszerezhető Azt jelzi, hogy a mező visszaadható-e egy dokumentum részeként a keresési eredmények között. Ha ezt az attribútumot false értékre állítja, a mező kizárásra kerül a visszaadott dokumentummezők közül, és a mező a $select használatával nem kérhető le. Ez a beállítás nem akadályozza meg az indexelt tartalomtól vagy sémakonfigurációtól függő keresési funkciók belső használatát. A funkciókonfigurációtól függően a mezőtartalom vagy a származtatott információk továbbra is hozzájárulhatnak a kimenetekhez, például a kiemeléshez, a aspektusokhoz, a rangsoroláshoz, a szűréshez, a rendezéshez vagy más lekérdezésfeldolgozáshoz. Ennek a tulajdonságnak az értéke true tulajdonságú mezők esetén csak key lehet.

Új mezők bármikor megadhatók, a meglévő meződefiníciók azonban az index élettartamára rögzülnek. Emiatt a fejlesztők általában a Azure portált használják egyszerű indexek létrehozására, ötletek tesztelésére, vagy a Azure portáloldalak használatával egy beállítás keresésére. Egy index rendszeres kiegészítése hatékonyabb az index újraépítését megkönnyítő kódalapú megközelítéssel.

Note

Az index létrehozásához használt API-k eltérő alapértelmezett viselkedéssel rendelkeznek. A REST API-k esetében a legtöbb attribútum alapértelmezés szerint engedélyezve van (például a kereshető és lekérdezhető értékek a sztringmezőkre igaz), és gyakran csak akkor kell őket beállítani, ha ki szeretné kapcsolni őket. A .NET SDK esetében az ellenkezője igaz. Minden olyan tulajdonság esetében, amelyet nem állít be explicit módon, az alapértelmezett beállítás a megfelelő keresési viselkedés letiltása, kivéve, ha kifejezetten engedélyezi azt.

Ajánlott eljárások a bizalmas mezőkhöz

Ha egy mező bizalmas vagy bizalmas információkat tartalmaz:

  • Csak az alkalmazás által igényelt mezőattribútumok engedélyezése, például searchable: , filterablevagy facetable.
  • A mezőattribútumokat explicit módon konfigurálja az API vagy az SDK alapértelmezett beállításai helyett.
  • Ne feltételezze, hogy egy mező dokumentumból való kizárása megakadályozza a közzétételt az összes lekérdezési funkción vagy válaszformátumon keresztül.
  • Tekintse át az alkalmazás- és szolgáltatáskövetelményeket, mielőtt bizalmas információkat tárol a keresési indexben.

Fizikai struktúra és méret

A Azure AI Keresés az index fizikai szerkezete nagyrészt belső megvalósítás. Hozzáférhet a sémához, betöltheti és lekérdezheti a tartalmát, monitorozhatja annak méretét, és kezelheti a kapacitását. Azonban Microsoft kezeli a keresési szolgáltatásban tárolt infrastruktúrát és fizikai adatstruktúrákat.

Az indexméretet a Search felügyeleti > Indexek lapon követheti nyomon a Azure portálon. Másik lehetőségként megadhat egy GET INDEX kérést a keresési szolgáltatáshoz vagy egy szolgáltatásstatisztikai kéréshez a tárterület méretének ellenőrzéséhez.

Note

Ha aktívan törli a tartalmat, az indextárhely és a méret néhány percenként frissül. A törlés háttérfolyamatként fut. Kis késés várható a metrikafrissítések miatt.

Az index méretét a következő határozza meg:

  • A dokumentumok mennyisége és összetétele.
  • Az egyes mezők attribútumai: a beolvasható nem növeli az index méretét, de a szűrhető, rendezhető és a szempontok szerinti rendezhetőség több tárterületet használ fel a nem tokenekbe bontott szövegek tárolásához.
  • Indexkonfiguráció. Pontosabban, akár javaslattevőket, akár speciális elemzőket is tartalmaz. Ha az edgeNgram tokenizert használja a karaktersorozatoka, ab, abc, abcd () szó szerinti tárolására, az index nagyobb, mint a standard elemző használata esetén.

A dokumentum összetételét és mennyiségét az határozza meg, hogy mit szeretne importálni. Ne feledje, hogy a keresési indexek csak a keresési alkalmazás számára hasznos tartalmakat tartalmazhatnak. Ha a forrásadatok bináris mezőket tartalmaznak, hagyja ki ezeket a mezőket, kivéve, ha AI-bővítést használ a tartalom feltöréséhez és elemzéséhez a szöveg kereshető információinak létrehozásához.

A mezőattribútumok határozzák meg a viselkedést. Ezeknek a viselkedéseknek a támogatása érdekében az indexelési folyamat létrehozza a szükséges adatstruktúrákat. Egy típusmező Edm.String esetében például a "kereshető" teljes szöveges keresést hív meg, amely fordított indexeket keres a tokenizált kifejezéshez. Ezzel szemben a "szűrhető" vagy a "rendezhető" attribútum támogatja a nem módosított sztringek iterációit.

A javaslattevők olyan szerkezetek, amelyek támogatják a típusalapú vagy automatikus kiegészítésű lekérdezéseket. Ha javaslatot tesz, az indexelési folyamat létrehozza a szó szerinti karakter egyezéséhez szükséges adatstruktúrát. A javaslattevők mezőszinten vannak implementálva, ezért válassza csak azokat a mezőket, amelyek a szövegkiegészítéshez alkalmasak.

Alapműveletek és interakciók

Most, hogy jobban tudja, mi az index, ez a szakasz index-futtatókörnyezeti műveleteket vezet be, beleértve az egyetlen indexhez való csatlakozást és biztonságossá tételt.

Note

Az indexek áthelyezéséhez vagy másolásához nincs portál- vagy API-támogatás. Az alkalmazás telepítését általában egy másik keresőszolgáltatásra irányíthatja (ugyanazzal az indexnévvel), vagy módosíthatja a nevet, hogy készítsen egy másolatot az aktuális keresőszolgáltatáson, majd felépítse azt.

Indexelkülönítés

A Azure AI Keresés egyszerre csak egy indexet használhat. Minden indexhez kapcsolódó művelet egyetlen indexet céloz meg. Nincs fogalma a kapcsolódó indexek, illetve a független indexek összekapcsolása sem az indexeléshez, sem a lekérdezéshez.

Folyamatosan elérhető

Az index azonnal elérhető a lekérdezésekhez, amint az első dokumentum indexelt, de nem működik teljesen, amíg az összes dokumentum indexel. A rendszer belsőleg elosztja az indexet a partíciók között, és replikákon hajtja végre. A fizikai index belsőleg van kezelve. Ön kezeli a logikai indexet.

Az index folyamatosan elérhető, és nem lehet szüneteltetni vagy offline állapotba helyezni. Mivel folyamatos működésre tervezték, a tartalom frissítése és maga az index hozzáadása valós időben történik. Ha egy kérelem egybeesik egy dokumentumfrissítéssel, előfordulhat, hogy a lekérdezések ideiglenesen hiányos eredményeket adnak vissza.

A lekérdezés-folytonosság a dokumentumműveletekhez, például a frissítéshez vagy törléshez, valamint az index meglévő szerkezetét vagy integritását nem befolyásoló módosításokhoz, például új mezők hozzáadásához létezik. A szerkezeti frissítések, például a meglévő mezők módosítása általában egy legördülő és újraépítési munkafolyamattal kezelhetők egy fejlesztési környezetben, vagy az index új verziójának létrehozásával az éles szolgáltatásban.

Az indexek újraépítésének elkerülése érdekében egyes ügyfelek, akik kis módosításokat végeznek a "verzió" mezőben, létrehoznak egy újat, amely egy korábbi verzióval együtt létezik. Idővel ez elavult mezők és elavult egyéni elemződefiníciók révén árva tartalomhoz vezet, különösen egy éles indexben, amelynek replikálása költséges. Ezeket a problémákat az index tervezett frissítései során, az index életciklus-kezelésének részeként kezelheti.

Végpontkapcsolat és biztonság

Minden indexelési és lekérdezési kérés egy indexet céloz meg. A végpontok általában a következők egyike:

Endpoint Kapcsolat- és hozzáférés-vezérlés
<your-service>.search.windows.net/indexes Az indexek gyűjteményét célozza meg. Index létrehozása, listázása vagy törlésekor használatos. Ezekhez a műveletekhez rendszergazdai jogosultságok szükségesek, és rendszergazdai API-kulcsokkal vagy keresési közreműködői szerepkörrel érhetők el.
<your-service>.search.windows.net/indexes/<your-index>/docs Egyetlen index dokumentumgyűjteményét célozza meg. Index vagy adatfrissítés lekérdezésekor használatos. A lekérdezésekhez az olvasási jogosultságok elegendőek, és lekérdezési API-kulcsokkal vagy adatolvasó szerepkörrel érhetők el. Az adatfrissítéshez rendszergazdai jogosultságokra van szükség.

Kapcsolódás indexhez

  1. Start a Azure portállal és a keresési szolgáltatás irányítópultjával.

  2. Próbáljon ki más ügyfeleket programozott hozzáféréshez. Az első lépésekhez az alábbi rövid útmutatókat ajánljuk:

Következő lépések

Gyakorlati tapasztalatot szerezhet az indexek létrehozásával szinte bármilyen minta vagy bemutató útmutató segítségével az Azure AI Keresés-ben. Elsőként a tartalomjegyzékben szereplő rövid útmutatók bármelyikét választhatja.

Érdemes azonban megismerkednie az index adatokkal való betöltésének módszertanával is. Az indexdefiníció és az adatimportálási stratégiák a tandemben vannak definiálva. Az alábbi cikkek további információt nyújtanak az indexek létrehozásáról és betöltéséről.