Erstellen einer Wissensbasis in Azure KI-Suche

Hinweis

Dieses Feature befindet sich derzeit in der öffentlichen Vorschau. Diese Vorschau wird ohne Vereinbarung auf Serviceebene bereitgestellt und wird für Produktionsworkloads nicht empfohlen. Bestimmte Features werden möglicherweise nicht unterstützt oder weisen eingeschränkte Funktionen auf. Weitere Informationen finden Sie unter Supplementale Nutzungsbedingungen für Microsoft Azure Previews.

In Azure KI-Suche ist eine knowledge base ein Objekt der obersten Ebene, das agentic retrieval koordiniert. Es definiert, welche Wissensquellen abzufragen sind, und das Standardverhalten für Abrufvorgänge. Zur Abfragezeit zielt die Abrufmethode auf die Wissensbasis ab, um die konfigurierte Abrufpipeline auszuführen.

Sie können eine Wissensbasis in einem Foundry IQ Workload im Microsoft Foundry(new)-Portal erstellen. Außerdem benötigen Sie eine Wissensbasis in allen agentischen Lösungen, die Sie mithilfe der Azure KI-Suche-APIs erstellen.

Eine Wissensbasis gibt Folgendes an:

  • Mindestens eine Wissensquelle, die auf durchsuchbare Inhalte verweist.
  • Ein optionales LLM, das Gründe für die Abfrageplanung und Antwortformulierung bereitstellt.
  • Ein Aufwand zur Abrufverarbeitung, der bestimmt, ob ein LLM eingesetzt wird, und der Kosten, Latenz und Qualität verwaltet.
  • Benutzerdefinierte Eigenschaften, die Routing, Quellauswahl, Ausgabeformat und Objektverschlüsselung steuern.

Nachdem Sie eine Wissensdatenbank erstellt haben, können Sie die Eigenschaften jederzeit aktualisieren. Wenn die Wissensbasis verwendet wird, werden Aktualisierungen auf den nächsten Abruf wirksam.

Wichtig

2025-11-01-preview benennt den "Wissensagent" von 2025-08-01-preview in "Knowledge Base" um. Dies ist eine einschneidende Änderung. Es wird empfohlen , vorhandenen Code so schnell wie möglich zu den neuen APIs zu migrieren.

Verwendungsunterstützung

Azure Portal Microsoft Foundry Portal .NET SDK Python SDK Java SDK JavaScript SDK REST-API
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Voraussetzungen

Unterstützte Modelle

Verwenden Sie eine der folgenden LLMs aus Azure OpenAI in Foundry Models. Anweisungen zur Bereitstellung finden Sie unter Deploy Microsoft Foundry Models im Foundry-Portal.

  • gpt-4o
  • gpt-4o-mini
  • gpt-4.1
  • gpt-4.1-nano
  • gpt-4.1-mini
  • gpt-5
  • gpt-5-nano
  • gpt-5-mini

Konfigurieren des Zugriffs

