Tworzenie bazy wiedzy w Wyszukiwanie AI platformy Azure

Uwaga

Wyszukiwanie AI platformy Azure jest dostępna za pośrednictwem portalu Azure, interfejsów API REST i Azure SDKs. Jest także podstawą Foundry IQ — zarządzanej warstwy wiedzy, która przekształca treści przedsiębiorstwa w bazy wiedzy wielokrotnego użytku z uwzględnieniem uprawnień dla agentów w portalu Microsoft Foundry.

Ważne

Funkcje, możliwości lub właściwości oznaczone (wersja zapoznawcza) nie są objęte umową dotyczącą poziomu usług, nie są zalecane w przypadku obciążeń produkcyjnych i mogą ulec zmianie lub ograniczeniu, zanim staną się one ogólnie dostępne. Warunki Wyszukiwanie AI platformy Azure wersji zapoznawczej mają zastosowanie do wszystkich funkcji w wersji zapoznawczej, niezależnie od tego, czy jest ona autonomiczna, czy częścią ogólnie dostępnej funkcji.

W Wyszukiwanie AI platformy Azure baza wiedzy jest obiektem najwyższego poziomu, który organizuje agentowy proces pobierania. Definiuje źródła wiedzy do wykonywania zapytań i domyślne zachowanie operacji pobierania. W momencie wykonywania zapytania metoda retrieve kieruje się do bazy wiedzy, aby uruchomić skonfigurowany potok pobierania.

Baza wiedzy określa:

  • Co najmniej jedno źródło wiedzy wskazujące zawartość z możliwością wyszukiwania.

  • Opcjonalna funkcja LLM do planowania zapytań, syntezy odpowiedzi lub podsumowania zawartości internetowej. Obsługiwane zadania różnią się w zależności od wersji interfejsu API i typu źródła wiedzy.

  • Właściwości niestandardowe kontrolujące routing, wybór źródła i szyfrowanie obiektów.

Wsparcie użytkowania

portal Azure portal Microsoft Foundry zestaw SDK .NET SDK języka Python SDK Java JavaScript SDK API REST
✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️

Wymagania wstępne

  • Wyszukiwanie AI platformy Azure w dowolnym regionie, który zapewnia agentyczne wyszukiwanie. Jeśli używasz tożsamości zarządzanej na potrzeby dostępu opartego na rolach do wdrożonych modeli, usługa wyszukiwania musi znajdować się w warstwie Podstawowa lub wyższej.

  • Co najmniej jedno źródło wiedzy. Użyj wersji interfejsu 2026-08-01-preview API, aby uzyskać dostęp do źródeł wiedzy w wersji zapoznawczej lub użyć programu LLM ze źródłami wiedzy spoza sieci Web. Użyj wersji interfejsu API 2026-04-01 dla ogólnie dostępnych źródeł wiedzy i minimalnego wyszukiwania ekstrakcyjnego.

  • (Warunkowe) Azure OpenAI z wdrożeniem obsługującym LLM. Usługa LLM jest wymagana, jeśli baza wiedzy zawiera internetowe źródło wiedzy. W przypadku innych źródeł wiedzy usługa LLM jest opcjonalna w wersji interfejsu 2026-08-01-preview API i nieobsługiwana w wersji interfejsu 2026-04-01 API.

  • Uprawnienie do tworzenia baz wiedzy. Skonfiguruj uwierzytelnianie bez klucza przy użyciu roli Współautor usługi wyszukiwania przypisanej do konta użytkownika (zalecane) lub użyj klucza interfejsu API administratora.

  • Jeśli baza wiedzy określa LLM, usługa wyszukiwania musi mieć tożsamość zarządzaną z uprawnieniami użytkownika usług Cognitive Services w zasobie Microsoft Foundry.

  • Wymagany pakiet Azure.Search.Documents:

    • Dla funkcji 2026-08-01-preview najnowszy pakiet w wersji zapoznawczej: dotnet add package Azure.Search.Documents --prerelease

    • Dla funkcji 2026-04-01, najnowszy stabilny pakiet: dotnet add package Azure.Search.Documents

  • W przypadku uwierzytelniania bezkluczowego pakiet Azure.Identity: dotnet add package Azure.Identity

  • Wymagany pakiet azure-search-documents:

    • Dla funkcji 2026-08-01-preview najnowszy pakiet w wersji zapoznawczej: pip install --pre azure-search-documents

    • Dla funkcji 2026-04-01, najnowszy stabilny pakiet: pip install azure-search-documents

  • W przypadku uwierzytelniania bezkluczowego pakiet azure-identity: pip install azure-identity

  • Wymagana wersja interfejsu API REST usługi wyszukiwania:

  • W przypadku uwierzytelniania bez klucza dołącz token Microsoft Entra ID w nagłówku Authorization każdego żądania HTTP.

