Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Uyarı
Semantik Çekirdek Metin Arama işlevi önizleme sürümündedir ve geriye dönük uyumluluğu bozan değişiklikler gerektiren iyileştirmeler, yayınlanmadan önce sınırlı durumlarda 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.
Bir LLM’ye istem verilirken ek bağlam sağlama sürecine Retrieval-Augmented Generation (RAG) adı verilir. 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.
Metin aramanın vektör aramasından farkı nedir?
Semantik Çekirdek, farklı soyutlama düzeylerinde veri alma gerçekleştirmek için API'ler sağlar.
Metin araması, girişin temel filtreleme desteğine sahip metin olduğu yığında yüksek düzeyde aramaya olanak tanır. Metin arama arabirimi, yalnızca basit bir dize döndürme desteği de dahil olmak üzere çeşitli çıkış türlerini destekler. Bu, metin aramanın web arama motorları ve vektör depoları dahil olmak üzere birçok uygulamayı desteklemesine olanak tanır. Metin aramanın temel amacı, sohbetin tamamlanması için eklenti olarak gösterilebilen basit bir arabirim sağlamaktır.
İpucu
Kullanıma hazır tüm metin araması uygulamaları için bkz. Kullanıma Hazır Metin Araması.
Vektör araması, girişin vektör olduğu yığında daha düşük bir düzeyde yer alır. Ayrıca temel filtrelemeyi ve giriş vektörlerini karşılaştırmak için veri deposundan bir vektör seçmeyi destekler. Veri deposundaki verileri içeren bir veri modeli döndürür.
RAG'ı Vektör depolarıyla yapmak istediğinizde, metin arama ve vektör aramasını birlikte kullanmak mantıklıdır. Bunu gerçekleştirmenin yolu, vektör aramasını destekleyen bir vektör deposu koleksiyonunu metin araması ile sarmalama ve ardından metin aramasını sohbet tamamlamaya bir eklenti olarak göstermedir. Semantik Çekirdek bunu kutudan kolayca yapabilme olanağı sağlar. Bunun nasıl yapacağı hakkında daha fazla bilgi için aşağıdaki ipuçlarına bakın.
İpucu
Vektör aramasının chat completion’a nasıl sunulacağını görmek için bkz. Semantik Çekirdek Metin Araması ile Vektör Depoları Nasıl Kullanılır.
İpucu
Vektör depoları ve vektör araması hakkında daha fazla bilgi için bkz. Semantik Çekirdek Vector Store bağlayıcıları nelerdir?.
Web metin araması kullanarak RAG uygulama
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
Bing web araması
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);
}
Google web araması
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:
- OpenAI hizmeti kayıtlı olan bir
Kerneloluşturun. Bu, istemlegpt-4omodelini çağırmak için kullanılacaktır. - Metin arama örneği oluşturma.
- Metin arama örneğinden bir Arama Eklentisi oluşturun.
- Arama Eklentisi'ni sorguyla çağıracak ve özgün sorguyla birlikte istemde arama sonuçlarını dahil edecek bir istem şablonu oluşturun.
- İ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:
- Yanıt, temel oluşturma bağlamı sağlamak için kullanılan web sayfalarını gösteren alıntıları içermez.
- Yanıt herhangi bir web sitesindeki verileri içerecektir, bunu güvenilen sitelere sınırlamak daha iyi olacaktır.
- 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.