Partilhar via


.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

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.

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.

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

Ver também