Obsługiwane modele

Użyj jednego z następujących modułów LLM z Azure OpenAI w modelach foundry. Azure OpenAI określa dostępność regionalną wybranego wdrożenia. Aby uzyskać instrukcje dotyczące wdrażania, zobacz Deploy Microsoft Foundry Models w portalu Foundry.

Rodzina GPT-4 jest przestarzała. Aby uzyskać informacje dotyczące cyklu życia modeli, dat wycofania i aktualnego stanu, zobacz Wycofanie i wycofywanie modeli oraz Harmonogram wycofania modeli — Microsoft Foundry.

Model Obsługiwane wersje interfejsu API
gpt-4o (przestarzałe) 2025-11-01-preview, 2026-05-01-preview, 2026-08-01-preview
gpt-4o-mini (przestarzałe) 2025-11-01-preview, 2026-05-01-preview, 2026-08-01-preview
gpt-4.1 (przestarzałe) 2025-11-01-preview, 2026-05-01-preview, 2026-08-01-preview
gpt-4.1-mini (przestarzałe) 2025-11-01-preview, 2026-05-01-preview, 2026-08-01-preview
gpt-4.1-nano (przestarzałe) 2025-11-01-preview, 2026-05-01-preview, 2026-08-01-preview
gpt-5 2025-11-01-preview, 2026-05-01-preview, 2026-08-01-preview
gpt-5-mini 2025-11-01-preview, 2026-05-01-preview, 2026-08-01-preview
gpt-5-nano 2025-11-01-preview, 2026-05-01-preview, 2026-08-01-preview
gpt-5.1 2026-05-01-preview, 2026-08-01-preview
gpt-5.2 2026-05-01-preview, 2026-08-01-preview
gpt-5.4 2026-05-01-preview, 2026-08-01-preview
gpt-5.4-mini 2026-05-01-preview, 2026-08-01-preview
gpt-5.4-nano 2026-05-01-preview, 2026-08-01-preview
gpt-5.5 2026-08-01-preview
gpt-5.6-sol 2026-08-01-preview
gpt-5.6-terra 2026-08-01-preview
gpt-5.6-luna 2026-08-01-preview

Konfigurowanie dostępu

