Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Megjegyzés
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.
Ez a cikk az ügynöki lekéréshez szükséges indexmezőket és konfigurációkat ismerteti. Ezen követelmények egyike sem új. Olyan meglévő indexet is használhat, amely megfelel a feltételeknek, még akkor is, ha egy korábbi API-verzióval lett létrehozva.
Minden indexelt tudásbázis egy mögöttes indextől függ. A folyamat beállításától függően az index az alábbiak egyike lehet:
Meglévő: Önálló index, amely egy keresési index tudásbázisán keresztül érhető el. Az indexnek meg kell felelnie a cikkben szereplő feltételeknek.
Generált:Indexelt tudásbázis által automatikusan létrehozott index. A létrehozott indexek alapértelmezés szerint megfelelnek az összes feltételnek.
Az ügynöki alapú lekérés feltételei
Az alábbi táblázat azokat az indexelemeket rendezi, amelyek követelményszint szerint befolyásolják az ügynöki lekérést.
| Indexelem | Követelmény | Jegyzetek |
|---|---|---|
searchable és retrievable karakterláncmezők |
Kötelező | A lekérdezés végrehajtásához és az eredmények lekéréséhez használatos. |
| Szemantikai konfiguráció | Kötelező | Használja a(z) defaultSemanticConfiguration elemet, vagy bírálja felül a szemantikai konfigurációt a tudásforrásban. |
| Hivatkozásmezők | Recommended | Felhasználó által definiált mezők, amelyek a forrástartalomra adott válaszokat attribútumként adják meg, például a dokumentum nevét, oldalszámát vagy adattömb-azonosítóját. |
| Vektormezők és vektorizáló | Recommended | Lehetővé teszi a szöveg–vektor konvertálást a lekérdezési időpontban. |
| Pontozási profil | Optional | Növeli az adott mezők relevanciáját. Automatikus alkalmazásra van állítva defaultScoringProfile . |
| Elemző | Optional | Szabályozza, hogyan történik a szöveg tokenizálása, például a szóközök és a speciális karakterek kezelése. |
| Szinonimák térképei | Optional | Terminológiával vagy szakzsargonnal bővíti a lekérdezéseket. |
Példa az indexdefinícióra
Az alábbi példa egy ügynöki lekérésre szolgáló indexet mutat be. Megfelel a szükséges elemekre vonatkozó feltételeknek, és ajánlott eljárásként vektormezőket is tartalmaz.
{
"name": "earth_at_night",
"description": "Contains images and descriptions of our planet in darkness as captured from space by Earth-observing satellites and astronauts on the International Space Station over the past 25 years.",
"fields": [
{
"name": "id", "type": "Edm.String",
"searchable": true, "retrievable": true, "filterable": true, "sortable": true, "facetable": true,
"key": true,
"stored": true,
"synonymMaps": []
},
{
"name": "page_chunk", "type": "Edm.String",
"searchable": true, "retrievable": true, "filterable": false, "sortable": false, "facetable": false,
"analyzer": "en.microsoft",
"stored": true,
"synonymMaps": []
},
{
"name": "page_chunk_vector_text_3_large", "type": "Collection(Edm.Single)",
"searchable": true, "retrievable": false, "filterable": false, "sortable": false, "facetable": false,
"dimensions": 3072,
"vectorSearchProfile": "hnsw_text_3_large",
"stored": false,
"synonymMaps": []
},
{
"name": "page_number", "type": "Edm.Int32",
"searchable": false, "retrievable": true, "filterable": true, "sortable": true, "facetable": true,
"stored": true,
"synonymMaps": []
},
{
"name": "chapter_number", "type": "Edm.Int32",
"searchable": false, "retrievable": true, "filterable": true, "sortable": true, "facetable": true,
"stored": true,
"synonymMaps": []
}
],
"semantic": {
"defaultConfiguration": "semantic_config",
"configurations": [
{
"name": "semantic_config",
"flightingOptIn": false,
"prioritizedFields": {
"prioritizedContentFields": [
{
"fieldName": "page_chunk"
}
],
"prioritizedKeywordsFields": []
}
}
]
},
"vectorSearch": {
"algorithms": [
{
"name": "alg",
"kind": "hnsw",
"hnswParameters": {
"metric": "cosine",
"m": 4,
"efConstruction": 400,
"efSearch": 500
}
}
],
"profiles": [
{
"name": "hnsw_text_3_large",
"algorithm": "alg",
"vectorizer": "azure_openai_text_3_large"
}
],
"vectorizers": [
{
"name": "azure_openai_text_3_large",
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"resourceUri": "https://YOUR-AOAI-RESOURCE.openai.azure.com",
"deploymentId": "text-embedding-3-large",
"modelName": "text-embedding-3-large"
}
}
],
"compressions": []
}
}
A generatív AI-hoz vagy a lekéréssel bővített generációhoz (RAG) jól megtervezett index a következő összetevőket tartalmazza:
Olyan leírás, amellyel egy LLM vagy ügynök meghatározhatja, hogy egy indexet kell-e használni vagy kihagyni.
Ember által olvasható szövegrészletek, amelyeket bemeneti tokenekként megadhat egy LLM számára a válasz megfogalmazásához.
Szemantikai rangsoroló konfiguráció, mert az ügynöki lekérés a 2. szintű (L2) szemantikai rangsorolást használja a legfontosabb adattömbök azonosításához.
(Nem kötelező) Az emberi olvasásra alkalmas szövegrészek vektorokkal egyenértékű változatai kiegészítő vektorkereséshez.
A szövegrészekre bontott szöveg azért fontos, mert az LLM-ek ember által olvasható egyszerű szöveges tartalom tokenizált karakterláncait dolgozzák fel és állítják elő. Ezért olyan mezőket szeretne searchable , amelyek egyszerű szöveges sztringeket tartalmaznak, és a válaszban szerepelnek retrievable . Az Azure AI Keresésben beépített vagy külső féltől származó megoldások használatával darabokra bontott szöveget hozhat létre.
A darabolt tartalmak feltételezése, hogy az eredeti forrásdokumentumok nagy mennyiségű bőbeszédű tartalommal rendelkeznek. Ha a forrástartalmak strukturált adatok, például termékadatbázisok, az indexnek el kell hagynia az adattömbelést, és ehelyett olyan mezőket kell tartalmaznia, amelyek megfeleltethetők az eredeti adatforrásnak, például egy terméknévnek, kategóriának vagy leírásnak. A(z) searchable és retrievable attribúciója a strukturált adatokra is vonatkozik.
searchable a tartalmat a lekérdezések hatókörébe állítja, és retrievable hozzáadja a keresési eredményekhez (az adatok őrzéséhez).
A vektortartalom hasznos lehet, mert hasonlósági keresést ad hozzá az információlekéréshez. Lekérdezéskor, amikor vektormezők találhatók az indexben, az ügynöki lekérési motor a szöveges lekérdezéssel párhuzamosan hajt végre egy vektoros lekérdezést. Mivel a vektoros lekérdezések az egyező szavak helyett hasonló tartalmat keresnek, a vektoros lekérdezések rendkívül releváns eredményt találhatnak, amelyet egy szöveges lekérdezés kihagyhat. A vektorok hozzáadása javíthatja a megalapozó adatok minőségét, de nem feltétlenül szükségesek. Azure AI Keresés rendelkezik egy beépített vektorizációs módszerrel.
A vektormezők csak Azure AI Keresés lekérdezések végrehajtására használhatók. Nincs szükség a vektorra az eredményekben, mert az nem olvasható ember vagy LLM számára. A helyigény minimalizálása érdekében javasoljuk, hogy állítsa be az retrievable és stored értékeket hamisra. További információ: Vektoros tárolás és feldolgozás optimalizálása.
Vektorok használata esetén a vektorkeresési konfigurációban definiált vektorizáló kritikus fontosságú. Meghatározza, hogy a vektormezőt használja-e a lekérdezés végrehajtása során. A vektorosító a szöveg részlekérdezéseket vektorokká kódolja lekérdezéskor a vektorok közötti hasonlóság keresés céljából. A vektorizálónak ugyanazzal a beágyazási modellel kell rendelkeznie, amelyet a vektorok az indexben való létrehozásához használnak.
Alapértelmezés szerint az összes searchable mező szerepel a lekérdezés végrehajtásában, és az összes retrievable mező eredményként lesz visszaadva. A keresési index tudásforrás-definíciójában kiválaszthatja, hogy mely mezőket használja az egyes műveletekhez.
Leírás hozzáadása
Az indexmező description egy olyan felhasználó által definiált sztring, amelyet útmutatásként használhat az LLM-ek és a Model Context Protocol kiszolgálók számára, amikor úgy döntenek, hogy egy adott indexet használnak egy lekérdezéshez. Ez az ember által olvasható szöveg felbecsülhetetlen értékű, ha egy rendszernek több indexhez kell hozzáférnie, és a leírás alapján döntést kell hoznia.
Az index leírása sémafrissítés, és hozzáadhatja anélkül, hogy újra kellene építenie a teljes indexet.
A sztring hossza legfeljebb 4000 karakter lehet.
A tartalomnak emberi olvasásra alkalmasnak kell lennie Unicode-ban. A használati esetnek meg kell határoznia, hogy melyik nyelvet (például az angolt vagy más nyelvet) használja.
Szemantikai konfiguráció hozzáadása
Az indexnek legalább egy szemantikai konfigurációval kell rendelkeznie. A szemantikai konfigurációnak a következőnek kell lennie:
- Névvel ellátott konfiguráció.
- Legalább egy
prioritizedContentFieldsegy olyan sztringmezőre van beállítva, amely egyszerresearchableésretrievable.
A szemantikai konfigurációt kétféleképpen adhatja meg név szerint. Ha az index nevesített konfigurációra van defaultSemanticConfiguration beállítva, a lekérés azt használja. Másik lehetőségként megadhatja a szemantikai konfigurációt a keresési index tudásbázisában.
A prioritizedContentFields szükséges a konfiguráción belül. A cím és a kulcsszavak megadása nem kötelező. Szeletelt tartalom esetében előfordulhat, hogy nem fog rendelkezni vele. Ha azonban entitásfelismerést vagy kulcskifejezés-kinyeréseket ad hozzá, előfordulhat, hogy az egyes adattömbökhöz olyan kulcsszavak tartoznak, amelyek hasznosak lehetnek a keresési forgatókönyvekben, esetleg egy pontozóprofilban.
Az alábbi példa egy szemantikai konfigurációt mutat be, amely ügynöki lekérésre használható.
"semantic":{
"defaultConfiguration":"semantic_config",
"configurations":[
{
"name":"semantic_config",
"flightingOptIn":false,
"prioritizedFields":{
"titleField":{
"fieldName":""
},
"prioritizedContentFields":[
{
"fieldName":"page_chunk"
}
],
"prioritizedKeywordsFields":[
{
"fieldName":"Category"
},
{
"fieldName":"Tags"
},
{
"fieldName":"Location"
}
]
}
}
]
}
Megjegyzés
A válasz tartalmazza a title, terms és content elemeket, amelyek megfeleltethetők a konfiguráció kiemelt mezőinek.
Vektorizáló hozzáadása
Ha az index vektormezőket tartalmaz, a lekérdezési terv ezeket a mezőket is tartalmazza, ha vannak searchable , és rendelkeznek hozzárendeléssel vectorizer .
A vektorizáló olyan beágyazási modellt ad meg, amely a lekérdezési időpontban biztosít szöveg-vektor konverziót. Az index vektortartalmának kódolásához használt beágyazási modellre kell mutatnia. A Azure AI Keresés által támogatott beágyazási modelleket is használhatja. A vektormezők vektorizálóit egy vektorprofillal adhatja meg.
Az index példában a vektormező definíciója a kulcsmező attribútumait mutatja: dimensionsez a modell által generált beágyazások száma, és vectorSearchProfile.
{
"name": "page_chunk_text_3_large", "type": "Collection(Edm.Single)",
"searchable": true, "retrievable": false, "filterable": false, "sortable": false, "facetable": false,
"dimensions": 3072,
"vectorSearchProfile": "hnsw_text_3_large",
"stored": false,
"synonymMaps": []
}
A vektorprofilok vektorizálók, algoritmusok és tömörítési technikák konfigurációi. Minden vektormező csak egy profilt használhat, de az indexben sok lehet, ha egyedi profilokat szeretne minden vektormezőhöz.
A vektorok lekérdezése és a vektorizáló meghívása késést ad az általános kéréshez, de ha hasonlósági keresést szeretne, érdemes lehet kompromisszumot keresni.
Az alábbi példa egy olyan vektorizálót mutat be, amely ügynöki visszakereséshez használható, a vectorSearch konfigurációban látható módon. A vektorizáló definíciójában nincs semmi, amelyet módosítani kell az ügynöki lekérdezéshez.
"vectorSearch": {
"algorithms": [
{
"name": "alg",
"kind": "hnsw",
"hnswParameters": {
"metric": "cosine",
"m": 4,
"efConstruction": 400,
"efSearch": 500
}
}
],
"profiles": [
{
"name": "hnsw_text_3_large",
"algorithm": "alg",
"vectorizer": "azure_openai_text_3_large"
}
],
"vectorizers": [
{
"name": "azure_openai_text_3_large",
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"resourceUri": "https://YOUR-AOAI-RESOURCE.openai.azure.com",
"deploymentId": "text-embedding-3-large",
"modelName": "text-embedding-3-large"
}
}
],
"compressions": []
}
Pontozási profil hozzáadása
A pontozási profilok a relevancia növelésének feltételei. Ezek nem vektoros mezőkre (szövegre és számokra) vannak alkalmazva, és a lekérdezés végrehajtása során kiértékelik őket, bár a pontos viselkedés az index létrehozásához használt API-verziótól függ.
A pontozási profilok nagyobb valószínűséggel adnak értéket a megoldáshoz, ha az index strukturált adatokon alapul. A strukturált adatok több különálló mezőbe vannak indexelve, ami azt jelenti, hogy a pontozási profil olyan feltételekkel rendelkezhet, amelyek egy adott mező tartalmát vagy jellemzőit célják.
Ha az indexet a 2025-05-01-preview vagy újabb verzióval hozza létre, a pontozási profil utoljára fut. Ha az index egy korábbi API-verzióval jön létre, a pontozási profilok kiértékelése a szemantikai újrarankálás előtt történik. A szemantikailag rangsorolt eredmények tényleges sorrendjét az index rankingOrder tulajdonsága határozza meg, amely vagy a (pontozási profil alkalmazva) vagy boostedRerankerScore (nincs pontozási profil) értékre van állítva rerankerScore .
Bármilyen olyan pontozási profilt használhat, amely értelmes az indexhez. Az alábbi példa egy pontozási profilt mutat be, amely növeli az egyezés keresési pontszámát, ha az egyezés egy adott mezőben található. A mezők súlyozása szorzó multiplikátorokkal történik. Ha például egyezés található a „Kategória” mezőben, a növelt pontszám 5-tel megszorzódik.
"scoringProfiles": [
{
"name": "boostSearchTerms",
"text": {
"weights": {
"Location": 2,
"Category": 5
}
}
}
]
Elemző hozzáadása
Az elemzők szövegmezőkre vonatkoznak , és lehetnek nyelvelemzők vagy egyéni elemzők, amelyek szabályozzák az index tokenizálását, például a speciális karakterek vagy a szóköz megőrzését.
Az elemzők egy keresési indexben vannak definiálva, és mezőkhöz vannak rendelve. A mezőgyűjteményi példa egy elemzőhivatkozást tartalmaz a szövegtömbökön. Ebben a példában az alapértelmezett elemző (standard Lucene) helyébe egy Microsoft angol nyelvű nyelvelemző kerül.
{
"name": "page_chunk", "type": "Edm.String",
"searchable": true, "retrievable": true, "filterable": false, "sortable": false, "facetable": false,
"analyzer": "en.microsoft",
"stored": true,
"synonymMaps": []
}
Szinonimatérkép hozzáadása
A szinonimatérképek a névvel ellátott kifejezések szinonimáinak hozzáadásával bővítik a lekérdezéseket. Előfordulhat például, hogy a gyakori kifejezésekhez tudományos vagy orvosi kifejezések tartoznak.
A szinonimatérképek legfelső szintű erőforrásként vannak definiálva egy keresési indexben, és mezőkhöz vannak rendelve. A mezőgyűjteményi példa nem tartalmaz szinonimatérképet, de az alábbi példa bemutatja, hogyan rendelhető hozzá egy szinonimatérkép az ország-/régiónevek változó helyesírásával egy feltételezett "helyek" mezőhöz.
{
"name":"locations",
"type":"Edm.String",
"searchable":true,
"synonymMaps":[ "country-region-synonyms" ]
}
Index hozzáadása egy tudásbázishoz
Ha már létezik önálló indexe, amelyet nem egy tudásbázis hoz létre, hozza létre a következő objektumokat:
- A keresési index tudásbázisa az indexelt tartalom beágyazásához.
- Egy tudásbázis , amely egy vagy több tudásbázist és az ügynöki lekérésre vonatkozó egyéb utasításokat jelöl.