Partilhar via


Crie uma base de conhecimento no Pesquisa de IA do Azure

Observação

Esta funcionalidade está atualmente em pré-visualização pública. Esta pré-visualização é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para mais informações, consulte Termos de Utilização Suplementares para Microsoft Azure Pré-visualizações.

No Pesquisa de IA do Azure, uma base de conhecimento é um objeto de topo que orquestra a recuperação agentiva. Define quais as fontes de conhecimento a consultar e o comportamento padrão para as operações de recuperação. No momento da consulta, o método de recuperação dirige-se à base de conhecimento para executar o pipeline de recuperação configurado.

Pode criar uma base de conhecimento numa carga de trabalho Foundry IQ no portal Microsoft Foundry (novo). Também precisas de uma base de conhecimento em quaisquer soluções agentes que cries usando as APIs do Pesquisa de IA do Azure.

Uma base de conhecimento especifica:

  • Uma ou mais fontes de conhecimento que apontam para conteúdos pesquisáveis.
  • Um LLM opcional que fornece capacidades de raciocínio para planeamento de consultas e formulação de respostas.
  • Um processo de raciocínio de recuperação que determina se um LLM é invocado e gere o custo, a latência e a qualidade.
  • Propriedades personalizadas que controlam o encaminhamento, seleção da fonte, formato de saída e encriptação de objetos.

Depois de criar uma base de conhecimento, pode atualizar as suas propriedades a qualquer momento. Se a base de conhecimento estiver em uso, as atualizações entram em vigor na próxima recuperação.

Importante

2025-11-01-preview renomeia o 2025-08-01-preview "knowledge agent" para "knowledge base". Isto é uma alteração disruptiva. Recomendamos migrar o código existente para as novas APIs o mais rápido possível.

Suporte de utilização

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

Pré-requisitos

  • O mais recente pacote de pré-visualização Azure.Search.Documents: dotnet add package Azure.Search.Documents --prerelease
  • O mais recente pacote de pré-visualização azure-search-documents: pip install --pre azure-search-documents

Modelos suportados

Use um dos seguintes LLMs do Azure OpenAI no Foundry Models. Para instruções de implementação, consulte Deploy Microsoft Foundry Models no portal Foundry.

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

Configurar o acesso

O Pesquisa de IA do Azure precisa de acesso ao LLM através do Azure OpenAI. Recomendamos o Microsoft Entra ID para autenticação e acesso baseado em funções para autorização. Para atribuir funções, deve ser Proprietário ou Administrador de Acesso ao Utilizador. Se não conseguires usar funções, usa a autenticação baseada em chaves.

  1. Configure Pesquisa de IA do Azure para usar uma identidade gerida.

  2. No seu fornecedor de modelos, como o Foundry Models, atribua Utilizador de Serviços Cognitivos à identidade gerida do seu serviço de busca. Se estiveres a testar localmente, atribui o mesmo papel à tua conta de utilizador.

  3. Para testes locais, siga os passos do Quickstart: Ligar-se sem chaves para iniciar sessão numa subscrição e locatário específicos. Use DefaultAzureCredential em vez de AzureKeyCredential em cada pedido, o que deverá ser semelhante ao seguinte exemplo:

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

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

  1. Configure Pesquisa de IA do Azure para usar uma identidade gerida.

  2. No seu fornecedor de modelos, como o Foundry Models, atribua Utilizador de Serviços Cognitivos à identidade gerida do seu serviço de busca. Se estiveres a testar localmente, atribui o mesmo papel à tua conta de utilizador.

  3. Para testes locais, siga os passos do Quickstart: Ligar-se sem chaves para iniciar sessão numa subscrição e locatário específicos. Use DefaultAzureCredential em vez de AzureKeyCredential em cada pedido, o que deverá ser semelhante ao seguinte exemplo:

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

  1. Configure Pesquisa de IA do Azure para usar uma identidade gerida.

  2. No seu fornecedor de modelos, como o Foundry Models, atribua Utilizador de Serviços Cognitivos à identidade gerida do seu serviço de busca. Se estiveres a testar localmente, atribui o mesmo papel à tua conta de utilizador.

  3. Para testes locais, siga os passos no Quickstart: Ligue-se sem chaves para obter um token de acesso pessoal para uma subscrição e inquilino específicos. Especifique o seu token de acesso em cada pedido, o que deverá assemelhar-se ao seguinte exemplo:

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