Wyszukiwanie AI platformy Azure potrzebuje dostępu do modelu LLM z Azure OpenAI w modelach Foundry. Zalecamy Microsoft Entra ID na potrzeby uwierzytelniania i dostępu opartego na rolach na potrzeby autoryzacji. Aby przypisać role, musisz być właścicielem lub administratorem dostępu użytkowników. Jeśli nie możesz używać ról, zamiast tego użyj uwierzytelniania opartego na kluczach.

  1. Włącz kontrolę dostępu opartą na rolach na Wyszukiwanie AI platformy Azure.

  2. Konfiguruj Wyszukiwanie AI platformy Azure do używania tożsamości zarządzanej.

  3. U dostawcy modelu przypisz użytkownika usług Cognitive Services do tożsamości zarządzanej usługi wyszukiwania. Jeśli testujesz lokalnie, przypisz tę samą rolę do konta użytkownika.

  4. Aby przeprowadzić testowanie lokalne, wykonaj kroki opisane w przewodniku Szybki start: połączenie bez kluczy, aby zalogować się do określonej subskrypcji i dzierżawcy. Użyj DefaultAzureCredential zamiast AzureKeyCredential w każdym żądaniu, które powinno być podobne do poniższego przykładu.

    // Authenticate using roles
    using Azure.Search.Documents.Indexes;
    using Azure.Identity;
    
    var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());
    
  1. Włącz kontrolę dostępu opartą na rolach na Wyszukiwanie AI platformy Azure.

  2. Konfiguruj Wyszukiwanie AI platformy Azure do używania tożsamości zarządzanej.

  3. U dostawcy modelu przypisz użytkownika usług Cognitive Services do tożsamości zarządzanej usługi wyszukiwania. Jeśli testujesz lokalnie, przypisz tę samą rolę do konta użytkownika.

  4. Aby przeprowadzić testowanie lokalne, wykonaj kroki opisane w przewodniku Szybki start: połączenie bez kluczy, aby zalogować się do określonej subskrypcji i dzierżawcy. Użyj DefaultAzureCredential zamiast AzureKeyCredential w każdym żądaniu, które powinno być podobne do poniższego przykładu.

    # Authenticate using roles
    from azure.identity import DefaultAzureCredential
    index_client = SearchIndexClient(endpoint = "<search-endpoint>", credential = DefaultAzureCredential())
    
  1. Włącz kontrolę dostępu opartą na rolach na Wyszukiwanie AI platformy Azure.

  2. Konfiguruj Wyszukiwanie AI platformy Azure do używania tożsamości zarządzanej.

  3. U dostawcy modelu przypisz użytkownika usług Cognitive Services do tożsamości zarządzanej usługi wyszukiwania. Jeśli testujesz lokalnie, przypisz tę samą rolę do konta użytkownika.

  4. W przypadku testowania lokalnego wykonaj kroki opisane w przewodniku Szybki start: nawiązywanie połączenia bez kluczy w celu uzyskania osobistego tokenu dostępu dla określonej subskrypcji i dzierżawy. Określ token dostępu w każdym żądaniu, który powinien być podobny do poniższego przykładu.

    # List indexes using roles
    GET {{search-endpoint}}/indexes?api-version=2026-04-01
    Content-Type: application/json
    Authorization: Bearer {{search-access-token}}
    

Ważne

Fragmenty kodu w tym artykule używają uwierzytelniania bez klucza. Aby zamiast tego użyć klucza interfejsu API, należy odpowiednio zaktualizować każde żądanie. W żądaniu określającym obie metody klucz interfejsu API ma pierwszeństwo.

Sprawdzanie istniejących baz wiedzy

Baza wiedzy jest obiektem najwyższego poziomu wielokrotnego użytku. Znajomość istniejących baz wiedzy jest przydatna do ponownego użycia lub nazewnictwa nowych obiektów.

Uruchom następujący kod, aby wyświetlić listę istniejących baz wiedzy według nazwy. Lista zawiera wszystkie bazy wiedzy w usłudze wyszukiwania, niezależnie od wersji interfejsu API użytej do ich utworzenia.

// 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}");
}

Reference:SearchIndexClient

# List knowledge bases by name
from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient

index_client = SearchIndexClient(endpoint = "<search-endpoint>", credential = DefaultAzureCredential())

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

Reference:SearchIndexClient

# List knowledge bases
GET {{search-endpoint}}/knowledgebases?api-version={{api-version}}&$select=name
Content-Type: application/json
Authorization: Bearer {{search-access-token}}

Dokumentacja:Bazy wiedzy — lista

Możesz również zwrócić jedną bazę wiedzy według nazwy, aby przejrzeć jego definicję JSON.

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);

Reference:SearchIndexClient

# Get a knowledge base definition
from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
import json

index_client = SearchIndexClient(endpoint = "<search-endpoint>", credential = DefaultAzureCredential())

kb = index_client.get_knowledge_base("<knowledge-base-name>")
print(json.dumps(kb.as_dict(), indent = 2))

Reference:SearchIndexClient

