Compartilhar via


Criar uma base de dados de conhecimento no Pesquisa de IA do Azure 

Observação

Esse recurso está atualmente em versão prévia pública. Essa visualização é fornecida sem um contrato de nível de serviço e não é recomendada para utilização em produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Supplemental Terms of Use for Microsoft Azure Previews.

Em Pesquisa de IA do Azure , uma base de conhecimento é um objeto de nível superior que orquestra a recuperação agêncica. Ele define quais fontes de conhecimento consultar e o comportamento padrão para operações de recuperação. No momento da consulta, o método recuperar tem como alvo a base de dados de conhecimento para executar o pipeline de recuperação configurado.

Você pode criar uma base de dados de conhecimento em uma carga de trabalho Foundry IQ no portal Microsoft Foundry (novo). Você também precisa de uma base de dados de conhecimento em qualquer solução agente criada usando as APIs de Pesquisa de IA do Azure .

Uma base de dados de conhecimento especifica:

  • Uma ou mais fontes de conhecimento que apontam para conteúdo pesquisável.
  • Uma LLM opcional que fornece recursos de raciocínio para planejamento de consultas e formulação de resposta.
  • Um esforço de raciocínio de recuperação que determina se um LLM é invocado e gerencia custo, latência e qualidade.
  • Propriedades personalizadas que controlam roteamento, seleção de origem, formato de saída e criptografia de objeto.

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

Importante

2025-11-01-versão preliminar renomeia o "agente de conhecimento" 2025-08-01-versão preliminar para "base de dados de conhecimento". Essa é uma alteração significativa. Recomendamos migrar o código existente para as novas APIs o quanto antes.

Suporte de uso

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

Pré-requisitos

Modelos com suporte

Use uma das seguintes LLMs do Azure OpenAI em Foundry Models. Para obter instruções de implantação, consulte Deploy Microsoft Foundry Models no portal da 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

Pesquisa de IA do Azure  precisa de acesso à LLM do Azure OpenAI. Recomendamos Microsoft Entra ID para autenticação e acesso baseado em função para autorização. Para atribuir funções, você deve ser um Proprietário ou Administrador de Acesso do Usuário. Se você não puder usar funções, use a autenticação baseada em chave.

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

  2. Em seu provedor de modelos, como Foundry Models, atribua Usuário dos Serviços Cognitivos à identidade gerenciada do serviço de pesquisa. Se você estiver testando localmente, atribua a mesma função à sua conta de usuário.

  3. Para testes locais, siga as etapas em Início Rápido: conectar sem chaves para entrar em uma assinatura e um locatário específicos. Use DefaultAzureCredential em vez de AzureKeyCredential em cada solicitação, que deve ser semelhante ao exemplo a seguir:

    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 gerenciada.

  2. Em seu provedor de modelos, como Foundry Models, atribua Usuário dos Serviços Cognitivos à identidade gerenciada do serviço de pesquisa. Se você estiver testando localmente, atribua a mesma função à sua conta de usuário.

  3. Para testes locais, siga as etapas em Início Rápido: conectar sem chaves para entrar em uma assinatura e um locatário específicos. Use DefaultAzureCredential em vez de AzureKeyCredential em cada solicitação, que deve ser semelhante ao exemplo a seguir:

    # 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 gerenciada.

  2. Em seu provedor de modelos, como Foundry Models, atribua Usuário dos Serviços Cognitivos à identidade gerenciada do serviço de pesquisa. Se você estiver testando localmente, atribua a mesma função à sua conta de usuário.

  3. Para testes locais, siga as etapas no Início Rápido: conecte-se sem chaves para obter um token de acesso pessoal para uma assinatura e um locatário específicos. Especifique o token de acesso em cada solicitação, que deve ser semelhante 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

Os snippets de código neste artigo usam chaves de API. Se você usar a autenticação baseada em função, atualize cada solicitação adequadamente. Em uma solicitação que especifica ambas as abordagens, a chave de API tem precedência.

