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:
Ez a funkció jelenleg nyilvános előzetes verzióban érhető el. Ez az előzetes verzió szolgáltatásszintű szerződés nélkül érhető el, és éles számítási feladatokhoz nem ajánlott. Előfordulhat, hogy bizonyos funkciók nem támogatottak, vagy korlátozott képességekkel rendelkeznek. További információkért lásd: Microsoft Azure Previews Kiegészítő Felhasználási Feltételek.
Az Azure AI Searchben az ügynöki lekérés egy új párhuzamos lekérdezési architektúra, amely egy csevegés-befejezési modellt használ a lekérdezéstervezéshez, és olyan allekérdezéseket hoz létre, amelyek kibővítik a kereshető és releváns lekérdezések hatókörét.
A lekérdezések belsőleg jönnek létre. A létrehozott lekérdezések bizonyos aspektusait a keresési index határozza meg. Ez a cikk ismerteti, hogy mely indexelemek befolyásolják az egyéni lekérést. A szükséges elemek egyike sem új vagy specifikus az ügynöki lekéréshez, ami azt jelenti, hogy akkor is használhat meglévő indexet, ha az megfelel a cikkben meghatározott feltételeknek, még akkor sem, ha az a korábbi API-verziók használatával lett létrehozva.
Összegezve, az targetIndexes
megadott keresési indexnek az alábbi elemekkel kell rendelkeznie:
- Sztringmezőként vannak megjelölve
searchable
ésretrievable
- Szemantikai konfiguráció,
defaultSemanticConfiguration
- Vektorosító, ha vektoros lekérdezéseket szeretne belefoglalni a folyamatba
Igény szerint az alábbi indexelemek növelik az optimalizálási lehetőségeket:
- a
scoringProfile
és adefaultScoringProfile
használatával, a relevancia növelése érdekében -
synonymMaps
terminológiához vagy szakzsargonhoz -
analyzers
nyelvészeti szabályokhoz vagy mintákhoz (például a szóközök megőrzéséhez vagy speciális karakterekhez)
Indexdefiníció példa
Íme egy példa index, amely ügynöki lekérésre használható. Megfelel a szükséges elemekre vonatkozó feltételeknek.
{
"name": "earth_at_night",
"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_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": []
}
],
"scoringProfiles": [],
"suggesters": [],
"analyzers": [],
"normalizers": [],
"tokenizers": [],
"tokenFilters": [],
"charFilters": [],
"similarity": {
"@odata.type": "#Microsoft.Azure.Search.BM25Similarity"
},
"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",
"apiKey": "<redacted>",
"modelName": "text-embedding-3-large"
}
}
],
"compressions": []
}
}
Főbb pontok:
Ügynöki lekérés esetén a rendszer kétszer használ nagy nyelvi modellt (LLM). Először is egy lekérdezési terv létrehozására szolgál. A lekérdezési terv végrehajtása és a keresési eredmények létrehozása után a rendszer ezeket az eredményeket ismét átadja az LLM-nek, ezúttal földelési adatokként. Az LLM-ek emberileg olvasható egyszerű szövegből készült tokenizált karakterláncokat használnak fel és bocsátanak ki. Ezért olyan mezőkkel kell rendelkeznie searchable
, amelyek egyszerű szöveges sztringeket tartalmaznak, és a válaszban szerepelnek retrievable
.
Ez az index tartalmaz egy vektormezőt, amelyet a lekérdezési időpontban használnak. Nincs szükség a vektorra az eredményekben, mert az nem olvasható ember vagy LLM számára, de searchable
kell lennie. Mivel nincs szükség vektorokra a válaszban, mindkettő retrievable
stored
hamis.
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 lekérdezési időben vektorokká kódolja az albekérdezéseket a vektorok hasonlósági kereséséhez. A vektorizálónak ugyanazzal a beágyazási modellel kell rendelkeznie, amelyet a vektorok az indexben való létrehozásához használnak.
Minden searchable
mező szerepel a lekérdezés végrehajtásában. Nem támogatott egy select
olyan utasítás, amely kifejezetten kimondja, hogy mely mezőket kell lekérdezni.
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:
- Egy
defaultSemanticConfiguration
névvel ellátott konfigurációra állítva. - Legalább
prioritizedContentFields
egy olyan sztringmezőre van állítva, amely egyszerresearchable
ésretrievable
.
A(z) prioritizedContentFields
szükséges a konfiguráción belül. A cím és a kulcsszavak megadása nem kötelező. Szegmentált tartalom esetében előfordulhat, hogy nem rendelkezik 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.
Íme egy példa egy szemantikai konfigurációra, amely agentikus lekérésnél működik:
"semantic":{
"defaultConfiguration":"semantic_config",
"configurations":[
{
"name":"semantic_config",
"flightingOptIn":false,
"prioritizedFields":{
"prioritizedFields":{
"titleField":{
"fieldName":""
},
"prioritizedContentFields":[
{
"fieldName":"page_chunk"
}
],
"prioritizedKeywordsFields":[
{
"fieldName":"Category"
},
{
"fieldName":"Tags"
},
{
"fieldName":"Location"
}
]
}
}
}
]
}
Megjegyzés:
A válasz biztosítja a title
, terms
, és content
elemeket, amelyek megfelelnek a konfigurációban kiemelt mezőknek.
Vektorizáló hozzáadása
Ha vektormezők vannak az indexben, a lekérdezési terv tartalmazza őket, 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. Az Azure AI Search által támogatott beágyazási modelleket használhatja. A vektorosítók vektorprofillal vannak megadva a vektormezőkben.
Idézze fel a vektormező definícióját az index példában. A vektormezők attribútumai közé tartoznak a dimenziók vagy a modell és a profil által létrehozott beágyazások száma.
{
"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.
Íme egy példa egy vektorizálóra, amely autonóm lekérésre szolgál, ahogy az a vectorSearch konfigurációjában jelenik meg. A vektorizáló definícióján nincs semmi, amit módosítani kellene az agentikus lekéré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",
"apiKey": "<redacted>",
"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.
Ha az indexet a 2025-05-01 előzetes 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.
Bármilyen olyan pontozási profilt használhat, amely értelmes az indexhez. Íme egy példa egy találat keresési pontszámának növelésére, ha az egyezés egy adott mezőben található. A mezők súlyozása felerősítő szorzókkal. Ha például egyezést talált a "Kategória" mezőben, a módosított pontszám ötszörözve lesz.
"scoringProfiles": [
{
"name": "boostSearchTerms",
"text": {
"weights": {
"Location": 2,
"Category": 5
}
}
}
]
Elemzők 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 nyelvi elemző 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őkollekció példa nem tartalmaz szinonimatérképet, de ha a szinonimatérképen az országnevek eltérő helyesírása szerepelne, az alábbi példa egy hipotetikus "lokációk" mezőhöz lenne rendelve.
{
"name":"locations",
"type":"Edm.String",
"searchable":true,
"synonymMaps":[ "country-synonyms" ]
}