Dela via


Varför behövs abstraktioner för textsökning?

När du hanterar textprompter eller textinnehåll i chatthistoriken är ett vanligt krav att tillhandahålla ytterligare relevant information som rör den här texten. Detta ger AI-modellen relevant kontext som hjälper den att ge mer exakta svar. För att uppfylla detta krav tillhandahåller semantisk kernel en abstraktion för textsökning som tillåter användning av textindata från olika källor, t.ex. webbsökmotorer, vektorlager osv., och ger resultat i några standardiserade format.

Kommentar

Sökning efter bildinnehåll eller ljudinnehåll stöds inte för närvarande.

Abstraktion för textsökning

Sammanfattningar av semantisk kerneltextsökning innehåller tre metoder:

  1. Search
  2. GetSearchResults
  3. GetTextSearchResults

Utför en sökning efter innehåll som är relaterat till den angivna frågan och returnerar strängvärden som representerar sökresultaten. Search kan användas i de mest grundläggande användningsfallen, t.ex. när du utökar en semantic-kernel mall för formatprompt med sökresultat. Search returnerar alltid bara ett enda strängvärde per sökresultat, så det är inte lämpligt om citat krävs.

GetSearchResults

Utför en sökning efter innehåll som är relaterat till den angivna frågan och returnerar sökresultat i det format som definierats av implementeringen. GetSearchResults returnerar det fullständiga sökresultatet enligt definitionen i den underliggande söktjänsten. Detta ger den mest mångsidiga metoden på bekostnad av att koppla koden till en specifik implementering av söktjänsten.

GetTextSearchResults

Utför en sökning efter innehåll som är relaterat till den angivna frågan och returnerar en normaliserad datamodell som representerar sökresultaten. Den här normaliserade datamodellen innehåller ett strängvärde och eventuellt ett namn och en länk. GetTextSearchResults tillåter att koden isoleras från en specifik implementering av söktjänsten, så att samma fråga kan användas med flera olika söktjänster.

Dricks

Om du vill köra exemplen som visas på den här sidan går du till GettingStartedWithTextSearch/Step1_Web_Search.cs.

Exempelkoden nedan visar var och en av de metoder för textsökning som används.

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

Kommer snart

Fler kommer snart.

Kommer snart

Fler kommer snart.

Nästa steg