Verificar se há bases de dados de conhecimento existentes

Uma base de dados de conhecimento é um objeto reutilizável de nível superior. Saber sobre bases de dados de conhecimento existentes é útil para reutilizar ou nomear novos objetos. Qualquer agente de conhecimento 2025-08-01-preview será retornado na coleção de bases de dados de conhecimento.

Execute o código a seguir para listar as bases de dados 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 código a seguir para listar as bases de dados 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 Bases de Dados de Conhecimento – Lista (API REST) para listar bases de dados 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}}

Você também pode retornar uma única base de dados de conhecimento por nome para revisar sua definição de 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 a seguir é uma resposta de exemplo para uma base de dados 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"
  }
}

Como criar uma base de dados de conhecimento

Uma base de dados de conhecimento impulsiona o pipeline de recuperação por meio de agentes. No código do aplicativo, ele é chamado por outros agentes ou chatbots.

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

Execute o código a seguir para criar uma base de dados 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 a seguir para criar uma base de dados 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 bases de dados de conhecimento – Criar ou atualizar (API REST) para criar uma base de dados 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 dados de conhecimento

Passe as propriedades a seguir para criar uma base de dados de conhecimento.

Nome Description Tipo Obrigatório
Name O nome da base de conhecimento. Ele deve ser exclusivo na coleção de bases de conhecimento e seguir as diretrizes de nomenclatura para objetos em Pesquisa de IA do Azure . String Yes
KnowledgeSources Uma ou mais fontes de conhecimento com suporte. Array Yes
Description Uma descrição da base de dados de conhecimento. O LLM usa a descrição para orientar o planejamento da consulta. String Não
RetrievalInstructions Um prompt para que o LLM determine se uma fonte de conhecimento deve estar no escopo de uma consulta. Inclua este prompt quando você tiver várias fontes de conhecimento. Este campo influencia tanto a seleção da fonte de conhecimento quanto 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 a LLM, o que significa que é possível fornecer instruções que interrompem o planejamento de consultas, como instruções que resultam em ignorar uma fonte de conhecimento essencial. String Não
AnswerInstructions Instruções personalizadas para formatar respostas sintetizadas. O padrão é nulo. Para obter mais informações, consulte Usar a síntese de respostas para respostas apoiadas por citação. String Não
OutputMode Os valores válidos são AnswerSynthesis para uma resposta formulada por LLM ou ExtractedData para resultados completos da pesquisa que você pode passar para um LLM como uma etapa downstream. String Não
Models Uma conexão com um LLM com suporte usada para formulação de respostas ou planejamento de consultas. Nesta versão prévia, Models pode conter apenas um modelo e o provedor de modelo deve ser Azure OpenAI. Obtenha informações de modelo do portal do Foundry ou de uma solicitação de linha de comando. Forneça os parâmetros usando a classe KnowledgeBaseAzureOpenAIModel. Você pode usar o controle de acesso baseado em função em vez de chaves de API para a conexão Pesquisa de IA do Azure  com o modelo. Object Não
RetrievalReasoningEffort Determina o nível de processamento de consultas relacionadas a LLM. Os valores válidos são minimal, low (padrão) e medium. Para obter mais informações, consulte Definir o esforço de raciocínio de recuperação. Object Não
Nome Description Tipo Obrigatório
name O nome da base de conhecimento. Deve ser único na coleção de bases de conhecimento e seguir as diretrizes de nomeação para objetos em Pesquisa de IA do Azure . String Yes
description Uma descrição da base de dados de conhecimento. O LLM usa a descrição para orientar o planejamento da consulta. String Não
retrieval_instructions Um prompt para que o LLM determine se uma fonte de conhecimento deve estar no escopo de uma consulta. Inclua este prompt quando você tiver várias fontes de conhecimento. Este campo influencia tanto a seleção da fonte de conhecimento quanto a formulação da consulta. Por exemplo, as instruções podem acrescentar informações ou priorizar uma fonte de conhecimento. Passe instruções diretamente para o LLM. É possível fornecer instruções que interrompem o planejamento de consultas, como instruções que resultam em ignorar uma fonte de conhecimento essencial. String Não
answer_instructions Instruções personalizadas para formatar respostas sintetizadas. O padrão é nulo. Para obter mais informações, consulte Usar a síntese de respostas para respostas apoiadas por citação. String Não
output_mode Os valores válidos são answer_synthesis para uma resposta formulada por LLM ou extracted_data para resultados completos da pesquisa que você pode passar para um LLM como uma etapa downstream. String Não
knowledge_sources Uma ou mais fontes de conhecimento com suporte. Array Yes
models Uma conexão com um LLM com suporte usada para formulação de respostas ou planejamento de consultas. Nesta versão prévia, models pode conter apenas um modelo e o provedor de modelo deve ser Azure OpenAI. Obtenha informações de modelo do portal do Foundry ou de uma solicitação de linha de comando. Você pode usar o controle de acesso baseado em função em vez de chaves de API para a conexão Pesquisa de IA do Azure  com o modelo. Object Não
encryption_key Uma chave gerenciada pelo cliente para criptografar informações confidenciais na base de dados de conhecimento e nos objetos gerados. Object Não
retrieval_reasoning_effort Determina o nível de processamento de consultas relacionadas a LLM. Os valores válidos são minimal, low (padrão) e medium. Para obter mais informações, consulte Definir o esforço de raciocínio de recuperação. Object Não
Nome Description Tipo Obrigatório
name O nome da base de conhecimento. Ele 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 . String Yes
description Uma descrição da base de dados de conhecimento. O LLM usa a descrição para orientar o planejamento da consulta. String Não
retrievalInstructions Um prompt para que o LLM determine se uma fonte de conhecimento deve estar no escopo de uma consulta. Inclua este prompt quando você tiver várias fontes de conhecimento. Este campo influencia tanto a seleção da fonte de conhecimento quanto a formulação da consulta. Por exemplo, as instruções podem acrescentar informações ou priorizar uma fonte de conhecimento. Você passa instruções diretamente para a LLM, o que significa que é possível fornecer instruções que interrompem o planejamento de consultas, como instruções que resultam em ignorar uma fonte de conhecimento essencial. String Não
answerInstructions Instruções personalizadas para formatar respostas sintetizadas. O padrão é nulo. Para obter mais informações, consulte Usar a síntese de respostas para respostas apoiadas por citação. String Não
outputMode Os valores válidos são answerSynthesis para uma resposta formulada por LLM ou extractedData para resultados completos da pesquisa que você pode passar para um LLM como uma etapa downstream. String Não
knowledgeSources Uma ou mais fontes de conhecimento com suporte. Array Yes
models Uma conexão com um LLM com suporte usada para formulação de respostas ou planejamento de consultas. Nesta versão prévia, models pode conter apenas um modelo e o provedor de modelo deve ser Azure OpenAI. Obtenha informações de modelo do portal do Foundry ou de uma solicitação de linha de comando. Você pode usar o controle de acesso baseado em função em vez de chaves de API para a conexão Pesquisa de IA do Azure  com o modelo. Object Não
encryptionKey Uma chave gerenciada pelo cliente para criptografar informações confidenciais na base de dados de conhecimento e nos objetos gerados. Object Não
retrievalReasoningEffort.kind Determina o nível de processamento de consultas relacionadas a LLM. Os valores válidos são minimal, low (padrão) e medium. Para obter mais informações, consulte Definir o esforço de raciocínio de recuperação. Object Não

Consultar uma base de dados de conhecimento

Depois de criar uma base de dados de conhecimento, use a ação de recuperação para consultá-la e verificar a conexão LLM.

Excluir uma base de dados de conhecimento

Se você não precisar mais da base de dados de conhecimento ou precisar recompilá-la em seu serviço de pesquisa, execute o código a seguir para excluir 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}}