Aracılığıyla paylaş


Semantik Çekirdek Metin Arama nedir?

Uyarı

Semantik Çekirdek Metin Arama işlevi önizleme aşamasındadır ve hataya neden olan değişiklikler gerektiren iyileştirmeler, sürümden önce sınırlı koşullarda yine de gerçekleşebilir.

Anlam Çekirdeği, geliştiricilerin Büyük Dil Modeli (LLM) çağırırken aramayı tümleştirmesine olanak sağlayan özellikler sağlar. LLM'ler sabit veri kümelerinde eğitildiğinden ve kullanıcının isteğine doğru yanıt vermek için ek verilere erişmesi gerekebileceğinden bu önemlidir.

LLM istenirken ek bağlam sağlama işlemi, Alma Artırılmış Oluşturma (RAG) olarak adlandırılır. RAG genellikle geçerli kullanıcı isteğiyle ilgili ek verilerin alınmasını ve LLM'ye gönderilen istemi bu verilerle artırmayı içerir. LLM, daha doğru bir yanıt sağlamak için eğitimini ve ek bağlamını kullanabilir.

Bunun ne zaman önemli hale geldiğinin basit bir örneği, kullanıcının sormasının LLM'nin eğitim veri kümesine dahil edilmeyen güncel bilgilerle ilgili olmasıdır. Uygun bir metin araması gerçekleştirerek ve sonuçları kullanıcının isteğine dahil ederek daha doğru yanıtlar elde edilir.

Semantik Çekirdek, geliştiricilerin Web Araması veya Vektör Veritabanlarını kullanarak arama yapmalarına ve uygulamalarına kolayca RAG eklemelerine olanak sağlayan bir dizi Metin Arama özelliği sağlar.

Aşağıdaki örnek kodda, web araması işlemleri gerçekleştirmek için Bing veya Google'ı kullanmayı seçebilirsiniz.

İpucu

Bu sayfada gösterilen örnekleri çalıştırmak için GettingStartedWithTextSearch/Step1_Web_Search.cs bölümüne gidin.

Metin arama örneği oluşturma

Her örnek bir metin arama örneği oluşturur ve sağlanan sorgunun sonuçlarını almak için bir arama işlemi gerçekleştirir. Arama sonuçları, web sayfasından içeriğini açıklayan bir metin parçacığı içerir. Bu, yalnızca sınırlı bir bağlam sağlar; örneğin, web sayfası içeriğinin bir alt kümesidir ve bilgilerin kaynağına bağlantı sağlamaz. Daha sonraki örneklerde bu sınırlamaların nasıl ele alınacakları gösterilmektedir.

İpucu

Aşağıdaki örnek kod Semantik Çekirdek OpenAI bağlayıcısını ve Web eklentilerini kullanır ve aşağıdaki komutları kullanarak yükleyin:

dotnet add package Microsoft.SemanticKernel
dotnet add package Microsoft.SemanticKernel.Plugins.Web

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);
}
using Microsoft.SemanticKernel.Data;
using Microsoft.SemanticKernel.Plugins.Web.Google;

// Create an ITextSearch instance using Google search
var textSearch = new GoogleTextSearch(
    searchEngineId: "<Your Google Search Engine Id>",
    apiKey: "<Your Google 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);
}

İpucu

Hangi tür arama sonuçlarının alınabileceği hakkında daha fazla bilgi için Metin Arama Eklentileri belgelerine bakın.

İstemi artırmak için metin arama sonuçlarını kullanma

Sonraki adımlar, web metin aramasından bir Eklenti oluşturmak ve arama sonuçlarını istemine eklemek için Eklentiyi çağırmaktır.

Aşağıdaki örnek kodda bunun nasıl elde edileci gösterilmektedir:

  1. Kayıtlı bir Kernel OpenAI hizmeti olan bir oluşturun. Bu komut istemiyle modeli çağırmak gpt-4o için kullanılır.
  2. Metin arama örneği oluşturma.
  3. Metin arama örneğinden bir Arama Eklentisi oluşturun.
  4. Arama Eklentisi'ni sorguyla çağıracak ve özgün sorguyla birlikte istemde arama sonuçlarını dahil edecek bir istem şablonu oluşturun.
  5. İstemi çağırın ve yanıtı görüntüleyin.

Model, bir web aramasından elde edilen en son bilgilerle temel alınan bir yanıt sağlar.

Bing web araması

using Microsoft.SemanticKernel.Data;
using Microsoft.SemanticKernel.Plugins.Web.Bing;

// Create a kernel with OpenAI chat completion
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddOpenAIChatCompletion(
        modelId: "gpt-4o",
        apiKey: "<Your OpenAI API Key>");
Kernel kernel = kernelBuilder.Build();

// Create a text search using Bing search
var textSearch = new BingTextSearch(apiKey: "<Your Bing API Key>");

// Build a text search plugin with Bing search and add to the kernel
var searchPlugin = textSearch.CreateWithSearch("SearchPlugin");
kernel.Plugins.Add(searchPlugin);

// Invoke prompt and use text search plugin to provide grounding information
var query = "What is the Semantic Kernel?";
var prompt = "{{SearchPlugin.Search $query}}. {{$query}}";
KernelArguments arguments = new() { { "query", query } };
Console.WriteLine(await kernel.InvokePromptAsync(prompt, arguments));

Google web araması

using Microsoft.SemanticKernel.Data;
using Microsoft.SemanticKernel.Plugins.Web.Google;

// Create a kernel with OpenAI chat completion
IKernelBuilder kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddOpenAIChatCompletion(
        modelId: "gpt-4o",
        apiKey: "<Your OpenAI API Key>");
Kernel kernel = kernelBuilder.Build();

// Create an ITextSearch instance using Google search
var textSearch = new GoogleTextSearch(
    searchEngineId: "<Your Google Search Engine Id>",
    apiKey: "<Your Google API Key>");

// Build a text search plugin with Google search and add to the kernel
var searchPlugin = textSearch.CreateWithSearch("SearchPlugin");
kernel.Plugins.Add(searchPlugin);

// Invoke prompt and use text search plugin to provide grounding information
var query = "What is the Semantic Kernel?";
var prompt = "{{SearchPlugin.Search $query}}. {{$query}}";
KernelArguments arguments = new() { { "query", query } };
Console.WriteLine(await kernel.InvokePromptAsync(prompt, arguments));

Yukarıdaki örnekle ilgili birkaç sorun vardır:

  1. Yanıt, temel oluşturma bağlamı sağlamak için kullanılan web sayfalarını gösteren alıntıları içermez.
  2. Yanıt herhangi bir web sitesindeki verileri içerecektir, bunu güvenilen sitelere sınırlamak daha iyi olacaktır.
  3. Modele topraklama bağlamı sağlamak için her web sayfasının yalnızca bir kod parçacığı kullanılıyor, kod parçacığı doğru bir yanıt sağlamak için gereken verileri içermeyebilir.

Bu sorunların çözümleri için Metin Arama Eklentilerini açıklayan sayfaya bakın.

Ardından Metin Arama Özetleri'ne bakmanızı öneririz.

Yakında

Daha fazlası çok yakında.

Yakında

Daha fazlası çok yakında.

Sonraki adımlar