次の方法で共有


テキスト検索の抽象化が必要な理由

チャット履歴でテキスト プロンプトまたはテキスト コンテンツを処理する場合、一般的な要件は、このテキストに関連する追加の関連情報を提供することです。 これにより、AI モデルに関連するコンテキストが提供され、より正確な応答を提供するのに役立ちます。 この要件を満たすために、セマンティック カーネルは、Web 検索エンジン、ベクター ストアなどのさまざまなソースからのテキスト入力を使用できるテキスト検索抽象化を提供し、いくつかの標準化された形式で結果を提供します。

Note

画像コンテンツまたはオーディオ コンテンツの検索は現在サポートされていません。

テキスト検索の抽象化

セマンティック カーネルのテキスト検索の抽象化には、次の 3 つの方法があります。

  1. Search
  2. GetSearchResults
  3. GetTextSearchResults

指定したクエリに関連するコンテンツの検索を実行し、検索結果を表す文字列値を返します。 Search は、最も基本的なユース ケースで使用できます。たとえば、検索結果で semantic-kernel 形式のプロンプト テンプレートを拡張する場合などです。 Search は常に検索結果ごとに 1 つの文字列値のみを返します。したがって、引用が必要な場合は適していません。

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

間もなく利用できます

詳細は近日公開予定です。

間もなく利用できます

詳細は近日公開予定です。

次のステップ