Поделиться через


Почему требуются абстракции поиска текста?

При работе с текстовыми запросами или текстовым содержимым в журнале чата часто требуется предоставить дополнительные сведения, связанные с этим текстом. Это обеспечивает модель искусственного интеллекта с соответствующим контекстом, который помогает обеспечить более точные ответы. Для удовлетворения этого требования семантический ядро предоставляет абстракцию поиска текста, которая позволяет использовать текстовые входные данные из различных источников, например веб-поисковые системы, векторные хранилища и т. д., а также предоставлять результаты в нескольких стандартных форматах.

Примечание.

Поиск содержимого изображения или звукового содержимого в настоящее время не поддерживается.

Абстракция поиска текста

Абстракции поиска текста семантического ядра предоставляют три метода:

  1. Search
  2. GetSearchResults
  3. GetTextSearchResults

Выполняет поиск содержимого, связанного с указанным запросом, и возвращает строковые значения, представляющие результаты поиска. Search можно использовать в наиболее простых вариантах использования, например при увеличении semantic-kernel шаблона запроса формата с результатами поиска. Search всегда возвращает только одно строковое значение для результата поиска, поэтому не подходит, если ссылки необходимы.

GetSearchResults

Выполняет поиск содержимого, связанного с указанным запросом, и возвращает результаты поиска в формате, определенном реализацией. GetSearchResults возвращает полный результат поиска, определенный базовой службой поиска. Это обеспечивает большую гибкость в стоимости привязки кода к определенной реализации службы поиска.

GetTextSearchResults

Выполняет поиск содержимого, связанного с указанным запросом, и возвращает нормализованную модель данных, представляющую результаты поиска. Эта нормализованная модель данных включает строковое значение и при необходимости имя и ссылку. GetTextSearchResults позволяет изолировать код от конкретной реализации службы поиска, поэтому один и тот же запрос можно использовать с несколькими разными службами поиска.

Совет

Чтобы запустить примеры, показанные на этой странице, перейдите в раздел GettingStartedWithTextSearch/Step1_Web_Search.cs.

В приведенном ниже примере кода показаны все методы поиска текста в действии.

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}");
}

Скоро

В ближайшее время будет больше.

Скоро

В ближайшее время будет больше.

Следующие шаги