# Get knowledge base
GET {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}?api-version={{api-version}}
Content-Type: application/json
Authorization: Bearer {{search-access-token}}

Dokumentacja:Bazy wiedzy — pobieranie

Poniższy kod JSON to przykładowa odpowiedź dla bazy wiedzy.

{
  "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"
  }
}

Uwaga

Schemat odpowiedzi odzwierciedla wersję interfejsu API użytą do utworzenia bazy wiedzy. Baza wiedzy utworzona przy użyciu ogólnie dostępnej 2026-04-01 wersji interfejsu API zwraca węższą definicję niż 2026-08-01-preview. Aby uzyskać więcej informacji na temat właściwości, które obsługuje każda wersja, zobacz Tworzenie bazy wiedzy.

Tworzenie bazy wiedzy

Ważne

Wersja 2026-04-01 interfejsu API akceptuje tylko ogólnie dostępne typy źródeł wiedzy i obsługuje minimalne, wyodrębnione pobieranie. Nie obsługuje funkcji dostępnych wyłącznie w wersji zapoznawczej, takich jak planowanie zapytań, synteza odpowiedzi i konfigurowalny poziom wnioskowania. Aby uzyskać pełną funkcjonalność, użyj polecenia 2026-08-01-preview.

Baza wiedzy łączy co najmniej jedno źródło wiedzy (zawartość z możliwością wyszukiwania) z opcjonalnym LLM z Azure OpenAI w Foundry Models. Ustawione właściwości określają wartości domyślne dla wykonywania zapytań i odpowiedzi na pobieranie.

Po utworzeniu bazy wiedzy możesz zaktualizować jej właściwości w dowolnym momencie. Jeśli baza wiedzy jest używana, aktualizacje będą obowiązywać podczas następnego pobierania.

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

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

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 = "Answer in two concise sentences.",
    OutputMode = KnowledgeRetrievalOutputMode.AnswerSynthesis,
    Models = { new KnowledgeBaseAzureOpenAIModel(azureOpenAIParameters: aoaiParams) },
    RetrievalReasoningEffort = new KnowledgeRetrievalAutoReasoningEffort()
};

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

Reference:SearchIndexClient, KnowledgeBase

# Create a knowledge base
from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
    AzureOpenAIVectorizerParameters,
    KnowledgeBase,
    KnowledgeBaseAzureOpenAIModel,
    KnowledgeSourceReference,
)
from azure.search.documents.knowledgebases.models import (
    KnowledgeRetrievalAutoReasoningEffort,
    KnowledgeRetrievalOutputMode,
)

index_client = SearchIndexClient(endpoint = "<search-endpoint>", credential = DefaultAzureCredential())

aoai_params = AzureOpenAIVectorizerParameters(
    resource_url = "<aoai-endpoint>",
    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 = "Answer in two concise sentences.",
    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 = KnowledgeRetrievalAutoReasoningEffort(),
)

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

Reference:SearchIndexClient, KnowledgeBase

# Create a knowledge base
PUT {{search-endpoint}}/knowledgebases/my-kb?api-version=2026-08-01-preview
Content-Type: application/json
Authorization: Bearer {{search-access-token}}

{
    "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": "Answer in two concise sentences.",
    "outputMode": "answerSynthesis",
    "knowledgeSources": [
        {
            "name": "hotels-ks"
        },
        {
            "name": "earth-at-night-ks"
        }
    ],
    "models" : [
        {
            "kind": "azureOpenAI",
            "azureOpenAIParameters": {
                "resourceUri": "{{aoai-endpoint}}",
                "deploymentId": "gpt-5.4-mini",
                "modelName": "gpt-5.4-mini"
            }
        }
    ],
    "encryptionKey": null,
    "retrievalReasoningEffort": {
        "kind": "auto"
    }
}

Dokumentacja:Bazy wiedzy — tworzenie lub aktualizowanie

Konfigurowanie domyślnych limitów pobierania (wersja zapoznawcza)