Azure KI-Suche benötigt Zugriff auf die LLM von Azure OpenAI. Wir empfehlen Microsoft Entra ID für die Authentifizierung und den rollenbasierten Zugriff für die Autorisierung. Um Rollen zuzuweisen, müssen Sie ein Eigentümer oder Benutzerzugriffs-Administrator sein. Wenn Sie keine Rollen verwenden können, verwenden Sie stattdessen die schlüsselbasierte Authentifizierung.

  1. Configure Azure KI-Suche für die Verwendung einer verwalteten Identität.

  2. Weisen Sie auf Ihrem Modellanbieter, z. B. Foundry Models, Cognitive Services User der verwalteten Identität Ihres Suchdienstes zu. Wenn Sie lokal testen, weisen Sie Ihrem Benutzerkonto dieselbe Rolle zu.

  3. Führen Sie für lokale Tests die Schritte im Schnellstart: Verbindung ohne Schlüssel herstellen aus, um sich bei einem bestimmten Abonnement und Mandanten anzumelden. Verwenden Sie DefaultAzureCredential statt AzureKeyCredential in jeder Anforderung, die dem folgenden Beispiel ähnelt:

    using Azure.Search.Documents.Indexes;
    using Azure.Identity;

    var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());
    ```

  1. Configure Azure KI-Suche für die Verwendung einer verwalteten Identität.

  2. Weisen Sie bei Ihrem Modellanbieter, z. B. Foundry Models, den Cognitive Services-Benutzer der verwalteten Identität Ihres Suchdienstes zu. Wenn Sie lokal testen, weisen Sie Ihrem Benutzerkonto dieselbe Rolle zu.

  3. Führen Sie für lokale Tests die Schritte in der Anleitung Schnellstart: Verbindung ohne Schlüssel aus, um sich bei einem bestimmten Abonnement und Mandanten anzumelden. Verwenden Sie DefaultAzureCredential statt AzureKeyCredential in jeder Anforderung, die dem folgenden Beispiel ähnelt:

    # Authenticate using roles
    from azure.identity import DefaultAzureCredential
    index_client = SearchIndexClient(endpoint = "search_url", credential = DefaultAzureCredential())
    ```

  1. Configure Azure KI-Suche für die Verwendung einer verwalteten Identität.

  2. Weisen Sie bei Ihrem Modellanbieter, wie z. B. Foundry Models, den Cognitive Services User der verwalteten Identität Ihres Suchdiensts zu. Wenn Sie lokal testen, weisen Sie Ihrem Benutzerkonto dieselbe Rolle zu.

  3. Führen Sie für lokale Tests die Schritte in der Schnellstartanleitung aus: Verbinden ohne Schlüssel , um ein persönliches Zugriffstoken für ein bestimmtes Abonnement und einen bestimmten Mandanten abzurufen. Geben Sie Ihr Zugriffstoken in jeder Anforderung an, die dem folgenden Beispiel ähnelt:

    # List indexes using roles
    GET https://{{search-url}}/indexes?api-version=2025-11-01-preview
    Content-Type: application/json
    Authorization: Bearer {{access-token}}
    ```

Wichtig

Codeausschnitte in diesem Artikel verwenden API-Schlüssel. Wenn Sie die rollenbasierte Authentifizierung verwenden, aktualisieren Sie jede Anforderung entsprechend. In einer Anforderung, die beide Ansätze angibt, hat der API-Schlüssel Vorrang.

Prüfen, ob vorhandene Wissensdatenbanken bestehen

Eine Wissensbasis ist ein wiederverwendbares Objekt auf oberster Ebene. Das Wissen über vorhandene Wissensbasen ist hilfreich, um neue Objekte wiederzuverwenden oder zu benennen. Alle 2025-08-01-Vorschau-Wissensagenten werden in der Wissensdatenbankensammlung zurückgegeben.

Führen Sie den folgenden Code aus, um vorhandene Wissensdatenbanken anhand des Namens auflisten.

// List knowledge bases by name
  using Azure.Search.Documents.Indexes;

  var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);
  var knowledgeBases = indexClient.GetKnowledgeBasesAsync();

  Console.WriteLine("Knowledge Bases:");

  await foreach (var kb in knowledgeBases)
  {
      Console.WriteLine($"  - {kb.Name}");
  }

Führen Sie den folgenden Code aus, um vorhandene Wissensdatenbanken anhand des Namens auflisten.

# List knowledge bases by name
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient

index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))

for kb in index_client.list_knowledge_bases():
    print(f"  - {kb.name}")

Verwenden Sie Knowledge Basen – Liste (REST-API), um Wissensdatenbanken nach Name und Typ auflisten.

# List knowledge bases
GET {{search-url}}/knowledgebases?api-version=2025-11-01-preview&$select=name
Content-Type: application/json
api-key: {{search-api-key}}

Sie können auch eine einzelne Wissensdatenbank anhand des Namens zurückgeben, um die JSON-Definition zu überprüfen.

using Azure.Search.Documents.Indexes;
using System.Text.Json;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);

// Specify the knowledge base name to retrieve
string kbNameToGet = "earth-knowledge-base";

// Get a specific knowledge base definition
var knowledgeBaseResponse = await indexClient.GetKnowledgeBaseAsync(kbNameToGet);
var kb = knowledgeBaseResponse.Value;

// Serialize to JSON for display
string json = JsonSerializer.Serialize(kb, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(json);
# Get a knowledge base definition
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
import json

index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))

kb = index_client.get_knowledge_base("knowledge_base_name")
print(json.dumps(kb.as_dict(), indent = 2))
# Get knowledge base
GET {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version=2025-11-01-preview
Content-Type: application/json
api-key: {{search-api-key}}

Der folgende JSON-Code ist eine Beispielantwort für eine Knowledge Base.

{
  "name": "my-kb",
  "description": "A sample knowledge base.",
  "retrievalInstructions": null,
  "answerInstructions": null,
  "outputMode": null,
  "knowledgeSources": [
    {
      "name": "my-blob-ks"
    }
  ],
  "models": [],
  "encryptionKey": null,
  "retrievalReasoningEffort": {
    "kind": "low"
  }
}

Erstellen einer Wissensbasis

Eine Wissensdatenbank steuert die agentische Abrufpipeline. Im Anwendungscode rufen andere Agenten oder Chatbots sie auf.

Eine Knowledge Base verbindet Wissensquellen (durchsuchbare Inhalte) mit einer LLM-Bereitstellung von Azure OpenAI. Eigenschaften auf dem LLM richten die Verbindung ein, während Eigenschaften in der Wissensquelle Standardwerte einrichten, die die Abfrageausführung und die Antwort informieren.

Führen Sie den folgenden Code aus, um eine Wissensbasis zu erstellen.

// Create a knowledge base
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.KnowledgeBases.Models;
using Azure;

var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new AzureKeyCredential(apiKey));

var aoaiParams = new AzureOpenAIVectorizerParameters
{
    ResourceUri = new Uri(aoaiEndpoint),
    DeploymentName = aoaiGptDeployment,
    ModelName = aoaiGptModel
};

var knowledgeBase = new KnowledgeBase(
    name: "my-kb",
    knowledgeSources: new KnowledgeSourceReference[] 
    { 
        new KnowledgeSourceReference("hotels-ks"),
        new KnowledgeSourceReference("earth-at-night-ks")
    }
)
{
    Description = "This knowledge base handles questions directed at two unrelated sample indexes.",
    RetrievalInstructions = "Use the hotels knowledge source for queries about where to stay, otherwise use the earth at night knowledge source.",
    AnswerInstructions = "Provide a two sentence concise and informative answer based on the retrieved documents.",
    OutputMode = KnowledgeRetrievalOutputMode.AnswerSynthesis,
    Models = { new KnowledgeBaseAzureOpenAIModel(azureOpenAIParameters: aoaiParams) },
    RetrievalReasoningEffort = new KnowledgeRetrievalLowReasoningEffort()
};

await indexClient.CreateOrUpdateKnowledgeBaseAsync(knowledgeBase);
Console.WriteLine($"Knowledge base '{knowledgeBase.Name}' created or updated successfully.");

Führen Sie den folgenden Code aus, um eine Wissensbasis zu erstellen.

# Create a knowledge base
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import KnowledgeBase, KnowledgeBaseAzureOpenAIModel, KnowledgeSourceReference, AzureOpenAIVectorizerParameters, KnowledgeRetrievalOutputMode, KnowledgeRetrievalLowReasoningEffort

index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))

aoai_params = AzureOpenAIVectorizerParameters(
    resource_url = "aoai_endpoint",
    api_key="aoai_api_key",
    deployment_name = "aoai_gpt_deployment",
    model_name = "aoai_gpt_model",
)

knowledge_base = KnowledgeBase(
    name = "my-kb",
    description = "This knowledge base handles questions directed at two unrelated sample indexes.",
    retrieval_instructions = "Use the hotels knowledge source for queries about where to stay, otherwise use the earth at night knowledge source.",
    answer_instructions = "Provide a two sentence concise and informative answer based on the retrieved documents.",
    output_mode = KnowledgeRetrievalOutputMode.ANSWER_SYNTHESIS,
    knowledge_sources = [
        KnowledgeSourceReference(name = "hotels-ks"),
        KnowledgeSourceReference(name = "earth-at-night-ks"),
    ],
    models = [KnowledgeBaseAzureOpenAIModel(azure_open_ai_parameters = aoai_params)],
    encryption_key = None,
    retrieval_reasoning_effort = KnowledgeRetrievalLowReasoningEffort(),
)

index_client.create_or_update_knowledge_base(knowledge_base)
print(f"Knowledge base '{knowledge_base.name}' created or updated successfully.")

Verwenden Sie Knowledge Basen – Erstellen oder Aktualisieren (REST-API), um eine Wissensbasis zu erstellen.

# Create a knowledge base
PUT {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version=2025-11-01-preview
Content-Type: application/json
api-key: {{search-api-key}}

{
    "name" : "my-kb",
    "description": "This knowledge base handles questions directed at two unrelated sample indexes.",
    "retrievalInstructions": "Use the hotels knowledge source for queries about where to stay, otherwise use the earth at night knowledge source.",
    "answerInstructions": null,
    "outputMode": "answerSynthesis",
    "knowledgeSources": [
        {
            "name": "hotels-ks"
        },
        {
            "name": "earth-at-night-ks"
        }
    ],
    "models" : [ 
        {
            "kind": "azureOpenAI",
            "azureOpenAIParameters": {
                "resourceUri": "{{model-provider-url}}",
                "apiKey": "{{model-api-key}}",
                "deploymentId": "gpt-4.1-mini",
                "modelName": "gpt-4.1-mini"
            }
        }
    ],
    "encryptionKey": null,
    "retrievalReasoningEffort": {
        "kind": "low"
    }
}

Knowledge Base-Eigenschaften

Übergeben Sie die folgenden Eigenschaften, um eine Wissensbasis zu erstellen.

Namen Beschreibung Typ Erforderlich
Name Der Name der Wissensbasis. Sie muss innerhalb der Wissensdatenbanksammlung eindeutig sein und den naming-Richtlinien für Objekte in Azure KI-Suche entsprechen. Schnur Ja
KnowledgeSources Mindestens eine unterstützte Wissensquelle. Array Ja
Description Eine Beschreibung der Wissensbasis. Der LLM verwendet die Beschreibung, um die Abfrageplanung zu unterstützen. Schnur Nein
RetrievalInstructions Ein Prompt, der das LLM veranlasst, zu ermitteln, ob eine Wissensquelle im Umfang einer Abfrage enthalten sein soll. Schließen Sie diese Eingabeaufforderung ein, wenn Sie über mehrere Wissensquellen verfügen. Dieses Feld beeinflusst sowohl die Auswahl der Wissensquelle als auch die Abfrageformulierung. Anweisungen können z. B. Informationen anfügen oder eine Wissensquelle priorisieren. Anweisungen werden direkt an das LLM übergeben, was bedeutet, dass es möglich ist, Anweisungen zur Unterbrechung der Abfrageplanung bereitzustellen, z. B. Anweisungen, die dazu führen, eine wichtige Wissensquelle zu umgehen. Schnur Nein
AnswerInstructions Benutzerdefinierte Anweisungen zum Erstellen von synthetisierten Antworten. Der Standardwert ist NULL. Weitere Informationen finden Sie unter Verwenden der Antwortsynthese für zitatgestützte Antworten. Schnur Nein
OutputMode Gültige Werte sind AnswerSynthesis für eine LLM-formulierte Antwort oder ExtractedData für vollständige Suchergebnisse, die Sie als nachgeschalteten Schritt an eine LLM übergeben können. Schnur Nein
Models Eine Verbindung zu einem unterstützten LLM, die für die Antwortformulierung oder Abfrageplanung verwendet wird. In dieser Vorschau kann Models nur ein Modell enthalten, und der Modellanbieter muss Azure OpenAI sein. Abrufen von Modellinformationen aus dem Foundry-Portal oder einer Befehlszeilenanforderung. Stellen Sie die Parameter mithilfe der KnowledgeBaseAzureOpenAIModel-Klasse bereit. Sie können die rollenbasierte Zugriffssteuerung anstelle von API-Schlüsseln für die Azure KI-Suche Verbindung mit dem Modell verwenden. Objekt Nein
RetrievalReasoningEffort Bestimmt den Grad der LLM-bezogenen Abfrageverarbeitung. Gültige Werte sind minimal, low (Standard) und medium. Weitere Informationen finden Sie unter Festlegen des Abrufüberlegungsaufwands. Objekt Nein
Namen Beschreibung Typ Erforderlich
name Der Name der Wissensbasis. Sie muss innerhalb der Wissensdatenbanksammlung eindeutig sein und den naming-Richtlinien für Objekte in Azure KI-Suche entsprechen. Schnur Ja
description Eine Beschreibung der Wissensbasis. Der LLM verwendet die Beschreibung, um die Abfrageplanung zu unterstützen. Schnur Nein
retrieval_instructions Ein Prompt, der das LLM veranlasst, zu ermitteln, ob eine Wissensquelle im Umfang einer Abfrage enthalten sein soll. Schließen Sie diese Eingabeaufforderung ein, wenn Sie über mehrere Wissensquellen verfügen. Dieses Feld beeinflusst sowohl die Auswahl der Wissensquelle als auch die Abfrageformulierung. Anweisungen können z. B. Informationen anfügen oder eine Wissensquelle priorisieren. Übergeben Sie Anweisungen direkt an das LLM. Es ist möglich, Anweisungen zur Unterbrechung der Abfrageplanung bereitzustellen, z. B. Anweisungen, die dazu führen, eine wichtige Wissensquelle zu umgehen. Schnur Nein
answer_instructions Benutzerdefinierte Anweisungen zum Erstellen von synthetisierten Antworten. Der Standardwert ist NULL. Weitere Informationen finden Sie unter Verwenden der Antwortsynthese für zitatgestützte Antworten. Schnur Nein
output_mode Gültige Werte sind answer_synthesis für eine LLM-formulierte Antwort oder extracted_data für vollständige Suchergebnisse, die Sie als nachgeschalteten Schritt an eine LLM übergeben können. Schnur Nein
knowledge_sources Mindestens eine unterstützte Wissensquelle. Array Ja
models Eine Verbindung zu einem unterstützten LLM, die für die Antwortformulierung oder Abfrageplanung verwendet wird. In dieser Vorschau kann models nur ein Modell enthalten, und der Modellanbieter muss Azure OpenAI sein. Abrufen von Modellinformationen aus dem Foundry-Portal oder einer Befehlszeilenanforderung. Sie können die rollenbasierte Zugriffssteuerung anstelle von API-Schlüsseln für die Azure KI-Suche Verbindung mit dem Modell verwenden. Objekt Nein
encryption_key Ein vom Kunden verwalteter Schlüssel zum Verschlüsseln vertraulicher Informationen sowohl in der Wissensdatenbank als auch in den generierten Objekten. Objekt Nein
retrieval_reasoning_effort Bestimmt die Ebene der LLM-bezogenen Abfrageverarbeitung. Gültige Werte sind minimal, low (Standard) und medium. Weitere Informationen finden Sie unter Festlegen des Abrufbegründungsaufwands. Objekt Nein
Namen Beschreibung Typ Erforderlich
name Der Name der Wissensbasis. Sie muss innerhalb der Wissensdatenbanksammlung eindeutig sein und den naming-Richtlinien für Objekte in Azure KI-Suche entsprechen. Schnur Ja
description Eine Beschreibung der Wissensbasis. Der LLM verwendet die Beschreibung, um die Abfrageplanung zu unterstützen. Schnur Nein
retrievalInstructions Eine Aufforderung für das LLM, um zu ermitteln, ob eine Wissensquelle für eine Abfrage relevant ist. Schließen Sie diese Eingabeaufforderung ein, wenn Sie über mehrere Wissensquellen verfügen. Dieses Feld beeinflusst sowohl die Auswahl der Wissensquelle als auch die Abfrageformulierung. Anweisungen können z. B. Informationen anfügen oder eine Wissensquelle priorisieren. Sie übergeben Anweisungen direkt an das LLM, was bedeutet, dass es möglich ist, Anweisungen zur Unterbrechung der Abfrageplanung bereitzustellen, z. B. Anweisungen, die dazu führen, eine wichtige Wissensquelle zu umgehen. Schnur Nein
answerInstructions Benutzerdefinierte Anweisungen zum Erstellen von synthetisierten Antworten. Der Standardwert ist NULL. Weitere Informationen finden Sie unter Verwenden der Antwortsynthese für zitatgestützte Antworten. Schnur Nein
outputMode Gültige Werte sind answerSynthesis für eine LLM-formulierte Antwort oder extractedData für vollständige Suchergebnisse, die Sie als nachgeschalteten Schritt an eine LLM übergeben können. Schnur Nein
knowledgeSources Mindestens eine unterstützte Wissensquelle. Array Ja
models Eine Verbindung zu einem unterstützten LLM, die für die Antwortformulierung oder Abfrageplanung verwendet wird. In dieser Vorschau kann models nur ein Modell enthalten, und der Modellanbieter muss Azure OpenAI sein. Abrufen von Modellinformationen aus dem Foundry-Portal oder einer Befehlszeilenanforderung. Sie können die rollenbasierte Zugriffssteuerung anstelle von API-Schlüsseln für die Azure KI-Suche Verbindung mit dem Modell verwenden. Objekt Nein
encryptionKey Ein vom Kunden verwalteter Schlüssel zum Verschlüsseln vertraulicher Informationen sowohl in der Wissensdatenbank als auch in den generierten Objekten. Objekt Nein
retrievalReasoningEffort.kind Bestimmt den Grad der LLM-bezogenen Abfrageverarbeitung. Gültige Werte sind minimal, low (Standard) und medium. Weitere Informationen finden Sie unter Festlegen des Abrufbegründungsaufwands. Objekt Nein

Abfragen einer Wissensbasis

Nachdem Sie eine Wissensdatenbank erstellt haben, verwenden Sie die Abrufaktion , um sie abzufragen und die LLM-Verbindung zu überprüfen.

Löschen einer Wissensbasis

Wenn Sie die Knowledge Base nicht mehr benötigen oder sie in Ihrem Suchdienst neu erstellen müssen, führen Sie den folgenden Code aus, um das Objekt zu löschen.

using Azure.Search.Documents.Indexes;
var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);

await indexClient.DeleteKnowledgeBaseAsync(knowledgeBaseName);
System.Console.WriteLine($"Knowledge base '{knowledgeBaseName}' deleted successfully.");
# Delete a knowledge base
from azure.core.credentials import AzureKeyCredential 
from azure.search.documents.indexes import SearchIndexClient

index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
index_client.delete_knowledge_base("knowledge_base_name")
print(f"Knowledge base deleted successfully.")
# Delete a knowledge base
DELETE {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version=2025-11-01-preview
api-key: {{search-api-key}}