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.
Nota
Fitur ini saat ini dalam pratinjau publik. Pratinjau ini disediakan tanpa perjanjian tingkat layanan dan tidak direkomendasikan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk informasi lebih lanjut, lihat Supplemental Terms of Use for Microsoft Azure Previews.
Di Azure AI Search, pangkalan pengetahuan adalah objek tingkat atas yang mengatur pengambilan agenik. Ini menentukan sumber pengetahuan mana yang akan dikueri dan perilaku default untuk operasi pengambilan. Pada waktu kueri, metode ambil menargetkan pangkalan pengetahuan untuk menjalankan alur pengambilan yang dikonfigurasi.
Anda dapat membuat pangkalan pengetahuan dalam beban kerja Foundry IQ di portal Microsoft Foundry (baru). Anda juga memerlukan pangkalan pengetahuan dalam solusi agenik apa pun yang Anda buat menggunakan API Pencarian Azure AI.
Pangkalan pengetahuan menentukan:
- Satu atau beberapa sumber pengetahuan yang menunjuk ke konten yang dapat dicari.
- LLM opsional yang menyediakan kemampuan penalaran untuk perencanaan kueri dan rumusan jawaban.
- Upaya penalaran pengambilan yang menentukan apakah LLM dipanggil dan mengelola biaya, latensi, dan kualitas.
- Properti kustom yang mengontrol perutean, pemilihan sumber, format output, dan enkripsi objek.
Setelah membuat pangkalan pengetahuan, Anda dapat memperbarui propertinya kapan saja. Jika pangkalan pengetahuan sedang digunakan, pembaruan akan berlaku pada pengambilan berikutnya.
Penting
2025-11-01-pratinjau mengganti nama "agen pengetahuan" dari pratinjau 2025-08-01 menjadi "pangkalan pengetahuan." Ini adalah perubahan yang mengganggu kompatibilitas. Sebaiknya migrasikan kode yang ada ke API baru sesegera mungkin.
Prasyarat
Azure AI Search di mana saja di wilayah yang menyediakan pengambilan berbasis agen. Anda harus mengaktifkan ranker semantik. Jika Anda menggunakan identitas terkelola untuk akses berbasis peran ke model yang disebarkan, layanan pencarian Anda harus berada di tingkat harga Dasar atau yang lebih tinggi.
Azure OpenAI menggunakan proses penyebaran LLM yang didukung.
Satu atau beberapa sumber pengetahuan di layanan pencarian Anda.
Izin untuk membuat dan menggunakan objek di Azure AI Search. Kami merekomendasikan akses berbasis peran. Kontributor Layanan Pencarian dapat membuat dan mengelola pangkalan pengetahuan. Pembaca Data Indeks Pencarian dapat menjalankan kueri. Atau, Anda dapat menggunakan kunci API jika penetapan peran tidak layak. Untuk informasi selengkapnya, lihat Menyambungkan ke layanan pencarian.
Versi pratinjau terbaru dari pustaka klien untuk Python.
Model yang didukung
Gunakan salah satu LLM berikut dari Azure OpenAI atau model sumber terbuka yang setara. Untuk instruksi penyebaran, lihat Menyebarkan model Azure OpenAI dengan Microsoft Foundry.
gpt-4ogpt-4o-minigpt-4.1gpt-4.1-nanogpt-4.1-minigpt-5gpt-5-nanogpt-5-mini
Mengonfigurasi akses
Pencarian Azure AI memerlukan akses ke LLM dari Azure OpenAI. Kami merekomendasikan ID Microsoft Entra untuk autentikasi dan akses berbasis peran untuk otorisasi. Untuk menetapkan peran, Anda harus menjadi Pemilik atau Administrator Akses Pengguna. Jika Anda tidak dapat menggunakan peran, gunakan autentikasi berbasis kunci sebagai gantinya.
Konfigurasikan Azure AI Search untuk menggunakan identitas terkelola.
Pada penyedia model Anda, seperti Model Foundry, tetapkan Pengguna Cognitive Services ke identitas terkelola layanan pencarian Anda. Jika Anda menguji secara lokal, tetapkan peran yang sama ke akun pengguna Anda.
Untuk pengujian lokal, ikuti langkah-langkah di Mulai Cepat: Sambungkan tanpa Kunci untuk masuk ke langganan dan tenant tertentu. Gunakan
DefaultAzureCredentialalih-alihAzureKeyCredentialdi setiap permintaan, yang akan terlihat mirip dengan contoh berikut:using Azure.Search.Documents.Indexes; using Azure.Identity; var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new DefaultAzureCredential());
Penting
Cuplikan kode dalam artikel ini menggunakan kunci API. Jika Anda menggunakan autentikasi berbasis peran, perbarui setiap permintaan yang sesuai. Dalam permintaan yang menentukan kedua pendekatan, kunci API lebih diutamakan.
Periksa pangkalan pengetahuan yang ada
Mengetahui tentang pangkalan pengetahuan yang ada sangat membantu untuk menggunakannya kembali atau penamaan objek baru. Setiap agen informasi pratinjau versi 2025-08-01 dikembalikan dalam koleksi basis pengetahuan.
Jalankan kode berikut untuk mencantumkan pangkalan pengetahuan yang ada berdasarkan nama.
// List knowledge bases by name
using Azure.Search.Documents.Indexes;
var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);
var knowledgeBases = indexClient.GetKnowledgeBasesAsync();
Console.WriteLine("Knowledge Bases:");
await foreach (var kb in knowledgeBases)
{
Console.WriteLine($" - {kb.Name}");
}
Anda juga dapat mengembalikan satu pangkalan pengetahuan berdasarkan nama untuk meninjau definisi JSON-nya.
using Azure.Search.Documents.Indexes;
using System.Text.Json;
var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);
// Specify the knowledge base name to retrieve
string kbNameToGet = "earth-knowledge-base";
// Get a specific knowledge base definition
var knowledgeBaseResponse = await indexClient.GetKnowledgeBaseAsync(kbNameToGet);
var kb = knowledgeBaseResponse.Value;
// Serialize to JSON for display
string json = JsonSerializer.Serialize(kb, new JsonSerializerOptions { WriteIndented = true });
Console.WriteLine(json);
JSON berikut adalah contoh pangkalan pengetahuan.
{
"Name": "earth-knowledge-base",
"KnowledgeSources": [
{
"Name": "earth-knowledge-source"
}
],
"Models": [
{}
],
"RetrievalReasoningEffort": {},
"OutputMode": {},
"ETag": "\u00220x8DE278629D782B3\u0022",
"EncryptionKey": null,
"Description": null,
"RetrievalInstructions": null,
"AnswerInstructions": null
}
Membuat basis pengetahuan
Pangkalan pengetahuan mendorong alur pengambilan agenik. Dalam kode aplikasi, agen atau chatbot lain memanggilnya.
Pangkalan pengetahuan menghubungkan sumber pengetahuan (konten yang dapat dicari) ke penyebaran LLM dari Azure OpenAI. Properti pada LLM membuat koneksi, sementara properti pada sumber pengetahuan menetapkan default yang menginformasikan eksekusi kueri dan respons.
Jalankan kode berikut untuk membuat pangkalan pengetahuan.
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.KnowledgeBases.Models;
var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);
// Create a knowledge base
var knowledgeBase = new KnowledgeBase(
name: knowledgeBaseName,
knowledgeSources: new KnowledgeSourceReference[] { new KnowledgeSourceReference(knowledgeSourceName) }
)
{
RetrievalReasoningEffort = new KnowledgeRetrievalLowReasoningEffort(),
OutputMode = KnowledgeRetrievalOutputMode.AnswerSynthesis,
Models = { model }
};
await indexClient.CreateOrUpdateKnowledgeBaseAsync(knowledgeBase);
Console.WriteLine($"Knowledge base '{knowledgeBaseName}' created or updated successfully.");
# Create a knowledge base
using Azure.Search.Documents.Indexes;
using Azure.Search.Documents.Indexes.Models;
using Azure.Search.Documents.KnowledgeBases.Models;
using Azure;
var indexClient = new SearchIndexClient(new Uri(searchEndpoint), new AzureKeyCredential(apiKey));
var aoaiParams = new AzureOpenAIVectorizerParameters
{
ResourceUri = new Uri(aoaiEndpoint),
DeploymentName = aoaiGptDeployment,
ModelName = aoaiGptModel
};
var knowledgeBase = new KnowledgeBase(
name: "my-kb",
knowledgeSources: new KnowledgeSourceReference[]
{
new KnowledgeSourceReference("hotels-sample-knowledge-source"),
new KnowledgeSourceReference("earth-knowledge-source")
}
)
{
Description = "This knowledge base handles questions directed at two unrelated sample indexes.",
RetrievalInstructions = "Use the hotels knowledge source for queries about where to stay, otherwise use the earth at night knowledge source.",
AnswerInstructions = "Provide a two sentence concise and informative answer based on the retrieved documents.",
OutputMode = KnowledgeRetrievalOutputMode.AnswerSynthesis,
Models = { new KnowledgeBaseAzureOpenAIModel(azureOpenAIParameters: aoaiParams) },
RetrievalReasoningEffort = new KnowledgeRetrievalLowReasoningEffort()
};
await indexClient.CreateOrUpdateKnowledgeBaseAsync(knowledgeBase);
Console.WriteLine($"Knowledge base '{knowledgeBase.Name}' created or updated successfully.");
Properti pangkalan pengetahuan
Teruskan properti berikut untuk membuat pangkalan pengetahuan.
| Nama | Description | Tipe | Diperlukan |
|---|---|---|---|
name |
Nama basis pengetahuan. Ini harus unik dalam koleksi pangkalan pengetahuan dan mengikuti panduan penamaan untuk objek di Azure AI Search. | String | Yes |
knowledgeSources |
Satu atau beberapa sumber pengetahuan yang didukung. | Array | Yes |
Description |
Deskripsi pangkalan pengetahuan. LLM menggunakan deskripsi untuk menginformasikan perencanaan kueri. | String | Tidak. |
RetrievalInstructions |
Permintaan agar LLM menentukan apakah sumber pengetahuan harus berada dalam cakupan kueri. Sertakan perintah ini saat Anda memiliki beberapa sumber pengetahuan. Bidang ini memengaruhi pemilihan sumber pengetahuan dan rumusan kueri. Misalnya, instruksi dapat menambahkan informasi atau memprioritaskan sumber pengetahuan. Instruksi diteruskan langsung ke LLM, yang berarti dimungkinkan untuk memberikan instruksi yang melanggar rencana kueri, seperti instruksi yang mengakibatkan mengabaikan sumber pengetahuan yang penting. | String | Yes |
AnswerInstructions |
Instruksi kustom untuk membentuk jawaban yang disintesis. Defaultnya adalah null. Untuk informasi selengkapnya, lihat Menggunakan sintesis jawaban untuk respons yang didukung kutipan. | String | Yes |
OutputMode |
Nilai yang valid adalah AnswerSynthesis untuk jawaban yang diformulasikan oleh LLM atau ExtractedData untuk hasil pencarian lengkap yang dapat Anda teruskan ke LLM sebagai langkah berikutnya. |
String | Yes |
Models |
Koneksi ke LLM yang didukung yang digunakan dalam formulasi jawaban atau perencanaan kueri. Dalam pratinjau ini, Models hanya boleh berisi satu model, dan penyedia model harus Azure OpenAI. Dapatkan informasi model dari portal Foundry atau permintaan baris perintah. Berikan parameter dengan menggunakan kelas KnowledgeBaseAzureOpenAIModel. Anda dapat menggunakan kontrol akses berbasis peran alih-alih kunci API untuk koneksi Azure AI Search ke model. Untuk informasi selengkapnya, lihat Cara menyebarkan model Azure OpenAI dengan Foundry. |
Objek | Tidak. |
RetrievalReasoningEffort |
Menentukan tingkat pemrosesan kueri terkait LLM. Nilai yang valid adalah minimal, low (default), dan medium. Untuk informasi selengkapnya, lihat Mengatur usaha penalaran pengambilan data. |
Objek | Tidak. |
Meminta pangkalan pengetahuan
Siapkan instruksi dan pesan untuk dikirim ke LLM.
string instructions = @"
Use the earth at night index to answer the question. If you can't find relevant content, say you don't know.
";
var messages = new List<Dictionary<string, string>>
{
new Dictionary<string, string>
{
{ "role", "system" },
{ "content", instructions }
}
};
retrieve Panggil tindakan pada pangkalan pengetahuan untuk memverifikasi koneksi LLM dan mengembalikan hasil. Untuk informasi selengkapnya tentang retrieve skema permintaan dan respons, lihat Mengambil data menggunakan pangkalan pengetahuan di Azure AI Search.
Ganti "Di mana laut terlihat hijau?" dengan string kueri yang valid untuk sumber pengetahuan Anda.
using Azure.Search.Documents.KnowledgeBases;
using Azure.Search.Documents.KnowledgeBases.Models;
var baseClient = new KnowledgeBaseRetrievalClient(
endpoint: new Uri(searchEndpoint),
knowledgeBaseName: knowledgeBaseName,
tokenCredential: new DefaultAzureCredential()
);
messages.Add(new Dictionary<string, string>
{
{ "role", "user" },
{ "content", @"Where does the ocean look green?" }
});
var retrievalRequest = new KnowledgeBaseRetrievalRequest();
foreach (Dictionary<string, string> message in messages) {
if (message["role"] != "system") {
retrievalRequest.Messages.Add(new KnowledgeBaseMessage(content: new[] { new KnowledgeBaseMessageTextContent(message["content"]) }) { Role = message["role"] });
}
}
retrievalRequest.RetrievalReasoningEffort = new KnowledgeRetrievalLowReasoningEffort();
var retrievalResult = await baseClient.RetrieveAsync(retrievalRequest);
messages.Add(new Dictionary<string, string>
{
{ "role", "assistant" },
{ "content", (retrievalResult.Value.Response[0].Content[0] as KnowledgeBaseMessageTextContent).Text }
});
(retrievalResult.Value.Response[0].Content[0] as KnowledgeBaseMessageTextContent).Text
// Print the response, activity, and references
Console.WriteLine("Response:");
Console.WriteLine((retrievalResult.Value.Response[0].Content[0] as KnowledgeBaseMessageTextContent)!.Text);
Poin-poin penting:
KnowledgeBaseRetrievalRequest adalah kontrak input untuk permintaan pengambilan.
RetrievalReasoningEffort diperlukan. Mengaturnya ke
minimalmengecualikan LLM dari alur kueri dan hanya intent yang digunakan untuk input kueri. Defaultnya adalahlowdan mendukung perencanaan kueri berbasis LLM dan menjawab sintesis dengan pesan dan konteks.knowledgeSourceParamsdigunakan untuk menimpa parameter default saat melakukan kueri.
Respons terhadap kueri sampel mungkin terlihat seperti contoh berikut:
"response": [
{
"content": [
{
"type": "text",
"text": "The ocean appears green off the coast of Antarctica due to phytoplankton flourishing in the water, particularly in Granite Harbor near Antarctica’s Ross Sea, where they can grow in large quantities during spring, summer, and even autumn under the right conditions [ref_id:0]. Additionally, off the coast of Namibia, the ocean can also look green due to blooms of phytoplankton and yellow-green patches of sulfur precipitating from bacteria in oxygen-depleted waters [ref_id:1]. In the Strait of Georgia, Canada, the waters turned bright green due to a massive bloom of coccolithophores, a type of phytoplankton [ref_id:5]. Furthermore, a milky green and blue bloom was observed off the coast of Patagonia, Argentina, where nutrient-rich waters from different currents converge [ref_id:6]. Lastly, a large bloom of cyanobacteria was captured in the Baltic Sea, which can also give the water a green appearance [ref_id:9]."
}
]
}
]
Menghapus pangkalan pengetahuan
Jika Anda tidak lagi memerlukan pangkalan pengetahuan atau perlu membangunnya kembali di layanan pencarian Anda, gunakan permintaan ini untuk menghapus objek.
using Azure.Search.Documents.Indexes;
var indexClient = new SearchIndexClient(new Uri(searchEndpoint), credential);
await indexClient.DeleteKnowledgeBaseAsync(knowledgeBaseName);
System.Console.WriteLine($"Knowledge base '{knowledgeBaseName}' deleted successfully.");
Nota
Fitur ini saat ini dalam pratinjau publik. Pratinjau ini disediakan tanpa perjanjian tingkat layanan dan tidak direkomendasikan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk informasi lebih lanjut, lihat Supplemental Terms of Use for Microsoft Azure Previews.
Di Azure AI Search, pangkalan pengetahuan adalah objek tingkat atas yang mengatur pengambilan agenik. Ini menentukan sumber pengetahuan mana yang akan dikueri dan perilaku default untuk operasi pengambilan. Pada waktu kueri, metode ambil menargetkan pangkalan pengetahuan untuk menjalankan alur pengambilan yang dikonfigurasi.
Anda dapat membuat pangkalan pengetahuan dalam beban kerja Foundry IQ di portal Microsoft Foundry (baru). Anda juga memerlukan pangkalan pengetahuan dalam solusi agenik apa pun yang Anda buat menggunakan API Pencarian Azure AI.
Pangkalan pengetahuan menentukan:
- Satu atau beberapa sumber pengetahuan yang menunjuk ke konten yang dapat dicari.
- LLM opsional yang menyediakan kemampuan penalaran untuk perencanaan kueri dan rumusan jawaban.
- Upaya penalaran pengambilan yang menentukan apakah LLM dipanggil dan mengelola biaya, latensi, dan kualitas.
- Properti kustom yang mengontrol perutean, pemilihan sumber, format output, dan enkripsi objek.
Setelah membuat pangkalan pengetahuan, Anda dapat memperbarui propertinya kapan saja. Jika pangkalan pengetahuan sedang digunakan, pembaruan akan berlaku pada pengambilan berikutnya.
Penting
2025-11-01-pratinjau mengganti nama "agen pengetahuan" dari pratinjau 2025-08-01 menjadi "pangkalan pengetahuan." Ini adalah perubahan yang mengganggu kompatibilitas. Sebaiknya migrasikan kode yang ada ke API baru sesegera mungkin.
Prasyarat
Azure AI Search di mana saja di wilayah yang menyediakan pengambilan berbasis agen. Anda harus mengaktifkan ranker semantik. Jika Anda menggunakan identitas terkelola untuk akses berbasis peran ke model yang disebarkan, layanan pencarian Anda harus berada di tingkat harga Dasar atau yang lebih tinggi.
Azure OpenAI menggunakan proses penyebaran LLM yang didukung.
Satu atau beberapa sumber pengetahuan di layanan pencarian Anda.
Izin untuk membuat dan menggunakan objek di Azure AI Search. Kami merekomendasikan akses berbasis peran. Kontributor Layanan Pencarian dapat membuat dan mengelola pangkalan pengetahuan. Pembaca Data Indeks Pencarian dapat menjalankan kueri. Atau, Anda dapat menggunakan kunci API jika penetapan peran tidak layak. Untuk informasi selengkapnya, lihat Menyambungkan ke layanan pencarian.
Versi pratinjau terbaru dari pustaka klien untuk Python.
Model yang didukung
Gunakan salah satu LLM berikut dari Azure OpenAI atau model sumber terbuka yang setara. Untuk instruksi penyebaran, lihat Menyebarkan model Azure OpenAI dengan Microsoft Foundry.
gpt-4ogpt-4o-minigpt-4.1gpt-4.1-nanogpt-4.1-minigpt-5gpt-5-nanogpt-5-mini
Mengonfigurasi akses
Pencarian Azure AI memerlukan akses ke LLM dari Azure OpenAI. Kami merekomendasikan ID Microsoft Entra untuk autentikasi dan akses berbasis peran untuk otorisasi. Anda harus menjadi Pemilik atau Administrator Akses Pengguna untuk menetapkan peran. Jika peran tidak memungkinkan, gunakan autentikasi berbasis kunci sebagai gantinya.
Konfigurasikan Azure AI Search untuk menggunakan identitas terkelola.
Pada penyedia model Anda, seperti Model Foundry, tetapkan Pengguna Cognitive Services ke identitas terkelola layanan pencarian Anda. Jika Anda menguji secara lokal, tetapkan peran yang sama ke akun pengguna Anda.
Untuk pengujian lokal, ikuti langkah-langkah di Mulai Cepat: Sambungkan tanpa Kunci untuk masuk ke langganan dan tenant tertentu. Gunakan
DefaultAzureCredentialalih-alihAzureKeyCredentialdi setiap permintaan, yang akan terlihat mirip dengan contoh berikut:# Authenticate using roles from azure.identity import DefaultAzureCredential index_client = SearchIndexClient(endpoint = "search_url", credential = DefaultAzureCredential())
Penting
Cuplikan kode dalam artikel ini menggunakan kunci API. Jika Anda menggunakan autentikasi berbasis peran, perbarui setiap permintaan yang sesuai. Dalam permintaan yang menentukan kedua pendekatan, kunci API lebih diutamakan.
Periksa pangkalan pengetahuan yang ada
Mengetahui tentang pangkalan pengetahuan yang ada sangat membantu untuk menggunakan kembali atau memberi nama objek baru. Setiap agen informasi pratinjau versi 2025-08-01 dikembalikan dalam koleksi basis pengetahuan.
Jalankan kode berikut untuk mencantumkan pangkalan pengetahuan yang ada berdasarkan nama.
# List knowledge bases by name
import requests
import json
endpoint = "{search_url}/knowledgebases"
params = {"api-version": "2025-11-01-preview", "$select": "name"}
headers = {"api-key": "{api_key}"}
response = requests.get(endpoint, params = params, headers = headers)
print(json.dumps(response.json(), indent = 2))
Anda juga dapat mengembalikan satu pangkalan pengetahuan berdasarkan nama untuk meninjau definisi JSON-nya.
# Get a knowledge base definition
import requests
import json
endpoint = "{search_url}/knowledgebases/{knowledge_base_name}"
params = {"api-version": "2025-11-01-preview"}
headers = {"api-key": "{api_key}"}
response = requests.get(endpoint, params = params, headers = headers)
print(json.dumps(response.json(), indent = 2))
JSON berikut adalah contoh respons untuk pangkalan pengetahuan.
{
"name": "my-kb",
"description": "A sample knowledge base.",
"retrievalInstructions": null,
"answerInstructions": null,
"outputMode": null,
"knowledgeSources": [
{
"name": "my-blob-ks"
}
],
"models": [],
"encryptionKey": null,
"retrievalReasoningEffort": {
"kind": "low"
}
}
Membuat basis pengetahuan
Pangkalan pengetahuan mendorong alur pengambilan agenik. Dalam kode aplikasi, agen atau chatbot lain memanggilnya.
Pangkalan pengetahuan menghubungkan sumber pengetahuan (konten yang dapat dicari) ke penyebaran LLM dari Azure OpenAI. Properti pada LLM membuat koneksi, sementara properti pada sumber pengetahuan menetapkan default yang menginformasikan eksekusi kueri dan respons.
Jalankan kode berikut untuk membuat pangkalan pengetahuan.
# Create a knowledge base
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import KnowledgeBase, KnowledgeBaseAzureOpenAIModel, KnowledgeSourceReference, AzureOpenAIVectorizerParameters, KnowledgeRetrievalOutputMode, KnowledgeRetrievalLowReasoningEffort
index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
aoai_params = AzureOpenAIVectorizerParameters(
resource_url = "aoai_endpoint",
api_key="aoai_api_key",
deployment_name = "aoai_gpt_deployment",
model_name = "aoai_gpt_model",
)
knowledge_base = KnowledgeBase(
name = "my-kb",
description = "This knowledge base handles questions directed at two unrelated sample indexes.",
retrieval_instructions = "Use the hotels knowledge source for queries about where to stay, otherwise use the earth at night knowledge source.",
answer_instructions = "Provide a two sentence concise and informative answer based on the retrieved documents.",
output_mode = KnowledgeRetrievalOutputMode.ANSWER_SYNTHESIS,
knowledge_sources = [
KnowledgeSourceReference(name = "hotels-ks"),
KnowledgeSourceReference(name = "earth-at-night-ks"),
],
models = [KnowledgeBaseAzureOpenAIModel(azure_open_ai_parameters = aoai_params)],
encryption_key = None,
retrieval_reasoning_effort = KnowledgeRetrievalLowReasoningEffort,
)
index_client.create_or_update_knowledge_base(knowledge_base)
print(f"Knowledge base '{knowledge_base.name}' created or updated successfully.")
Properti pangkalan pengetahuan
Teruskan properti berikut untuk membuat pangkalan pengetahuan.
| Nama | Description | Tipe | Diperlukan |
|---|---|---|---|
name |
Nama basis pengetahuan. Ini harus unik dalam koleksi pangkalan pengetahuan dan mengikuti panduan penamaan untuk objek di Azure AI Search. | String | Yes |
description |
Deskripsi pangkalan pengetahuan. LLM menggunakan deskripsi untuk menginformasikan perencanaan kueri. | String | Tidak. |
retrieval_instructions |
Permintaan agar LLM menentukan apakah sumber pengetahuan harus berada dalam cakupan kueri. Sertakan perintah ini saat Anda memiliki beberapa sumber pengetahuan. Bidang ini memengaruhi pemilihan sumber pengetahuan dan rumusan kueri. Misalnya, instruksi dapat menambahkan informasi atau memprioritaskan sumber pengetahuan. Kirim instruksi langsung kepada LLM. Dimungkinkan untuk memberikan instruksi yang merusak perencanaan kueri, seperti instruksi yang mengakibatkan melewati sumber pengetahuan penting. | String | Yes |
answer_instructions |
Instruksi kustom untuk membentuk jawaban yang disintesis. Defaultnya adalah null. Untuk informasi selengkapnya, lihat Menggunakan sintesis jawaban untuk respons yang didukung kutipan. | String | Yes |
output_mode |
Nilai yang valid adalah answer_synthesis untuk jawaban yang diformulasikan oleh LLM atau extracted_data untuk hasil pencarian lengkap yang dapat Anda teruskan ke LLM sebagai langkah berikutnya. |
String | Yes |
knowledge_sources |
Satu atau beberapa sumber pengetahuan yang didukung. | Array | Yes |
models |
Koneksi ke LLM yang didukung yang digunakan dalam formulasi jawaban atau perencanaan kueri. Dalam pratinjau ini, models hanya boleh berisi satu model, dan penyedia model harus Azure OpenAI. Dapatkan informasi model dari portal Foundry atau permintaan baris perintah. Anda dapat menggunakan kontrol akses berbasis peran alih-alih kunci API untuk koneksi Azure AI Search ke model. Untuk informasi selengkapnya, lihat Cara menyebarkan model Azure OpenAI dengan Foundry. |
Objek | Tidak. |
encryption_key |
Kunci yang dikelola pelanggan untuk mengenkripsi informasi sensitif di pangkalan pengetahuan dan objek yang dihasilkan. | Objek | Tidak. |
retrieval_reasoning_effort |
Menentukan tingkat pemrosesan kueri terkait LLM. Nilai yang valid adalah minimal, low (default), dan medium. Untuk informasi selengkapnya, lihat Mengatur usaha penalaran pengambilan data. |
Objek | Tidak. |
Meminta pangkalan pengetahuan
retrieve Panggil tindakan pada pangkalan pengetahuan untuk memverifikasi koneksi LLM dan mengembalikan hasil. Untuk informasi selengkapnya tentang retrieve skema permintaan dan respons, lihat Mengambil data menggunakan pangkalan pengetahuan di Azure AI Search.
Ganti "Di mana laut terlihat hijau?" dengan string kueri yang valid untuk sumber pengetahuan Anda.
# Send grounding request
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.knowledgebases import KnowledgeBaseRetrievalClient
from azure.search.documents.knowledgebases.models import KnowledgeBaseMessage, KnowledgeBaseMessageTextContent, KnowledgeBaseRetrievalRequest, SearchIndexKnowledgeSourceParams
kb_client = KnowledgeBaseRetrievalClient(endpoint = "search_url", knowledge_base_name = "knowledge_base_name", credential = AzureKeyCredential("api_key"))
request = KnowledgeBaseRetrievalRequest(
messages=[
KnowledgeBaseMessage(
role = "assistant",
content = [KnowledgeBaseMessageTextContent(text = "Use the earth at night index to answer the question. If you can't find relevant content, say you don't know.")]
),
KnowledgeBaseMessage(
role = "user",
content = [KnowledgeBaseMessageTextContent(text = "Where does the ocean look green?")]
),
],
knowledge_source_params=[
SearchIndexKnowledgeSourceParams(
knowledge_source_name = "earth-at-night-ks",
include_references = True,
include_reference_source_data = True,
always_query_source = False,
)
],
include_activity = True,
)
result = kb_client.retrieve(request)
print(result.response[0].content[0].text)
Poin-poin penting:
messagesdiperlukan, tetapi Anda dapat menjalankan contoh ini dengan menggunakan peranuseryang menyediakan kueri saja.knowledge_source_paramsmenentukan satu atau beberapa target kueri. Untuk setiap sumber pengetahuan, Anda dapat menentukan berapa banyak informasi yang akan disertakan dalam output.
Respons terhadap kueri sampel mungkin terlihat seperti contoh berikut:
"response": [
{
"content": [
{
"type": "text",
"text": "The ocean appears green off the coast of Antarctica due to phytoplankton flourishing in the water, particularly in Granite Harbor near Antarctica’s Ross Sea, where they can grow in large quantities during spring, summer, and even autumn under the right conditions [ref_id:0]. Additionally, off the coast of Namibia, the ocean can also look green due to blooms of phytoplankton and yellow-green patches of sulfur precipitating from bacteria in oxygen-depleted waters [ref_id:1]. In the Strait of Georgia, Canada, the waters turned bright green due to a massive bloom of coccolithophores, a type of phytoplankton [ref_id:5]. Furthermore, a milky green and blue bloom was observed off the coast of Patagonia, Argentina, where nutrient-rich waters from different currents converge [ref_id:6]. Lastly, a large bloom of cyanobacteria was captured in the Baltic Sea, which can also give the water a green appearance [ref_id:9]."
}
]
}
]
Menghapus pangkalan pengetahuan
Jika Anda tidak lagi memerlukan pangkalan pengetahuan atau perlu membangunnya kembali di layanan pencarian Anda, gunakan permintaan ini untuk menghapus objek.
# Delete a knowledge base
from azure.core.credentials import AzureKeyCredential
from azure.search.documents.indexes import SearchIndexClient
index_client = SearchIndexClient(endpoint = "search_url", credential = AzureKeyCredential("api_key"))
index_client.delete_knowledge_base("knowledge_base_name")
print(f"Knowledge base deleted successfully.")
Nota
Fitur ini saat ini dalam pratinjau publik. Pratinjau ini disediakan tanpa perjanjian tingkat layanan dan tidak direkomendasikan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk informasi lebih lanjut, lihat Supplemental Terms of Use for Microsoft Azure Previews.
Di Azure AI Search, pangkalan pengetahuan adalah objek tingkat atas yang mengatur pengambilan agenik. Ini menentukan sumber pengetahuan mana yang akan dikueri dan perilaku default untuk operasi pengambilan. Pada waktu kueri, metode ambil menargetkan pangkalan pengetahuan untuk menjalankan alur pengambilan yang dikonfigurasi.
Anda dapat membuat pangkalan pengetahuan dalam beban kerja Foundry IQ di portal Microsoft Foundry (baru). Anda juga memerlukan pangkalan pengetahuan dalam solusi agenik apa pun yang Anda buat menggunakan API Pencarian Azure AI.
Pangkalan pengetahuan menentukan:
- Satu atau beberapa sumber pengetahuan yang menunjuk ke konten yang dapat dicari.
- LLM opsional yang menyediakan kemampuan penalaran untuk perencanaan kueri dan rumusan jawaban.
- Upaya penalaran pengambilan yang menentukan apakah LLM dipanggil dan mengelola biaya, latensi, dan kualitas.
- Properti kustom yang mengontrol perutean, pemilihan sumber, format output, dan enkripsi objek.
Setelah membuat pangkalan pengetahuan, Anda dapat memperbarui propertinya kapan saja. Jika pangkalan pengetahuan sedang digunakan, pembaruan akan berlaku pada pengambilan berikutnya.
Penting
2025-11-01-pratinjau mengganti nama "agen pengetahuan" dari pratinjau 2025-08-01 menjadi "pangkalan pengetahuan." Ini adalah perubahan yang mengganggu kompatibilitas. Sebaiknya migrasikan kode yang ada ke API baru sesegera mungkin.
Prasyarat
Azure AI Search di mana saja di wilayah yang menyediakan pengambilan berbasis agen. Anda harus mengaktifkan ranker semantik. Jika Anda menggunakan identitas terkelola untuk akses berbasis peran ke model yang disebarkan, layanan pencarian Anda harus berada di tingkat harga Dasar atau yang lebih tinggi.
Azure OpenAI menggunakan proses penyebaran LLM yang didukung.
Satu atau beberapa sumber pengetahuan di layanan pencarian Anda.
Izin untuk membuat dan menggunakan objek di Azure AI Search. Kami merekomendasikan akses berbasis peran. Kontributor Layanan Pencarian dapat membuat dan mengelola pangkalan pengetahuan. Pembaca Data Indeks Pencarian dapat menjalankan kueri. Atau, Anda dapat menggunakan kunci API jika penetapan peran tidak layak. Untuk informasi selengkapnya, lihat Menyambungkan ke layanan pencarian.
Versi pratinjau terbaru pustaka
Azure.Search.Documentsklien untuk .NET SDK.
Model yang didukung
Gunakan salah satu LLM berikut dari Azure OpenAI atau model sumber terbuka yang setara. Untuk instruksi penyebaran, lihat Menyebarkan model Azure OpenAI dengan Microsoft Foundry.
gpt-4ogpt-4o-minigpt-4.1gpt-4.1-nanogpt-4.1-minigpt-5gpt-5-nanogpt-5-mini
Mengonfigurasi akses
Pencarian Azure AI memerlukan akses ke LLM dari Azure OpenAI. Kami merekomendasikan ID Microsoft Entra untuk autentikasi dan akses berbasis peran untuk otorisasi. Untuk menetapkan peran, Anda harus menjadi Pemilik atau Administrator Akses Pengguna. Jika Anda tidak dapat menggunakan peran, gunakan autentikasi berbasis kunci sebagai gantinya.
Konfigurasikan Azure AI Search untuk menggunakan identitas terkelola.
Pada penyedia model Anda, seperti Model Foundry, tetapkan Pengguna Cognitive Services ke identitas terkelola layanan pencarian Anda. Jika Anda menguji secara lokal, tetapkan peran yang sama ke akun pengguna Anda.
Untuk pengujian lokal, ikuti langkah-langkah di Mulai Cepat: Sambungkan tanpa kunci untuk mendapatkan token akses pribadi untuk langganan dan penyewa tertentu. Tentukan token akses Anda di setiap permintaan, yang akan terlihat mirip dengan contoh berikut:
# List indexes using roles GET https://{{search-url}}/indexes?api-version=2025-11-01-preview Content-Type: application/json Authorization: Bearer {{access-token}}
Penting
Cuplikan kode dalam artikel ini menggunakan kunci API. Jika Anda menggunakan autentikasi berbasis peran, perbarui setiap permintaan yang sesuai. Dalam permintaan yang menentukan kedua pendekatan, kunci API lebih diutamakan.
Periksa pangkalan pengetahuan yang ada
Pangkalan pengetahuan adalah objek tingkat atas yang dapat digunakan kembali. Mengetahui tentang pangkalan pengetahuan yang ada sangat membantu untuk menggunakan kembali atau memberi nama objek baru. Setiap agen informasi pratinjau versi 2025-08-01 dikembalikan dalam koleksi basis pengetahuan.
Gunakan Pangkalan Pengetahuan - Daftar (REST API) untuk mencantumkan pangkalan pengetahuan berdasarkan nama dan jenis.
# List knowledge bases
GET {{search-url}}/knowledgebases?api-version=2025-11-01-preview&$select=name
Content-Type: application/json
api-key: {{search-api-key}}
Anda juga dapat mengembalikan satu pangkalan pengetahuan berdasarkan nama untuk meninjau definisi JSON-nya.
# Get knowledge base
GET {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version=2025-11-01-preview
Content-Type: application/json
api-key: {{search-api-key}}
JSON berikut adalah contoh respons untuk pangkalan pengetahuan.
{
"name": "my-kb",
"description": "A sample knowledge base.",
"retrievalInstructions": null,
"answerInstructions": null,
"outputMode": null,
"knowledgeSources": [
{
"name": "my-blob-ks"
}
],
"models": [],
"encryptionKey": null,
"retrievalReasoningEffort": {
"kind": "low"
}
}
Membuat basis pengetahuan
Pangkalan pengetahuan mendorong alur pengambilan agenik. Dalam kode aplikasi, agen atau chatbot lain memanggilnya.
Pangkalan pengetahuan menghubungkan sumber pengetahuan (konten yang dapat dicari) ke penyebaran LLM dari Azure OpenAI. Properti pada LLM membuat koneksi, sementara properti pada kumpulan sumber pengetahuan mengatur default yang memandu eksekusi kueri dan respons.
Gunakan Pangkalan Pengetahuan - Buat atau Perbarui (REST API) untuk merumuskan permintaan.
# Create a knowledge base
PUT {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version=2025-11-01-preview
Content-Type: application/json
api-key: {{search-api-key}}
{
"name" : "my-kb",
"description": "This knowledge base handles questions directed at two unrelated sample indexes.",
"retrievalInstructions": "Use the hotels knowledge source for queries about where to stay, otherwise use the earth at night knowledge source.",
"answerInstructions": null,
"outputMode": "answerSynthesis",
"knowledgeSources": [
{
"name": "hotels-ks"
},
{
"name": "earth-at-night-ks"
}
],
"models" : [
{
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"resourceUri": "{{model-provider-url}}",
"apiKey": "{{model-api-key}}",
"deploymentId": "gpt-4.1-mini",
"modelName": "gpt-4.1-mini"
}
}
],
"encryptionKey": null,
"retrievalReasoningEffort": {
"kind": "low"
}
}
Properti pangkalan pengetahuan
Teruskan properti berikut untuk membuat pangkalan pengetahuan.
| Nama | Description | Tipe | Diperlukan |
|---|---|---|---|
name |
Nama basis pengetahuan. Ini harus unik dalam koleksi pangkalan pengetahuan dan mengikuti panduan penamaan untuk objek di Azure AI Search. | String | Yes |
description |
Deskripsi pangkalan pengetahuan. LLM menggunakan deskripsi untuk menginformasikan perencanaan kueri. | String | Tidak. |
retrievalInstructions |
Permintaan agar LLM menentukan apakah sumber pengetahuan harus berada dalam cakupan kueri. Sertakan perintah ini saat Anda memiliki beberapa sumber pengetahuan. Bidang ini memengaruhi pemilihan sumber pengetahuan dan rumusan kueri. Misalnya, instruksi dapat menambahkan informasi atau memprioritaskan sumber pengetahuan. Anda meneruskan instruksi langsung ke LLM, yang berarti dimungkinkan untuk memberikan instruksi yang melanggar perencanaan pencarian, seperti instruksi yang mengakibatkan mengabaikan sumber pengetahuan penting. | String | Yes |
answerInstructions |
Instruksi kustom untuk membentuk jawaban yang disintesis. Defaultnya adalah null. Untuk informasi selengkapnya, lihat Menggunakan sintesis jawaban untuk respons yang didukung kutipan. | String | Yes |
outputMode |
Nilai yang valid adalah answerSynthesis untuk jawaban yang diformulasikan oleh LLM atau extractedData untuk hasil pencarian lengkap yang dapat Anda teruskan ke LLM sebagai langkah berikutnya. |
String | Yes |
knowledgeSources |
Satu atau beberapa sumber pengetahuan yang didukung. | Array | Yes |
models |
Koneksi ke LLM yang didukung yang digunakan dalam formulasi jawaban atau perencanaan kueri. Dalam pratinjau ini, models hanya boleh berisi satu model, dan penyedia model harus Azure OpenAI. Dapatkan informasi model dari portal Foundry atau permintaan baris perintah. Anda dapat menggunakan kontrol akses berbasis peran alih-alih kunci API untuk koneksi Azure AI Search ke model. Untuk informasi selengkapnya, lihat Cara menyebarkan model Azure OpenAI dengan Foundry. |
Objek | Tidak. |
encryptionKey |
Kunci yang dikelola pelanggan untuk mengenkripsi informasi sensitif di pangkalan pengetahuan dan objek yang dihasilkan. | Objek | Tidak. |
retrievalReasoningEffort.kind |
Menentukan tingkat pemrosesan kueri terkait LLM. Nilai yang valid adalah minimal, low (default), dan medium. Untuk informasi selengkapnya, lihat Mengatur usaha penalaran pengambilan data. |
Objek | Tidak. |
Meminta pangkalan pengetahuan
retrieve Panggil tindakan pada pangkalan pengetahuan untuk memverifikasi koneksi LLM dan mengembalikan hasil. Untuk informasi selengkapnya tentang retrieve skema permintaan dan respons, lihat Mengambil data menggunakan pangkalan pengetahuan di Azure AI Search.
Gunakan Knowledge Retrieval - Retrieve (REST API) untuk merumuskan permintaan. Ganti "Di mana laut terlihat hijau?" dengan string kueri yang valid untuk sumber pengetahuan Anda.
# Send grounding request
POST {{search-url}}/knowledgebases/{{knowledge-base-name}}/retrieve?api-version=2025-11-01-preview
Content-Type: application/json
api-key: {{search-api-key}}
{
"messages" : [
{ "role" : "assistant",
"content" : [
{ "type" : "text", "text" : "Use the earth at night index to answer the question. If you can't find relevant content, say you don't know." }
]
},
{
"role" : "user",
"content" : [
{
"text" : "Where does the ocean look green?",
"type" : "text"
}
]
}
],
"includeActivity": true,
"knowledgeSourceParams": [
{
"knowledgeSourceName": "earth-at-night-ks",
"kind": "searchIndex",
"includeReferences": true,
"includeReferenceSourceData": true,
"alwaysQuerySource": false
}
]
}
Poin-poin penting:
messagesdiperlukan, tetapi Anda dapat menjalankan contoh ini dengan menggunakan peranuseryang menyediakan kueri saja.knowledgeSourceParamsmenentukan satu atau beberapa target kueri. Untuk setiap sumber pengetahuan, Anda dapat menentukan berapa banyak informasi yang akan disertakan dalam output.
Respons terhadap kueri sampel mungkin terlihat seperti contoh berikut:
"response": [
{
"content": [
{
"type": "text",
"text": "The ocean appears green off the coast of Antarctica due to phytoplankton flourishing in the water, particularly in Granite Harbor near Antarctica’s Ross Sea, where they can grow in large quantities during spring, summer, and even autumn under the right conditions [ref_id:0]. Additionally, off the coast of Namibia, the ocean can also look green due to blooms of phytoplankton and yellow-green patches of sulfur precipitating from bacteria in oxygen-depleted waters [ref_id:1]. In the Strait of Georgia, Canada, the waters turned bright green due to a massive bloom of coccolithophores, a type of phytoplankton [ref_id:5]. Furthermore, a milky green and blue bloom was observed off the coast of Patagonia, Argentina, where nutrient-rich waters from different currents converge [ref_id:6]. Lastly, a large bloom of cyanobacteria was captured in the Baltic Sea, which can also give the water a green appearance [ref_id:9]."
}
]
}
]
Menghapus pangkalan pengetahuan
Jika Anda tidak lagi memerlukan pangkalan pengetahuan atau perlu membangunnya kembali di layanan pencarian Anda, gunakan permintaan ini untuk menghapus objek.
# Delete a knowledge base
DELETE {{search-url}}/knowledgebases/{{knowledge-base-name}}?api-version=2025-11-01-preview
api-key: {{search-api-key}}