.NET Aspire Azure integração de pesquisa de documentos de IA
Neste artigo, você aprenderá a usar o .NET AspireAzure AI Search Documents client. A biblioteca Aspire.Azure.Search.Documents
é usada para registar um SearchIndexClient no container de injeção de dependência (DI) para ligar ao Azure Search. Isso permite verificações de integridade e registos correspondentes.
Para obter mais informações sobre como usar o SearchIndexClient
, consulte Como usar Azure. Search.Documents em um aplicativo de .NET C#.
Começar
- Azure assinatura: crie uma gratuitamente.
- Azure Serviço de Pesquisa: criar um recurso de Serviço de Pesquisa de IA Azure.
Para começar a usar a integração do .NET AspireAzure AI Search Documents, instale o 📦Aspire.Azure. Search.Documents pacote NuGet no projeto que consome client, ou seja, o projeto para o aplicativo que usa o Azure AI Search Documents client.
- .NET CLI
- PackageReference
dotnet add package Aspire.Azure.Search.Documents
Para obter mais informações, consulte dotnet add package ou Gerir dependências de pacotes em aplicações .NET.
Exemplo de utilização
No ficheiro de Program.cs do seu projeto que consome client, chame o método de extensão para registar um SearchIndexClient
para utilização através do contêiner de injeção de dependência. O método AddAzureSearchClient usa um parâmetro de nome de conexão.
builder.AddAzureSearchClient("searchConnectionName");
Em seguida, você pode recuperar a instância SearchIndexClient
usando a injeção de dependência. Por exemplo, para recuperar o client de um serviço de exemplo:
public class ExampleService(SearchIndexClient indexClient)
{
// Use indexClient
}
Você também pode recuperar um SearchClient
que pode ser usado para consulta, chamando o método SearchIndexClient.GetSearchClient da seguinte maneira:
public class ExampleService(SearchIndexClient indexClient)
{
public async Task<long> GetDocumentCountAsync(
string indexName,
CancellationToken cancellationToken)
{
var searchClient = indexClient.GetSearchClient(indexName);
var documentCountResponse = await searchClient.GetDocumentCountAsync(
cancellationToken);
return documentCountResponse.Value;
}
}
Para mais informações, consulte a biblioteca Azure AI Search client na .NET para ver exemplos de como usar o SearchIndexClient
.
Utilização do anfitrião da aplicação
Para adicionar Azure suporte de hospedagem de IA ao seu IDistributedApplicationBuilder, instale o 📦Aspire. Hospedagem.Azure. Pesquise pacote NuGet no aplicativo host projeto.
- .NET CLI
- PackageReference
dotnet add package Aspire.Hosting.Azure.Search
No arquivo Program.cs de AppHost
, adicione um serviço de Pesquisa Azure e consuma a conexão usando as seguintes maneiras:
var builder = DistributedApplication.CreateBuilder(args);
var search = builder.ExecutionContext.IsPublishMode
? builder.AddAzureSearch("search")
: builder.AddConnectionString("search");
var myService = builder.AddProject<Projects.MyService>()
.WithReference(search);
O método AddAzureSearch lerá as informações de conexão da configuração do AppHost (por exemplo, de "segredos do usuário") sob a chave de configuração ConnectionStrings:search
. O método WithReference
passa essas informações de conexão para uma cadeia de conexão chamada search
no projeto MyService
. No arquivo Program.cs de MyService
, a conexão pode ser utilizada através de:
builder.AddAzureSearch("search");
Configuração
A biblioteca .NET AspireAzureAzure Search fornece várias opções para configurar o Serviço de Pesquisa Azure com base nos requisitos e convenções do seu projeto. Tenha em atenção que é necessário fornecer um Endpoint
ou um ConnectionString
.
Usar uma cadeia de conexão
Uma conexão pode ser construída na guia Chaves e Endpoint com o formato Endpoint={endpoint};Key={key};
. Você pode fornecer o nome da cadeia de conexão ao chamar builder.AddAzureSearch()
:
builder.AddAzureSearch("searchConnectionName");
E, em seguida, a cadeia de conexão será recuperada da seção de configuração ConnectionStrings
. Dois formatos de conexão são suportados:
Ponto final da conta
A abordagem recomendada é usar um Endpoint
, que funciona com a propriedade AzureSearchSettings.Credential
para estabelecer uma conexão. Se nenhuma credencial estiver configurada, o DefaultAzureCredential será usado.
{
"ConnectionStrings": {
"searchConnectionName": "https://{search_service}.search.windows.net/"
}
}
Cadeia de conexão
Como alternativa, uma cadeia de conexão personalizada pode ser usada.
{
"ConnectionStrings": {
"searchConnectionName": "Endpoint=https://{search_service}.search.windows.net/;Key={account_key};"
}
}
Usar provedores de configuração
A biblioteca .NET AspireAzure AI Search suporta Microsoft.Extensions.Configuration. Ele carrega o AzureSearchSettings
e o SearchClientOptions
da configuração usando a chave Aspire:Azure:Search:Documents
. Exemplo de appsettings.json que configura algumas das opções:
{
"Aspire": {
"Azure": {
"Search": {
"Documents": {
"DisableTracing": false,
}
}
}
}
}
Usar delegados em linha
Você também pode passar o delegado Action<AzureSearchSettings> configureSettings
para configurar algumas ou todas as opções em linha, por exemplo, para desativar o rastreamento no código:
builder.AddAzureSearch(
"searchConnectionName",
static settings => settings.DisableTracing = true);
Você também pode configurar o SearchClientOptions usando o parâmetro Action<IAzureClientBuilder<SearchIndexClient, SearchClientOptions>> configureClientBuilder
opcional do método AddAzureSearch
. Por exemplo, para definir o ID de client para este client:
builder.AddAzureSearch(
"searchConnectionName",
configureClientBuilder: builder => builder.ConfigureOptions(
static options => options.Diagnostics.ApplicationId = "CLIENT_ID"));
Controlos sanitários
Por padrão, as integrações .NET.NET Aspire habilitam verificações de integridade para todos os serviços. Para obter mais informações, consulte .NET.NET Aspire visão geral das integrações.
A integração .NET AspireAzure AI Search Documents implementa uma única verificação de integridade, que chama o método GetServiceStatisticsAsync no SearchIndexClient
para verificar se o serviço está disponível.
Observabilidade e telemetria
.NET .NET Aspire integrações configuram automaticamente as configurações de Logging, Trace e Metrics, que às vezes são conhecidas como os pilares da observabilidade. Para obter mais informações sobre observabilidade e telemetria de integração, consulte Visão geral de integrações .NET.NET Aspire. Dependendo do serviço de suporte, algumas integrações podem suportar apenas alguns desses recursos. Por exemplo, algumas integrações suportam registro em log e rastreamento, mas não métricas. Os recursos de telemetria também podem ser desativados usando as técnicas apresentadas na seção de configuração .
Registo
A integração .NET AspireAzure AI Search Documents usa as seguintes categorias de log:
Azure
Azure.Core
Azure.Identity