Compartilhar via


Por que as abstrações de Pesquisa de Texto são necessárias?

Ao lidar com prompts de texto ou conteúdo de texto no histórico de bate-papo, um requisito comum é fornecer informações adicionais relevantes relacionadas a esse texto. Isso fornece ao modelo de IA um contexto relevante que o ajuda a fornecer respostas mais precisas. Para atender a esse requisito, o Kernel Semântico fornece uma abstração de Pesquisa de Texto que permite o uso de entradas de texto de várias fontes, por exemplo, mecanismos de pesquisa na Web, armazenamentos de vetores, etc., e fornece resultados em alguns formatos padronizados.

Observação

No momento, não há suporte para a pesquisa de conteúdo de imagem ou conteúdo de áudio.

Abstração de pesquisa de texto

As abstrações de pesquisa de texto do Kernel Semântico fornecem três métodos:

  1. Search
  2. GetSearchResults
  3. GetTextSearchResults

Executa uma pesquisa de conteúdo relacionado à consulta especificada e retorna valores de cadeia de caracteres que representam os resultados da pesquisa. Search pode ser usado nos casos de uso mais básicos, por exemplo, ao aumentar um modelo de semantic-kernel prompt de formato com resultados de pesquisa. Search sempre retorna apenas um único valor de string por resultado de pesquisa, portanto, não é adequado se as citações forem necessárias.

GetSearchResults

Executa uma pesquisa de conteúdo relacionado à consulta especificada e retorna os resultados da pesquisa no formato definido pela implementação. GetSearchResults Retorna o resultado completo da pesquisa, conforme definido pelo serviço de pesquisa subjacente. Isso fornece a maior versatilidade ao custo de vincular seu código a uma implementação de serviço de pesquisa específica.

GetTextSearchResults

Executa uma pesquisa de conteúdo relacionado à consulta especificada e retorna um modelo de dados normalizado que representa os resultados da pesquisa. Esse modelo de dados normalizado inclui um valor de cadeia de caracteres e, opcionalmente, um nome e um link. GetTextSearchResults Permite que seu código seja isolado da implementação de um serviço de pesquisa específico, para que o mesmo prompt possa ser usado com vários serviços de pesquisa diferentes.

Dica

Para executar os exemplos mostrados nesta página, acesse GettingStartedWithTextSearch/Step1_Web_Search.cs.

O código de exemplo abaixo mostra cada um dos métodos de pesquisa de texto em ação.

using Microsoft.SemanticKernel.Data;
using Microsoft.SemanticKernel.Plugins.Web.Bing;

// Create an ITextSearch instance using Bing search
var textSearch = new BingTextSearch(apiKey: "<Your Bing API Key>");

var query = "What is the Semantic Kernel?";

// Search and return results
KernelSearchResults<string> searchResults = await textSearch.SearchAsync(query, new() { Top = 4 });
await foreach (string result in searchResults.Results)
{
    Console.WriteLine(result);
}

// Search and return results as BingWebPage items
KernelSearchResults<object> webPages = await textSearch.GetSearchResultsAsync(query, new() { Top = 4 });
await foreach (BingWebPage webPage in webPages.Results)
{
    Console.WriteLine($"Name:            {webPage.Name}");
    Console.WriteLine($"Snippet:         {webPage.Snippet}");
    Console.WriteLine($"Url:             {webPage.Url}");
    Console.WriteLine($"DisplayUrl:      {webPage.DisplayUrl}");
    Console.WriteLine($"DateLastCrawled: {webPage.DateLastCrawled}");
}

// Search and return results as TextSearchResult items
KernelSearchResults<TextSearchResult> textResults = await textSearch.GetTextSearchResultsAsync(query, new() { Top = 4 });
await foreach (TextSearchResult result in textResults.Results)
{
    Console.WriteLine($"Name:  {result.Name}");
    Console.WriteLine($"Value: {result.Value}");
    Console.WriteLine($"Link:  {result.Link}");
}

Em breve

Mais em breve.

Em breve

Mais em breve.

Próximas etapas