Począwszy od wersji interfejsu 2026-08-01-preview API, można użyć opcjonalnego retrieveDefaults obiektu do przechowywania wartości domyślnych dotyczących całego żądania w bazie wiedzy. Każda przechowywana właściwość ma zastosowanie tylko wtedy, gdy żądanie pobierania pomija odpowiednie pole żądania:

Właściwość składowana Pobierz pole żądania
maxRuntimeInSeconds maxRuntimeInSeconds
maxOutputDocuments maxOutputDocuments
maxOutputSizeInTokens maxOutputSize

Budżet tokenów wyjściowych ma różne nazwy właściwości podczas zapisywania i nadpisywania. Ustaw wartość maxOutputSizeInTokens w retrieveDefaults i użyj maxOutputSize w żądaniu pobrania.

Efektywna wartość dla każdej właściwości jest określana niezależnie w następującej kolejności:

  1. Odpowiadająca wartość w żądaniu pobrania.
  2. Wartość w obiekcie bazy retrieveDefaults wiedzy.
  3. Wartość domyślna usługi, gdy właściwość jest nieobecna na obu poziomach.

W poniższym przykładzie użyto istniejącego źródła wiedzy indeksu wyszukiwania o nazwie your-knowledge-source. Przechowuje limit czasu działania wynoszący 45 sekund, maksymalnie osiem dokumentów wyjściowych oraz limit wyjściowy wynoszący 12 000 tokenów.

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

string searchEndpoint = "<search-endpoint>";

var options = new SearchClientOptions(
    SearchClientOptions.ServiceVersion.V2026_08_01_Preview);
var indexClient = new SearchIndexClient(
    new Uri(searchEndpoint),
    new DefaultAzureCredential(),
    options);

var knowledgeBase = new KnowledgeBase(
    "your-knowledge-base",
    new[] { new KnowledgeSourceReference("your-knowledge-source") })
{
    Description = "A knowledge base for product support content.",
    RetrieveDefaults = new KnowledgeBaseRetrieveDefaults
    {
        MaxRuntimeInSeconds = 45,
        MaxOutputDocuments = 8,
        MaxOutputSizeInTokens = 12000
    }
};

await indexClient.CreateOrUpdateKnowledgeBaseAsync(knowledgeBase);

Reference:SearchIndexClient, SearchClientOptions.ServiceVersion, KnowledgeBase

from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
    KnowledgeBase,
    KnowledgeBaseRetrieveDefaults,
    KnowledgeSourceReference,
)

search_endpoint = "<search-endpoint>"
index_client = SearchIndexClient(
    endpoint=search_endpoint,
    credential=DefaultAzureCredential(),
    api_version="2026-08-01-preview",
)

knowledge_base = KnowledgeBase(
    name="your-knowledge-base",
    description="A knowledge base for product support content.",
    knowledge_sources=[
        KnowledgeSourceReference(name="your-knowledge-source"),
    ],
    retrieve_defaults=KnowledgeBaseRetrieveDefaults(
        max_runtime_in_seconds=45,
        max_output_documents=8,
        max_output_size_in_tokens=12000,
    ),
)

index_client.create_or_update_knowledge_base(knowledge_base)

Reference:SearchIndexClient, KnowledgeBase

PUT {{search-endpoint}}/knowledgebases/your-knowledge-base?api-version=2026-08-01-preview
Content-Type: application/json
Authorization: Bearer {{search-access-token}}

{
  "name": "your-knowledge-base",
  "description": "A knowledge base for product support content.",
  "knowledgeSources": [
    {
      "name": "your-knowledge-source"
    }
  ],
  "retrieveDefaults": {
    "maxRuntimeInSeconds": 45,
    "maxOutputDocuments": 8,
    "maxOutputSizeInTokens": 12000
  }
}

Dokumentacja:Bazy wiedzy — tworzenie lub aktualizowanie

Aby zastąpić te przechowywane wartości 20 sekund, jeden dokument i 5000 tokenów dla jednego żądania, zobacz Weryfikowanie wartości domyślnych pobierania bazy wiedzy.

Konfigurowanie mechanizmu CORS dla wywołań pobierania opartych na przeglądarce (wersja zapoznawcza)

