Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Peringatan
Fungsionalitas Pencarian Teks Kernel Semantik adalah pratinjau, dan peningkatan yang memerlukan perubahan yang melanggar mungkin masih terjadi dalam keadaan terbatas sebelum rilis.
Semantic Kernel menyediakan kemampuan yang memungkinkan pengembang untuk mengintegrasikan pencarian saat memanggil Model Bahasa Besar (LLM). Ini penting karena LLM dilatih pada himpunan data tetap dan mungkin memerlukan akses ke data tambahan untuk merespons permintaan pengguna secara akurat.
Proses penyediaan konteks tambahan saat meminta LLM disebut Retrieval-Augmented Generation (RAG). RAG biasanya melibatkan pengambilan data tambahan yang relevan dengan permintaan pengguna saat ini dan menambah prompt yang dikirim ke LLM dengan data ini. LLM dapat menggunakan pelatihannya ditambah konteks tambahan untuk memberikan respons yang lebih akurat.
Contoh sederhana ketika ini menjadi penting adalah ketika permintaan pengguna terkait dengan informasi terbaru yang tidak disertakan dalam himpunan data pelatihan LLM. Dengan melakukan pencarian teks yang sesuai dan menyertakan hasilnya dengan permintaan pengguna, respons yang lebih akurat akan dicapai.
Kernel Semantik menyediakan serangkaian kemampuan Pencarian Teks yang memungkinkan pengembang melakukan pencarian menggunakan Web Search atau Vector Database dan dengan mudah menambahkan RAG ke aplikasi mereka.
Menerapkan RAG menggunakan pencarian teks web
Dalam kode sampel berikut, Anda dapat memilih antara menggunakan Bing atau Google untuk melakukan operasi pencarian web.
Tip
Untuk menjalankan sampel yang ditampilkan di halaman ini, buka GettingStartedWithTextSearch/Step1_Web_Search.cs.
Membuat instans pencarian teks
Setiap sampel membuat instans pencarian teks lalu melakukan operasi pencarian untuk mendapatkan hasil untuk kueri yang disediakan. Hasil pencarian akan berisi cuplikan teks dari halaman web yang menjelaskan isinya. Ini hanya menyediakan konteks terbatas yaitu, subset konten halaman web dan tidak ada tautan ke sumber informasi. Sampel selanjutnya menunjukkan cara mengatasi batasan ini.
Tip
Kode sampel berikut menggunakan konektor Semantic Kernel OpenAI dan plugin Web, instal menggunakan perintah berikut:
dotnet add package Microsoft.SemanticKernel
dotnet add package Microsoft.SemanticKernel.Plugins.Web
Penelusuran web Bing
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);
}
Pencarian web Google
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);
}
Tip
Untuk informasi selengkapnya tentang jenis hasil pencarian apa yang dapat diambil, lihat dokumentasi tentang Plugin Pencarian Teks.
Menggunakan hasil pencarian teks untuk menambah perintah
Langkah selanjutnya adalah membuat Plugin dari pencarian teks web dan memanggil Plugin untuk menambahkan hasil pencarian ke prompt.
Kode sampel di bawah ini menunjukkan cara mencapai hal ini:
- Buat yang
Kernelmemiliki layanan OpenAI yang terdaftar. Ini akan digunakan untuk memanggilgpt-4omodel dengan perintah . - Membuat instans pencarian teks.
- Buat Plugin Pencarian dari instans pencarian teks.
- Buat templat perintah yang akan memanggil Plugin Pencarian dengan kueri dan sertakan hasil pencarian dalam perintah bersama dengan kueri asli.
- Panggil perintah dan tampilkan respons.
Model akan memberikan respons yang di-grounded dalam informasi terbaru yang tersedia dari pencarian web.
Penelusuran web Bing
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));
Pencarian web Google
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));
Ada sejumlah masalah dengan sampel di atas:
- Respons tidak menyertakan kutipan yang menunjukkan halaman web yang digunakan untuk memberikan konteks grounding.
- Respons akan mencakup data dari situs web mana pun, akan lebih baik untuk membatasi ini ke situs tepercaya.
- Hanya cuplikan setiap halaman web yang digunakan untuk memberikan konteks grounding ke model, cuplikan mungkin tidak berisi data yang diperlukan untuk memberikan respons yang akurat.
Lihat halaman yang menjelaskan Plugin Pencarian Teks untuk solusi untuk masalah ini.
Selanjutnya sebaiknya lihat Abstraksi Pencarian Teks.
Segera hadir
Lebih segera datang.
Segera hadir
Lebih segera datang.