Importante

Excertos de código neste artigo utilizam chaves API. Se usar autenticação baseada em funções, atualize cada pedido em conformidade com isso. Num pedido que especifica ambas as abordagens, a chave API tem prioridade.

Verifique se existem bases de conhecimento existentes

Uma base de conhecimento é um objeto de topo e reutilizável. Conhecer bases de conhecimento existentes é útil tanto para reutilizar como para nomear novos objetos. Quaisquer agentes de conhecimento da versão de pré-visualização de 2025-08-01 são devolvidos na coleção de bases de conhecimento.

Execute o seguinte código para listar as bases de conhecimento existentes por nome.

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

Execute o seguinte código para listar as bases de conhecimento existentes por nome.

# 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}")

Use Knowledge Bases - List (API REST) para listar as bases de conhecimento por nome e tipo.

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

Também pode devolver uma única base de conhecimento pelo nome para rever a sua definição em 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);
# 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}}

O JSON seguinte é uma resposta de exemplo para uma base de conhecimento.

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

Criar uma base de dados de conhecimento

Uma base de conhecimento orienta o pipeline de recuperação agentica. No código da aplicação, é chamado por outros agentes ou chatbots.

Uma base de conhecimento liga fontes de conhecimento (conteúdo pesquisável) a uma implementação de LLM a partir do Azure OpenAI. As propriedades no LLM estabelecem a ligação, enquanto as propriedades na fonte de conhecimento estabelecem os padrões que informam a execução da consulta e a resposta.

Execute o código seguinte para criar uma base de conhecimento.

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

Execute o código seguinte para criar uma base de conhecimento.

# 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.")

Use Knowledge Bases - Create or Update (REST API) para criar uma base de conhecimento.

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

Propriedades da base de conhecimento

Passe as seguintes propriedades para criar uma base de conhecimento.

