Por que as abstrações da 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 este requisito, o Kernel Semântico fornece uma abstração de Pesquisa de Texto que permite usar entradas de texto de várias fontes, por exemplo, mecanismos de pesquisa na Web, repositórios vetoriais, etc., e fornecer resultados em alguns formatos padronizados.

Nota

Atualmente, não há suporte para a pesquisa de conteúdo de imagem ou á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 complementar um modelo de prompt no formato semantic-kernel com resultados de pesquisa. Search sempre retorna apenas um único valor de cadeia de caracteres por resultado da 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.

Gorjeta

Para executar os exemplos mostrados nesta página, vá para 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}");
}

Brevemente

Mais em breve.

Brevemente

Mais em breve.

Próximos passos