Ważne

Współużytkowanie zasobów między źródłami (CORS) umożliwia aplikacjom opartym na przeglądarce żądanie danych bezpośrednio z usługi. W zależności od konfiguracji mechanizmu CORS zewnętrzne strony internetowe mogą uzyskiwać dostęp do usługi i jej danych lub wywoływać je przy użyciu kontekstu przeglądarki użytkownika. Ten dostęp może tworzyć zagrożenia bezpieczeństwa. Włączenie CORS odbywa się na własne ryzyko.

Od wersji interfejsu API 2026-05-01-preview baza wiedzy może definiować corsOptions dla aplikacji przeglądarkowych, które wywołują akcję retrieve bezpośrednio w języku JavaScript. Zasady MECHANIZMU CORS identyfikują, które źródła przeglądarki mogą wysyłać żądania pobierania do bazy wiedzy.

Po pominięciu corsOptions baza wiedzy nie ma polityki CORS, a przeglądarki blokują żądania pobierania między źródłami.

Poniższy przykład tworzy bazę wiedzy, która umożliwia pobieranie żądań z jednego źródła przeglądarki.

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

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

var knowledgeBase = new KnowledgeBase(
    name: "browser-chat-kb",
    knowledgeSources: new[] { new KnowledgeSourceReference("product-docs-ks") }
)
{
    Description = "A knowledge base that allows one browser app origin.",
    CorsOptions = new CorsOptions(new[] { "https://myapp.example.com" })
    {
        MaxAgeInSeconds = 300
    }
};

await indexClient.CreateOrUpdateKnowledgeBaseAsync(knowledgeBase);

Reference:CorsOptions, KnowledgeBase

from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
    CorsOptions,
    KnowledgeBase,
    KnowledgeSourceReference,
)

index_client = SearchIndexClient(endpoint="<search-endpoint>", credential=DefaultAzureCredential())

knowledge_base = KnowledgeBase(
    name="browser-chat-kb",
    description="A knowledge base that allows one browser app origin.",
    knowledge_sources=[KnowledgeSourceReference(name="product-docs-ks")],
    cors_options=CorsOptions(
        allowed_origins=["https://myapp.example.com"],
        max_age_in_seconds=300,
    ),
)

index_client.create_or_update_knowledge_base(knowledge_base)

Reference:CorsOptions, KnowledgeBase

PUT {{search-endpoint}}/knowledgebases/browser-chat-kb?api-version=2026-08-01-preview
Content-Type: application/json
Authorization: Bearer {{search-access-token}}

{
  "name": "browser-chat-kb",
  "description": "A knowledge base that allows one browser app origin.",
  "knowledgeSources": [
    {
      "name": "product-docs-ks"
    }
  ],
  "corsOptions": {
    "allowedOrigins": [
      "https://myapp.example.com"
    ],
    "maxAgeInSeconds": 300
  }
}

Wykonywanie zapytań względem bazy wiedzy

Po utworzeniu bazy wiedzy wywołaj akcję pobierania lub punkt końcowy MCP , aby wykonać zapytanie.

Usuwanie bazy wiedzy

Jeśli nie potrzebujesz już bazy wiedzy lub musisz ją ponownie skompilować w usłudze wyszukiwania, uruchom następujący kod, aby usunąć obiekt.

// Delete a knowledge base
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.");

Reference:SearchIndexClient

# Delete a knowledge base
from azure.identity import DefaultAzureCredential
from azure.search.documents.indexes import SearchIndexClient

index_client = SearchIndexClient(endpoint = "<search-endpoint>", credential = DefaultAzureCredential())
index_client.delete_knowledge_base("<knowledge-base-name>")
print(f"Knowledge base deleted successfully.")

Reference:SearchIndexClient

# Delete a knowledge base
DELETE {{search-endpoint}}/knowledgebases/{{knowledge-base-name}}?api-version={{api-version}}
Authorization: Bearer {{search-access-token}}

Dokumentacja:Bazy wiedzy — usuwanie