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:
Search
GetSearchResults
GetTextSearchResults
Search
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.