Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Nota
Esta funcionalidade está atualmente em pré-visualização pública. Esta pré-visualização é fornecida sem um acordo de nível de serviço e não é recomendada para cargas de trabalho em produção. Certas funcionalidades podem não ser suportadas ou podem 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 esforço de raciocínio de busca que determina se um LLM é invocado e gere custo, latência e 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 a 2025-08-01-preview "knowledge agent" para "knowledge base". Isto é uma mudança crítica. Recomendamos a migração do código existente para as novas APIs o mais rapidamente possível.
Suporte de utilização
| Portal Azure | Microsoft Foundry portal | .NET SDK | Python SDK | Java SDK | JavaScript SDK | REST API |
|---|---|---|---|---|---|---|
| ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Pré-requisitos
Pesquisa de IA do Azure em qualquer região que forneça recuperação assistida por agentes. Tens de ter o ranker semântico ativado. Se estiver a usar uma identidade gerida para acesso baseado em funções a modelos implementados, o seu serviço de pesquisa deve estar no escalão de preços Básico ou superior.
Uma ou mais fontes de conhecimento no seu serviço de pesquisa.
Azure OpenAI com uma implementação de LLM suportada.
Permissão para criar e usar objetos no Pesquisa de IA do Azure. Recomendamos o acesso baseado em funções. O Search Service Contributor pode criar e gerir uma base de conhecimento. O Search Index Data Reader pode executar consultas. Em alternativa, podes usar chaves API se uma atribuição de funções não for viável. Para mais informações, consulte Ligar-se a um serviço de pesquisa.
- O mais recente pacote de pré-visualização
Azure.Search.Documents:dotnet add package Azure.Search.Documents --prerelease
- O pacote de pré-visualização mais recente
azure-search-documents:pip install --pre azure-search-documents
- A 2025-11-01-preview versão de pré-visualização das APIs REST do Serviço de Pesquisa.
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-4ogpt-4o-minigpt-4.1gpt-4.1-nanogpt-4.1-minigpt-5gpt-5-nanogpt-5-mini
Configurar 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 autenticação baseada em chaves.
Configure Pesquisa de IA do Azure para usar uma identidade gerida.
No seu fornecedor de modelos, como o Foundry Models, atribua à identidade gerida do seu serviço de pesquisa a função de Utilizador de Serviços Cognitivos. Se estiveres a testar localmente, atribui o mesmo papel à tua conta de utilizador.
Para testes locais, siga os passos do Quickstart: Conectar-se sem chaves para iniciar sessão numa subscrição e locatário específicos. Use
DefaultAzureCredentialem vez deAzureKeyCredentialem 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());
```
Configure Pesquisa de IA do Azure para usar uma identidade gerida.
No seu fornecedor de modelos, como Foundry Models, atribua Utilizador de Serviços Cognitivos à identidade gerida do seu serviço de pesquisa. Se estiveres a testar localmente, atribui o mesmo papel à tua conta de utilizador.
Para testes locais, siga os passos em Quickstart: Conectar sem chaves para aceder a uma subscrição e locatário específicos. Use
DefaultAzureCredentialem vez deAzureKeyCredentialem 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())
```
Configure Pesquisa de IA do Azure para usar uma identidade gerida.
No seu fornecedor de modelos, como Foundry Models, atribua Utilizador de Serviços Cognitivos à identidade gerida do seu serviço de pesquisa. Se estiveres a testar localmente, atribui o mesmo papel à tua conta de utilizador.
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 utilizar autenticação baseada em funções, atualize cada pedido em conformidade. 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. Agentes de conhecimento 2025-08-01-preview 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"
}
}
Crie uma base de conhecimento
Uma base de conhecimento orienta o pipeline de recuperação agentica. No código da aplicação, outros agentes ou chatbots invocam-no.
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 | Descrição | 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 em Pesquisa de IA do Azure. | Corda | Sim |
KnowledgeSources |
Uma ou mais fontes de conhecimento apoiadas. | Array | Sim |
Description |
Uma descrição da base de conhecimento. O LLM utiliza a descrição para informar o planeamento das consultas. | Corda | Não |
RetrievalInstructions |
Um prompt para o LLM determinar se uma fonte de conhecimento deve estar incluída numa consulta. Inclua este prompt quando tiver várias fontes de conhecimento. Este campo influencia tanto a seleção da fonte de conhecimento como a formulação de consultas. Por exemplo, instruções podem acrescentar informação 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. | Corda | Não |
AnswerInstructions |
Instruções personalizadas para moldar respostas sintetizadas. O padrão é nulo. Para mais informações, consulte Usar síntese de respostas para respostas baseadas em citações. | Corda | 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-se passar a um LLM como etapa subsequente. |
Corda | Não |
Models |
Uma ligação a um LLM suportado usado para formulação de respostas ou planeamento de consultas. 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 Pesquisa de IA do Azure para o modelo. |
Objetivo | 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 do Raciocínio de Recuperação. |
Objetivo | Não |
| Nome | Descrição | 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 em Pesquisa de IA do Azure. | Corda | Sim |
description |
Uma descrição da base de conhecimento. O LLM utiliza a descrição para informar o planeamento das consultas. | Corda | Não |
retrieval_instructions |
Um prompt para o LLM determinar se uma fonte de conhecimento deve estar incluída numa consulta. Inclua este prompt quando tiver várias fontes de conhecimento. Este campo influencia tanto a seleção da fonte de conhecimento como a formulação de consultas. Por exemplo, instruções podem acrescentar informação 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. | Corda | Não |
answer_instructions |
Instruções personalizadas para moldar respostas sintetizadas. O padrão é nulo. Para mais informações, consulte Usar síntese de respostas para respostas baseadas em citações. | Corda | 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-se passar a um LLM como etapa subsequente. |
Corda | Não |
knowledge_sources |
Uma ou mais fontes de conhecimento apoiadas. | Array | Sim |
models |
Uma ligação a um LLM suportado usado para formulação de respostas ou planeamento de consultas. 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 API para a ligação ao Pesquisa de IA do Azure para o modelo. |
Objetivo | Não |
encryption_key |
Uma chave gerida pelo cliente para encriptar informação sensível tanto na base de conhecimento como nos objetos gerados. | Objetivo | 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 do Raciocínio de Recuperação. |
Objetivo | Não |
| Nome | Descrição | 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 em Pesquisa de IA do Azure. | Corda | Sim |
description |
Uma descrição da base de conhecimento. O LLM utiliza a descrição para informar o planeamento das consultas. | Corda | Não |
retrievalInstructions |
Um prompt para o LLM determinar se uma fonte de conhecimento deve estar no âmbito de uma consulta. Inclua este prompt quando tiver várias fontes de conhecimento. Este campo influencia tanto a seleção da fonte de conhecimento como a formulação de consultas. Por exemplo, instruções podem acrescentar informação 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. | Corda | Não |
answerInstructions |
Instruções personalizadas para moldar respostas sintetizadas. O padrão é nulo. Para mais informações, consulte Usar síntese de respostas para respostas baseadas em citações. | Corda | Não |
outputMode |
Os valores válidos são answerSynthesis para uma resposta formulada por um LLM ou extractedData para os resultados completos de pesquisa que o utilizador pode passar a um LLM como passo a jusante. |
Corda | Não |
knowledgeSources |
Uma ou mais fontes de conhecimento apoiadas. | Array | Sim |
models |
Uma ligação a um LLM suportado usado para formulação de respostas ou planeamento de consultas. 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 API para a ligação do Pesquisa de IA do Azure ao modelo. |
Objetivo | Não |
encryptionKey |
Uma chave gerida pelo cliente para encriptar informação sensível tanto na base de conhecimento como nos objetos gerados. | Objetivo | 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, veja Definir o esforço de raciocínio de recuperação. |
Objetivo | Não |
Consultar uma base 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.
Apagar uma base 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}}