Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Azure KI-Suche ist über das Azure Portal, REST-APIs und Azure SDKs verfügbar. Es unterstützt auch Foundry IQ, die verwaltete Wissensschicht, die Unternehmensinhalte in wiederverwendbare, berechtigungsfähige Wissensbasen für Agenten im Microsoft Foundry-Portal transformiert.
In diesem Artikel werden die erforderlichen Indexfelder und Konfigurationen für den agentischen Abruf erläutert. Keine dieser Anforderungen ist neu. Sie können einen vorhandenen Index verwenden, der die Kriterien erfüllt, auch wenn er mit einer früheren API-Version erstellt wurde.
Jede indizierte Wissensquelle hängt von einem zugrunde liegenden Index ab. Je nachdem, wie Sie Ihre Pipeline einrichten, kann der Index einer der folgenden Sein:
Vorhandenen: Ein eigenständiger Index, der über eine Suchindex-Wissensquelle verfügbar gemacht wird. Der Index muss die Kriterien in diesem Artikel erfüllen.
Generiert: Ein Index, der automatisch von einer indizierten Wissensquelle erstellt wird. Generierte Indizes erfüllen standardmäßig alle Kriterien.
Kriterien für den agentischen Abruf
In der folgenden Tabelle sind die Indexelemente angeordnet, die sich auf den agentischen Abruf nach Anforderungsebene auswirken.
| Index-Element | Anforderung | Hinweise |
|---|---|---|
searchable und retrievable Zeichenfolgenfelder |
Erforderlich | Wird für die Abfrageausführung und das Ergebnisabruf verwendet. |
| Semantische Konfiguration | Erforderlich | Verwenden Sie defaultSemanticConfiguration oder überschreiben Sie die semantische Konfiguration in der Wissensquelle. |
| Zitatfelder | Empfohlen | Benutzerdefinierte Felder, die Antworten auf Quellinhalte attributieren, z. B. Dokumentname, Seitenzahl oder Block-ID. |
| Vektorfelder und ein Vektorizer | Empfohlen | Aktiviert die Text-zu-Vektor-Konvertierung zur Abfragezeit. |
| Bewertungsprofil | Fakultativ | Erhöht die Relevanz für bestimmte Felder. Legen Sie defaultScoringProfile so fest, dass es automatisch angewendet wird. |
| Analyzer | Fakultativ | Steuert, wie Text tokenisiert wird, z. B. das Behandeln von Leerzeichen oder Sonderzeichen. |
| Synonymzuordnungen | Fakultativ | Erweitert Abfragen mit Terminologie oder Jargon. |
Beispielindexdefinition
Das folgende Beispiel zeigt einen Index, der für den agentischen Abruf funktioniert. Sie erfüllt die Kriterien für erforderliche Elemente und enthält Vektorfelder als bewährte Methode.
{
"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": []
}
}
Ein gut konzipierter Index für generative KI oder abrufgestützte Generierung (RAG) hat die folgenden Komponenten:
Eine Beschreibung, die ein LLM oder Agent verwenden kann, um zu bestimmen, ob ein Index verwendet oder übersprungen werden soll.
Textabschnitte in menschenlesbarer Form, die Sie als Eingabetoken an ein LLM zur Formulierung einer Antwort übergeben können.
Eine Semantikbewertungskonfiguration, da der agentische Abruf die semantische Rangfolge der Ebene 2 (L2) verwendet, um die relevantesten Blöcke zu identifizieren.
(Optional) Vektoräquivalente Versionen der lesbaren Textblöcke für die ergänzende Vektorsuche.
In Abschnitte unterteilter Text ist wichtig, weil LLMs tokenisierte Zeichenfolgen aus menschenlesbarem Klartextinhalt verarbeiten und erzeugen. Aus diesem Grund benötigen Sie Felder, searchable die Klartextzeichenfolgen bereitstellen und retrievable in der Antwort enthalten sind. In Azure KI-Suche können Sie in Blöcke unterteilten Text mit integrierten oder Drittanbieterlösungen erstellen.
Eine integrierte Annahme für Inhaltsblöcke Content ist, dass die Originaldokumente große Mengen an ausführlichen Inhalten enthalten. Wenn ihre Quellinhalte strukturierte Daten sind, z. B. eine Produktdatenbank, sollte Ihr Index keine Blöcke mehr angeben und stattdessen Felder enthalten, die der ursprünglichen Datenquelle zugeordnet sind, z. B. produktname, Kategorie oder Beschreibung. Die Zuordnung von searchable und retrievable gilt auch für strukturierte Daten.
searchable macht den Inhalt für Abfragen verfügbar, und retrievable fügt ihn den Suchergebnissen als Grounding-Daten hinzu.
Vektorinhalte können nützlich sein, da sie eine Ähnlichkeitssuche zum Abrufen von Informationen hinzufügt. Wenn Vektorfelder zum Zeitpunkt der Abfrage im Index vorhanden sind, führt das agentische Abrufmodul parallel zur Textabfrage eine Vektorabfrage aus. Da Vektorabfragen nach ähnlichen Inhalten und nicht nach übereinstimmenden Wörtern suchen, kann eine Vektorabfrage ein hoch relevantes Ergebnis finden, das bei einer Textabfrage möglicherweise fehlschlägt. Das Hinzufügen von Vektoren kann die Qualität Ihrer Grounding-Daten steigern und verbessern, ist jedoch nicht zwingend erforderlich. Azure KI-Suche verfügt über einen built-in-Ansatz für die Vektorisierung.
Vektorfelder werden nur für die Abfrageausführung für Azure KI-Suche verwendet. Sie benötigen den Vektor nicht in den Ergebnissen, da er nicht für Menschen oder LLM lesbar ist. Um die Platzanforderungen zu minimieren, empfehlen wir, retrievable und stored auf false zu setzen. Weitere Informationen finden Sie unter Optimieren der Vektorspeicherung und -verarbeitung.
Wenn Sie Vektoren verwenden, ist es wichtig, dass ein Vektorisierer in der Vektorsuchkonfiguration definiert ist. Es bestimmt, ob das Vektorfeld während der Abfrageausführung verwendet wird. Der Vektorisierer kodiert Unterabfragen von Zeichenfolgen zu Vektoren zur Abfragezeit, um eine Ähnlichkeitssuche über die Vektoren durchzuführen. Der Vektorizer muss dasselbe Einbettungsmodell sein, das zum Erstellen der Vektoren im Index verwendet wird.
Standardmäßig sind alle searchable Felder in der Abfrageausführung enthalten, und alle retrievable Felder werden in Ergebnissen zurückgegeben. Sie können auswählen, welche Felder für jede Aktion in der Suchindex-Wissensquellendefinition verwendet werden sollen.
Hinzufügen einer Beschreibung
Ein Indexfeld description ist eine benutzerdefinierte Zeichenfolge, die Sie verwenden können, um Anleitungen für LLMs und MCP-Server (Model Context Protocol) bereitzustellen, wenn Sie sich für die Verwendung eines bestimmten Indexes für eine Abfrage entscheiden. Dieser lesbare Text ist unschätzbar, wenn ein System auf mehrere Indizes zugreifen muss und basierend auf der Beschreibung eine Entscheidung treffen muss.
Eine Indexbeschreibung ist eine Schemaaktualisierung, und Sie können sie hinzufügen, ohne den gesamten Index neu erstellen zu müssen.
Die Zeichenfolgenlänge beträgt maximal 4.000 Zeichen.
Inhalte müssen in Unicode lesbar sein. Ihr Anwendungsfall sollte bestimmen, welche Sprache verwendet werden soll (z. B. Englisch oder eine andere Sprache).
Hinzufügen einer semantischen Konfiguration
Der Index muss mindestens eine semantische Konfiguration aufweisen. Die semantische Konfiguration muss folgendes aufweisen:
- Eine benannte Konfiguration.
- Ein
prioritizedContentFields-Satz, der mindestens ein Zeichenkettenfeld enthält, das sowohlsearchableals auchretrievableist.
Es gibt zwei Möglichkeiten, eine semantische Konfiguration anhand des Namens anzugeben. Wenn der Index auf eine benannte Konfiguration festgelegt wurde defaultSemanticConfiguration , verwendet der Abruf sie. Alternativ können Sie die semantische Konfiguration in der Wissensquelle für den Suchindex angeben.
Innerhalb der Konfiguration ist prioritizedContentFields erforderlich. Titel und Schlüsselwörter sind optional. Bei aufgeteilten Inhalten haben Sie möglicherweise keins von beidem. Wenn Sie jedoch entitätserkennung oder Schlüsselausdruckextraktion hinzufügen, haben Sie möglicherweise einige Schlüsselwörter mit jedem Abschnitt verknüpft, die in Suchszenarien nützlich sein können, z. B. in einem Bewertungsprofil.
Das folgende Beispiel zeigt eine semantische Konfiguration, die für den agentischen Abruf funktioniert.
"semantic":{
"defaultConfiguration":"semantic_config",
"configurations":[
{
"name":"semantic_config",
"flightingOptIn":false,
"prioritizedFields":{
"titleField":{
"fieldName":""
},
"prioritizedContentFields":[
{
"fieldName":"page_chunk"
}
],
"prioritizedKeywordsFields":[
{
"fieldName":"Category"
},
{
"fieldName":"Tags"
},
{
"fieldName":"Location"
}
]
}
}
]
}
Hinweis
Die Antwort enthält title, termsund content, die den priorisierten Feldern in dieser Konfiguration zugeordnet sind.
Hinzufügen eines Vektorizers
Wenn Ihr Index Vektorfelder enthält, enthält der Abfrageplan diese Felder, wenn sie vorhanden sind searchable und über eine vectorizer Zuordnung verfügen.
Ein Vektorizer gibt ein Einbettungsmodell an, das Text-zu-Vektor-Konvertierungen zur Abfragezeit bereitstellt. Sie muss auf dasselbe Einbettungsmodell zeigen, das zum Codieren des Vektorinhalts in Ihrem Index verwendet wird. Sie können jedes von Azure KI-Suche unterstützte Einbettungsmodell verwenden. Sie geben Vektorisierer für Vektorfelder mithilfe eines Vektorprofils an.
Die Vektorfelddefinition im Indexbeispiel zeigt die Schlüsselfeldattribute: dimensions, die Anzahl der vom Modell generierten Einbettungen und 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": []
}
Vektorprofile sind Konfigurationen von Vektorisierern, Algorithmen und Komprimierungstechniken. Jedes Vektorfeld kann nur ein Profil verwenden, ihr Index kann jedoch viele haben, falls Sie eindeutige Profile für jedes Vektorfeld wünschen.
Das Abfragen von Vektoren und das Aufrufen eines Vektorizers fügt der Gesamtanforderung Latenz hinzu, aber wenn Sie eine Ähnlichkeitssuche wünschen, lohnt es sich möglicherweise den Kompromiss.
Das folgende Beispiel zeigt einen Vektorisierer, der für agentenbasierte Abrufszenarien verwendet wird, wie er in einer vectorSearch-Konfiguration dargestellt ist. Es gibt nichts in der Vektorizerdefinition, die geändert werden muss, um mit agentischem Abruf zu arbeiten.
"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": []
}
Hinzufügen eines Bewertungsprofils
Bewertungsprofile sind Kriterien, um die Relevanz zu erhöhen. Sie werden auf Nichtvektorfelder (Text und Zahlen) angewendet und werden während der Abfrageausführung ausgewertet, obwohl das genaue Verhalten von der API-Version abhängt, die zum Erstellen des Indexes verwendet wird.
Ein Bewertungsprofil kann Ihrer Lösung mit höherer Wahrscheinlichkeit einen Mehrwert bieten, wenn der Index auf strukturierten Daten basiert. Strukturierte Daten werden in mehrere diskrete Felder indiziert, was bedeutet, dass Ihr Bewertungsprofil Kriterien aufweisen kann, die auf den Inhalt oder die Merkmale eines bestimmten Felds abzielen.
Wenn Sie den Index mit 2025-05-01-preview oder höher erstellen, wird das Bewertungsprofil zuletzt ausgeführt. Wenn der Index mit einer früheren API-Version erstellt wird, werden Bewertungsprofile vor der semantischen Umrankung ausgewertet. Die tatsächliche Reihenfolge der semantischen Ergebnisse wird durch die rankingOrder-Eigenschaft im Index bestimmt, die entweder auf boostedRerankerScore (ein Bewertungsprofil angewendet wurde) oder rerankerScore (kein Bewertungsprofil) festgelegt ist.
Sie können jedes Bewertungsprofil verwenden, das für Ihren Index sinnvoll ist. Das folgende Beispiel zeigt ein Bewertungsprofil, das den Suchbewertungswert eines Treffers erhöht, wenn der Treffer in einem bestimmten Feld gefunden wird. Felder werden durch Erhöhen von Multiplikatoren gewichtet. Wenn beispielsweise eine Übereinstimmung im Feld "Kategorie" gefunden wird, wird der erhöhte Wert mit 5 multipliziert.
"scoringProfiles": [
{
"name": "boostSearchTerms",
"text": {
"weights": {
"Location": 2,
"Category": 5
}
}
}
]
Hinzufügen eines Analyzers
Analysatoren gelten für Textfelder und können Sprachanalysatoren oder benutzerdefinierte Analysegeräte sein, die die Tokenisierung im Index steuern, z. B. das Beibehalten von Sonderzeichen oder Leerzeichen.
Analysatoren werden in einem Suchindex definiert und Feldern zugewiesen. Das Beispiel der Felderkollektion enthält eine Analysatorreferenz für die Textblöcke. In diesem Beispiel wird der Standardanalysator (Standard Lucene) durch einen Microsoft Sprachanalysator für Englisch ersetzt.
{
"name": "page_chunk", "type": "Edm.String",
"searchable": true, "retrievable": true, "filterable": false, "sortable": false, "facetable": false,
"analyzer": "en.microsoft",
"stored": true,
"synonymMaps": []
}
Hinzufügen eines Synonymenverzeichnisses
Synonymzuordnungen erweitern Abfragen, indem Synonyme für benannte Ausdrücke hinzugefügt werden. Beispielsweise könnten Sie wissenschaftliche oder medizinische Begriffe für allgemeine Begriffe haben.
Synonymkarten werden als Ressource auf oberster Ebene in einem Suchindex definiert und Feldern zugewiesen. Das Beispiel für die Feldauflistung enthält keine Synonymzuordnung, aber im folgenden Beispiel wird gezeigt, wie eine Synonymzuordnung mit variantenweisen Schreibweisen von Land-/Regionsnamen einem hypothetischen "Locations"-Feld zugewiesen werden kann.
{
"name":"locations",
"type":"Edm.String",
"searchable":true,
"synonymMaps":[ "country-region-synonyms" ]
}
Fügen Sie Ihren Index zu einer Wissensquelle hinzu
Wenn Sie über einen eigenständigen Index verfügen, der bereits vorhanden ist und von einer Wissensquelle nicht generiert wird, erstellen Sie die folgenden Objekte:
- Eine Suchindex-Wissensquelle zur Kapselung Ihrer indizierten Inhalte.
- Eine Wissensbasis , die eine oder mehrere Wissensquellen und andere Anweisungen für den agentischen Abruf darstellt.