Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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
Pesquisa de IA do Azure em qualquer região que fornece recuperação orientada por agente. Você deve ter o classificador semântico habilitado. Se você estiver usando uma identidade gerenciada para acesso baseado em função a modelos implantados, o serviço de pesquisa deverá estar no tipo de preço Básico ou superior.
Uma ou mais fontes de conhecimento em seu serviço de pesquisa.
Azure OpenAI com uma implantação de LLM compatível.
Permissão para criar e usar objetos no Pesquisa de IA do Azure . Recomendamos o acesso baseado em função. O Colaborador do Serviço de Pesquisa pode criar e gerenciar uma base de dados de conhecimento. O Leitor de Dados do Índice de Pesquisa pode executar consultas. Como alternativa, você poderá usar chaves de API se uma atribuição de função não for viável. Para obter mais informações, consulte Conectar-se a um serviço de pesquisa.
- O pacote de versão prévia
Azure.Search.Documentsmais recente:dotnet add package Azure.Search.Documents --prerelease
- O pacote de versão prévia
azure-search-documentsmais recente:pip install --pre azure-search-documents
- A versão 2025-11-01-preview das APIs REST do Serviço de Pesquisa.
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-4ogpt-4o-minigpt-4.1gpt-4.1-nanogpt-4.1-minigpt-5gpt-5-nanogpt-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.
Configure o Pesquisa de IA do Azure para usar uma identidade gerenciada.
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.
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
DefaultAzureCredentialem vez deAzureKeyCredentialem 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());
```
Configure Pesquisa de IA do Azure para usar uma identidade gerenciada.
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.
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
DefaultAzureCredentialem vez deAzureKeyCredentialem 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())
```
Configure Pesquisa de IA do Azure para usar uma identidade gerenciada.
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.
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}}