¿Por qué se necesitan abstracciones de Text Search?
Al tratar con mensajes de texto o contenido de texto en el historial de chat, un requisito común es proporcionar información relevante adicional relacionada con este texto. Esto proporciona al modelo de IA un contexto relevante que le ayuda a proporcionar respuestas más precisas. Para cumplir este requisito, el kernel semántico proporciona una abstracción de búsqueda de texto que permite usar entradas de texto de varios orígenes, por ejemplo, motores de búsqueda web, almacenes de vectores, etc., y proporcionar resultados en algunos formatos estandarizados.
Nota:
Actualmente no se admite la búsqueda de contenido de imagen o contenido de audio.
Abstracción de búsqueda de texto
Las abstracciones de búsqueda de texto del kernel semántico proporcionan tres métodos:
Search
GetSearchResults
GetTextSearchResults
Search
Realiza una búsqueda de contenido relacionado con la consulta especificada y devuelve valores de cadena que representan los resultados de búsqueda. Search
se puede usar en los casos de uso más básicos, por ejemplo, al aumentar una semantic-kernel
plantilla de solicitud de formato con resultados de búsqueda. Search
siempre devuelve solo un valor de cadena único por resultado de búsqueda, por lo que no es adecuado si se requieren citas.
GetSearchResults
Realiza una búsqueda de contenido relacionado con la consulta especificada y devuelve resultados de búsqueda en el formato definido por la implementación. GetSearchResults
devuelve el resultado de búsqueda completo, tal como se define en el servicio de búsqueda subyacente. Esto proporciona la mayor versatilidad a costa de poner el código en una implementación específica del servicio de búsqueda.
GetTextSearchResults
Realiza una búsqueda de contenido relacionado con la consulta especificada y devuelve un modelo de datos normalizado que representa los resultados de la búsqueda. Este modelo de datos normalizado incluye un valor de cadena y, opcionalmente, un nombre y un vínculo. GetTextSearchResults
permite que el código se aísle de una implementación específica del servicio de búsqueda, por lo que se puede usar el mismo símbolo del sistema con varios servicios de búsqueda diferentes.
Sugerencia
Para ejecutar los ejemplos que se muestran en esta página, vaya a GettingStartedWithTextSearch/Step1_Web_Search.cs.
El código de ejemplo siguiente muestra cada uno de los métodos de búsqueda de texto en acción.
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}");
}
Próximamente
Más próximamente.
Próximamente
Más próximamente.