Nome Description Tipo Obrigatório
Name O nome da base de conhecimento. Deve ser único dentro da coleção de bases de conhecimento e seguir as diretrizes de nomeação para objetos no Pesquisa de IA do Azure. Cordão Yes
KnowledgeSources Uma ou mais fontes de conhecimento apoiadas. Array Yes
Description Uma descrição da base de conhecimento. O LLM usa a descrição para informar o planeamento de consultas. Cordão Não
RetrievalInstructions Um prompt para o LLM decidir se uma fonte de conhecimento deve ser considerada numa consulta. Inclua este prompt quando tiver várias fontes de conhecimento. Este campo influencia a seleção da fonte de conhecimento e a formulação da consulta. Por exemplo, as instruções podem acrescentar informações ou priorizar uma fonte de conhecimento. As instruções são passadas diretamente para o LLM, o que significa que é possível fornecer instruções que quebram o planeamento das consultas, como instruções que resultam em contornar uma fonte essencial de conhecimento. Cordão Não
AnswerInstructions Instruções personalizadas para moldar respostas sintetizadas. O padrão é null. Para mais informações, consulte Usar síntese de respostas para respostas baseadas em citações. Cordão Não
OutputMode Os valores válidos são AnswerSynthesis para uma resposta formulada por um LLM ou ExtractedData para resultados completos de pesquisa que pode passar ao LLM como etapa subsequente. Cordão Não
Models Conexão a um LLM suportado usado para planear consultas ou formular respostas. Nesta pré-visualização, Models pode conter apenas um modelo, e o fornecedor do modelo deve ser Azure OpenAI. Obtenha informações sobre modelos no portal Foundry ou num pedido de linha de comandos. Forneça os parâmetros utilizando a classe KnowledgeBaseAzureOpenAIModel. Pode usar controlo de acesso baseado em funções em vez de chaves API para a ligação ao modelo do Pesquisa de IA do Azure. Objeto Não
RetrievalReasoningEffort Determina o nível de processamento de consultas relacionadas com LLMs. Os valores válidos são minimal, low (por defeito), e medium. Para mais informações, consulte Definir o esforço de raciocínio de recuperação. Objeto Não
Nome Description Tipo Obrigatório
name O nome da base de conhecimento. Deve ser único dentro da coleção das bases de conhecimento e seguir as diretrizes de nomeação para objetos em Pesquisa de IA do Azure. Cordão Yes
description Uma descrição da base de conhecimento. O LLM usa a descrição para informar o planeamento de consultas. Cordão Não
retrieval_instructions Um prompt para o LLM decidir se uma fonte de conhecimento deve ser considerada numa consulta. Inclua este prompt quando tiver várias fontes de conhecimento. Este campo influencia a seleção da fonte de conhecimento e a formulação da consulta. Por exemplo, as instruções podem acrescentar informações ou priorizar uma fonte de conhecimento. Passe as instruções diretamente ao LLM. É possível fornecer instruções que quebram o planeamento de consultas, como instruções que resultam em contornar uma fonte essencial de conhecimento. Cordão Não
answer_instructions Instruções personalizadas para moldar respostas sintetizadas. O padrão é null. Para mais informações, consulte Usar síntese de respostas para respostas baseadas em citações. Cordão Não
output_mode Os valores válidos são answer_synthesis para uma resposta formulada por um LLM ou extracted_data para resultados completos de pesquisa que pode passar ao LLM como etapa subsequente. Cordão Não
knowledge_sources Uma ou mais fontes de conhecimento apoiadas. Array Yes
models Conexão a um LLM suportado usado para planear consultas ou formular respostas. Nesta pré-visualização, models pode conter apenas um modelo, e o fornecedor do modelo deve ser Azure OpenAI. Obtenha informações sobre modelos no portal Foundry ou num pedido de linha de comandos. Pode utilizar controlo de acesso baseado em funções em vez de chaves de API para a ligação à Pesquisa de IA do Azure para o modelo. Objeto Não
encryption_key Uma chave gerida pelo cliente para encriptar informação sensível tanto na base de conhecimento como nos objetos gerados. Objeto Não
retrieval_reasoning_effort Determina o nível de processamento de consultas relacionadas com LLMs. Os valores válidos são minimal, low (por defeito), e medium. Para mais informações, consulte Definir o esforço de raciocínio de recuperação. Objeto Não
Nome Description Tipo Obrigatório
name O nome da base de conhecimento. Deve ser único dentro da coleção de bases de conhecimento e seguir as diretrizes de nomeação para objetos no Pesquisa de IA do Azure. Cordão Yes
description Uma descrição da base de conhecimento. O LLM usa a descrição para informar o planeamento de consultas. Cordão Não
retrievalInstructions Um prompt para o LLM decidir se uma fonte de conhecimento deve ser considerada numa consulta. Inclua este prompt quando tiver várias fontes de conhecimento. Este campo influencia a seleção da fonte de conhecimento e a formulação da consulta. Por exemplo, as instruções podem acrescentar informações ou priorizar uma fonte de conhecimento. Passa instruções diretamente para o LLM, o que significa que é possível fornecer instruções que quebram o planeamento de consultas, como instruções que resultam em contornar uma fonte essencial de conhecimento. Cordão Não
answerInstructions Instruções personalizadas para moldar respostas sintetizadas. O padrão é null. Para mais informações, consulte Usar síntese de respostas para respostas baseadas em citações. Cordão Não
outputMode Os valores válidos são answerSynthesis para uma resposta formulada por um LLM ou extractedData para resultados completos de pesquisa que pode passar ao LLM como etapa subsequente. Cordão Não
knowledgeSources Uma ou mais fontes de conhecimento apoiadas. Array Yes
models Conexão a um LLM suportado usado para planear consultas ou formular respostas. Nesta pré-visualização, models pode conter apenas um modelo, e o fornecedor do modelo deve ser Azure OpenAI. Obtenha informações sobre modelos no portal Foundry ou num pedido de linha de comandos. Pode usar controlo de acesso baseado em funções em vez de chaves de API para a ligação ao modelo de Pesquisa de IA do Azure. Objeto Não
encryptionKey Uma chave gerida pelo cliente para encriptar informação sensível tanto na base de conhecimento como nos objetos gerados. Objeto Não
retrievalReasoningEffort.kind Determina o nível de processamento de consultas relacionadas com LLMs. Os valores válidos são minimal, low (por defeito), e medium. Para mais informações, consulte Definir o esforço de raciocínio de recuperação. Objeto Não

Consultar uma base de dados de conhecimento

Depois de criares uma base de conhecimento, usa a ação de recuperar para a consultar e verificar a ligação ao LLM.

Eliminar uma base de dados de conhecimento

Se já não precisar da base de conhecimento ou precisar de a reconstruir no seu serviço de pesquisa, execute o código seguinte para eliminar o objeto.

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