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.
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
Pesquisa de IA do Azure em qualquer região que forneça recuperação agêntica. Deve 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 implantaçã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 Leitor de Dados de Índice de Pesquisa 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 mais recente pacote de pré-visualização
azure-search-documents:pip install --pre azure-search-documents
- A versão de pré-visualização de 2025-11-01 - 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 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.
Configure Pesquisa de IA do Azure para usar uma identidade gerida.
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.
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
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 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.
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
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 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.
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}}