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.
Dalam Azure AI Search, pengambilan dengan pendekatan agenik memanfaatkan konteks dan pertanyaan pengguna untuk menghasilkan berbagai subkueri yang dapat dijalankan terhadap konten Anda di sumber pengetahuan. Sumber pengetahuan dapat menunjuk ke konten terindeks di Azure AI Search, atau konten jarak jauh yang diambil menggunakan API yang dimiliki oleh penyedia. Ketika indeks digunakan dalam pengambilan agenik, indeks tersebut adalah:
Indeks yang sudah ada yang berisi konten yang dapat dicari. Anda dapat membuat indeks yang ada tersedia untuk pengambilan agenik melalui definisi sumber pengetahuan indeks pencarian .
Indeks yang dihasilkan yang dibuat dari sumber pengetahuan terindeks. Sumber pengetahuan terindeks membuat salinan sumber data eksternal di dalam indeks pencarian menggunakan proses alur pengindeksan lengkap (sumber data, pemrosesan, pengindeks, dan indeks) untuk pengambilan secara otomatis. Beberapa sumber pengetahuan dapat menghasilkan alur pengindeks yang menghasilkan indeks yang dapat dicari. Ini termasuk:
Indeks yang dihasilkan didasarkan pada templat yang memenuhi semua kriteria untuk pangkalan pengetahuan dan pengambilan agenik.
Artikel ini menjelaskan elemen indeks mana yang memengaruhi logika kueri pengambilan agenik. Tidak ada elemen yang diperlukan yang baru atau khusus untuk pengambilan agenik, yang berarti Anda dapat menggunakan indeks yang ada jika memenuhi kriteria yang diidentifikasi dalam artikel ini, bahkan jika dibuat menggunakan versi API sebelumnya.
Nota
Sumber pengetahuan berikut mengakses sumber eksternal secara langsung dan tidak memerlukan indeks pencarian: Sumber Pengetahuan Web (Bing) dan SharePoint (Jarak Jauh).
Kriteria untuk pengambilan agenik
Indeks yang digunakan dalam pengambilan agenik harus memiliki elemen-elemen ini:
- Bidang string dikaitkan sebagai
searchabledanretrievable. -
Konfigurasi semantik, dengan konfigurasi semantik
defaultSemanticConfigurationatau penggantian konfigurasi semantik dalam sumber pengetahuan.
Ini juga harus memiliki bidang yang dapat digunakan untuk kutipan, seperti nama dokumen atau file, nama halaman atau bab, atau setidaknya ID gugus.
Ini harus memiliki bidang vektor dan vektorizer jika Anda ingin menyertakan konversi kueri teks ke vektor dalam alur.
Secara opsional, elemen indeks berikut meningkatkan peluang Anda untuk pengoptimalan:
-
scoringProfiledengandefaultScoringProfile, untuk meningkatkan relevansi -
synonymMapsuntuk terminologi atau jargon -
analyzersuntuk aturan atau pola linguistik (seperti pelestarian spasi kosong, atau karakter khusus)
Contoh definisi indeks
Berikut adalah contoh indeks yang cocok untuk pengambilan agentik. Ini memenuhi kriteria untuk elemen yang diperlukan. Ini mencakup bidang vektor sebagai praktik terbaik.
{
"name": "earth_at_night",
"description": "Contains images an descriptions of our planet in darkness as captured from space by Earth-observing satellites and astronauts on the International Space Station over the past 25 years.",
"fields": [
{
"name": "id", "type": "Edm.String",
"searchable": true, "retrievable": true, "filterable": true, "sortable": true, "facetable": true,
"key": true,
"stored": true,
"synonymMaps": []
},
{
"name": "page_chunk", "type": "Edm.String",
"searchable": true, "retrievable": true, "filterable": false, "sortable": false, "facetable": false,
"analyzer": "en.microsoft",
"stored": true,
"synonymMaps": []
},
{
"name": "page_chunk_vector_text_3_large", "type": "Collection(Edm.Single)",
"searchable": true, "retrievable": false, "filterable": false, "sortable": false, "facetable": false,
"dimensions": 3072,
"vectorSearchProfile": "hnsw_text_3_large",
"stored": false,
"synonymMaps": []
},
{
"name": "page_number", "type": "Edm.Int32",
"searchable": false, "retrievable": true, "filterable": true, "sortable": true, "facetable": true,
"stored": true,
"synonymMaps": []
},
{
"name": "chapter_number", "type": "Edm.Int32",
"searchable": false, "retrievable": true, "filterable": true, "sortable": true, "facetable": true,
"stored": true,
"synonymMaps": []
}
],
"semantic": {
"defaultConfiguration": "semantic_config",
"configurations": [
{
"name": "semantic_config",
"flightingOptIn": false,
"prioritizedFields": {
"prioritizedContentFields": [
{
"fieldName": "page_chunk"
}
],
"prioritizedKeywordsFields": []
}
}
]
},
"vectorSearch": {
"algorithms": [
{
"name": "alg",
"kind": "hnsw",
"hnswParameters": {
"metric": "cosine",
"m": 4,
"efConstruction": 400,
"efSearch": 500
}
}
],
"profiles": [
{
"name": "hnsw_text_3_large",
"algorithm": "alg",
"vectorizer": "azure_openai_text_3_large"
}
],
"vectorizers": [
{
"name": "azure_openai_text_3_large",
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"resourceUri": "https://YOUR-AOAI-RESOURCE.openai.azure.com",
"deploymentId": "text-embedding-3-large",
"apiKey": "<redacted>",
"modelName": "text-embedding-3-large"
}
}
],
"compressions": []
}
}
Poin utama:
Indeks yang dirancang dengan baik yang digunakan untuk AI generatif atau struktur pembuatan tertambung pengambilan (RAG) memiliki komponen ini:
Deskripsi yang dapat digunakan LLM atau agen untuk menentukan apakah indeks harus digunakan atau dilewati.
Segmen teks yang dapat dibaca oleh manusia yang dapat diumpankan sebagai token input ke LLM untuk pembentukan jawaban.
Konfigurasi pemeringkat semantik karena pengambilan secara agentik menggunakan peringkat semantik tingkat 2 (L2) untuk mengidentifikasi segmen yang paling relevan.
Secara opsional, versi vektor yang setara dari potongan teks yang dapat dibaca manusia untuk pencarian vektor pelengkap.
Teks tersegmentasi penting karena LLM mengonsumsi dan menghasilkan string yang sudah ditokenisasi dari konten teks biasa yang dapat dibaca manusia. Untuk alasan ini, Anda menginginkan searchable bidang yang menyediakan string teks polos, dan retrievable dalam respons. Di Azure AI Search, teks yang dipotong dapat dibuat menggunakan solusi bawaan atau pihak ketiga.
Asumsi bawaan untuk konten yang dipotong adalah bahwa dokumen sumber asli memiliki konten verbose dalam jumlah besar. Jika konten sumber Anda adalah data terstruktur, seperti database produk, maka indeks Anda harus mengabaikan pemotongan dan sebagai gantinya, mencakup bidang yang memetakan ke sumber data asli (misalnya, nama produk, kategori, deskripsi, dan sebagainya). Atribusi searchable dan retrievable berlaku untuk data terstruktur juga. Konten yang dapat dicari (searchable) membuatnya tersedia untuk kueri, dan konten yang dapat diakses (retrievable) menambahkannya ke hasil pencarian (data grounding).
Konten vektor dapat berguna karena menambahkan pencarian kesamaan pada pengambilan informasi. Pada waktu kueri, ketika bidang vektor ada dalam indeks, mesin pengambilan agenik menjalankan kueri vektor secara paralel dengan kueri teks. Karena kueri vektor mencari konten serupa daripada mencocokkan kata, kueri vektor dapat menemukan hasil yang sangat relevan yang mungkin terlewatkan oleh kueri teks. Menambahkan vektor dapat meningkatkan kualitas data dasar Anda, tetapi tidak sepenuhnya diperlukan. Azure AI Search memiliki pendekatan bawaan untuk vektorisasi.
Bidang vektor hanya digunakan untuk eksekusi kueri di Azure AI Search. Anda tidak memerlukan vektor dalam hasil karena tidak dapat dibaca oleh manusia atau LLM. Sebaiknya atur retrievable dan stored ke false untuk meminimalkan persyaratan ruang. Untuk informasi selengkapnya, lihat Mengoptimalkan penyimpanan dan pemrosesan vektor.
Jika Anda menggunakan vektor, memiliki vektorizer yang ditentukan dalam konfigurasi pencarian vektor sangat penting. Ini menentukan apakah bidang vektor Anda digunakan selama eksekusi kueri. Pemvektor mengubah subkueri string menjadi vektor ketika melakukan kueri untuk pencarian kemiripan pada vektor. Vektorizer harus menjadi model penyematan yang sama yang digunakan untuk membuat vektor dalam indeks.
Secara default, semua searchable bidang disertakan dalam eksekusi kueri, dan semua retrievable bidang dikembalikan dalam hasil. Anda dapat memilih bidang mana yang akan digunakan untuk setiap tindakan dalam definisi sumber pengetahuan indeks pencarian.
Menambahkan deskripsi
Bidang indeks description adalah string yang ditentukan pengguna yang dapat Anda gunakan untuk memberikan panduan ke server LLM dan Model Context Protocol (MCP) saat memutuskan untuk menggunakan indeks tertentu untuk kueri. Teks yang dapat dibaca manusia ini sangat berharga ketika sistem harus mengakses beberapa indeks dan membuat keputusan berdasarkan deskripsi.
Deskripsi indeks adalah pembaruan skema, dan Anda dapat menambahkannya tanpa harus membangun kembali seluruh indeks.
- Panjang string maksimum 4.000 karakter.
- Konten harus dapat dibaca manusia, di Unicode. Kasus penggunaan Anda harus menentukan bahasa mana yang akan digunakan (misalnya, bahasa Inggris atau bahasa lain).
Menambahkan konfigurasi semantik
Indeks harus memiliki setidaknya satu konfigurasi semantik. Konfigurasi semantik harus memiliki:
- Konfigurasi bernama.
- Tetapkan
prioritizedContentFieldske paling tidak satu bidang string yang memilikisearchabledanretrievable.
Ada dua cara untuk menentukan konfigurasi semantik berdasarkan nama. Jika index telah defaultSemanticConfiguration diatur ke konfigurasi bernama, pengambilan data akan menggunakannya. Atau, Anda dapat menentukan konfigurasi semantik di dalam sumber pengetahuan indeks pencarian.
Dalam konfigurasi, prioritizedContentFields diperlukan. Judul dan kata kunci bersifat opsional. Untuk konten yang dipotong, Anda mungkin juga tidak memilikinya. Namun, jika Anda menambahkan pengenalan entitas atau ekstraksi frasa kunci, Anda mungkin memiliki beberapa kata kunci yang terkait dengan setiap gugus yang dapat berguna dalam skenario pencarian, mungkin dalam profil penilaian.
Berikut adalah contoh konfigurasi semantik yang berfungsi untuk pengambilan kembali yang bersifat agensi:
"semantic":{
"defaultConfiguration":"semantic_config",
"configurations":[
{
"name":"semantic_config",
"flightingOptIn":false,
"prioritizedFields":{
"prioritizedFields":{
"titleField":{
"fieldName":""
},
"prioritizedContentFields":[
{
"fieldName":"page_chunk"
}
],
"prioritizedKeywordsFields":[
{
"fieldName":"Category"
},
{
"fieldName":"Tags"
},
{
"fieldName":"Location"
}
]
}
}
}
]
}
Nota
Respons menyediakan title, terms, dan content, yang memetakan ke bidang yang diprioritaskan dalam konfigurasi ini.
Menambahkan pevektor
Jika Anda memiliki bidang vektor dalam indeks, rencana kueri menyertakan bidang-bidang tersebut jika searchable dan memiliki penugasan vectorizer.
Vektorizer menentukan model penanaman yang menyediakan konversi teks ke vektor pada saat permintaan. Ini harus menunjuk ke model penyematan yang sama yang digunakan untuk mengodekan konten vektor dalam indeks Anda. Anda dapat menggunakan model penyematan apa pun yang didukung oleh Azure AI Search. Vektorizer ditentukan pada bidang vektor dengan cara profil vektor.
Ingat definisi bidang vektor dalam contoh indeks. Atribut pada bidang vektor mencakup dimensi atau jumlah penyematan yang dihasilkan oleh model, dan profil.
{
"name": "page_chunk_text_3_large", "type": "Collection(Edm.Single)",
"searchable": true, "retrievable": false, "filterable": false, "sortable": false, "facetable": false,
"dimensions": 3072,
"vectorSearchProfile": "hnsw_text_3_large",
"stored": false,
"synonymMaps": []
}
Profil vektor adalah konfigurasi vektorizer, algoritma, dan teknik kompresi. Setiap bidang vektor hanya dapat menggunakan satu profil, tetapi indeks Anda dapat memiliki banyak jika Anda menginginkan profil unik untuk setiap bidang vektor.
Jika melakukan kueri pada vektor dan menggunakan vektorizer menambahkan latensi pada permintaan keseluruhan, tetapi jika Anda ingin pencarian kesamaan, pertukaran tersebut mungkin sepadan.
Berikut adalah contoh pengubah vektor yang bekerja untuk pengambilan agenik, seperti yang terlihat dalam konfigurasi vectorSearch. Tidak ada dalam definisi pengubah vektor yang perlu diubah untuk bekerja dengan pengambilan berbasis agen.
"vectorSearch": {
"algorithms": [
{
"name": "alg",
"kind": "hnsw",
"hnswParameters": {
"metric": "cosine",
"m": 4,
"efConstruction": 400,
"efSearch": 500
}
}
],
"profiles": [
{
"name": "hnsw_text_3_large",
"algorithm": "alg",
"vectorizer": "azure_openai_text_3_large"
}
],
"vectorizers": [
{
"name": "azure_openai_text_3_large",
"kind": "azureOpenAI",
"azureOpenAIParameters": {
"resourceUri": "https://YOUR-AOAI-RESOURCE.openai.azure.com",
"deploymentId": "text-embedding-3-large",
"apiKey": "<redacted>",
"modelName": "text-embedding-3-large"
}
}
],
"compressions": []
}
Menambahkan profil penilaian
Profil penilaian adalah kriteria untuk peningkatan relevansi. Mereka diterapkan ke bidang non-vektor (teks dan angka) dan dievaluasi selama eksekusi kueri, meskipun perilaku yang tepat tergantung pada versi API yang digunakan untuk membuat indeks.
Profil penilaian lebih mungkin menambahkan nilai ke solusi Anda jika indeks Anda didasarkan pada data terstruktur. Data terstruktur diindeks ke dalam beberapa bidang diskrit, yang berarti profil penilaian Anda dapat memiliki kriteria yang menargetkan konten atau karakteristik bidang tertentu.
Jika Anda membuat indeks menggunakan pratinjau 2025-05-01 atau yang lebih baru, profil penilaian akan dijalankan terakhir. Jika indeks dibuat menggunakan versi API yang lebih lama, profil penilaian dievaluasi sebelum reranking semantik. Karena pengambilan agenik tersedia di API pratinjau yang lebih baru, profil penilaian akan berjalan terakhir. Urutan aktual dari hasil berperingkat semantik ditentukan oleh properti rankingOrder dalam indeks, yang diatur ke boostedRerankerScore (profil penilaian diterapkan) atau rerankerScore (tidak ada profil penilaian).
Anda dapat menggunakan profil penilaian apa pun yang masuk akal untuk indeks Anda. Berikut adalah contoh yang meningkatkan skor pencarian kecocokan jika kecocokan ditemukan di bidang tertentu. Bidang ditimbang dengan meningkatkan perkalian. Misalnya jika kecocokan ditemukan di bidang "Kategori", skor yang telah ditingkatkan dikalikan dengan 5.
"scoringProfiles": [
{
"name": "boostSearchTerms",
"text": {
"weights": {
"Location": 2,
"Category": 5
}
}
}
]
Menambahkan penganalisis
Penganalisis berlaku untuk bidang teks dan dapat berupa penganalisis bahasa atau penganalisis kustom yang mengontrol tokenisasi dalam indeks, seperti mempertahankan karakter khusus atau spasi kosong.
Penganalisis ditentukan dalam indeks pencarian dan ditetapkan ke bidang. Contoh kumpulan bidang menyertakan referensi penganalisis pada potongan teks. Dalam contoh ini, penganalisis default (Lucene standar) diganti dengan penganalisis bahasa Microsoft untuk bahasa Inggris.
{
"name": "page_chunk", "type": "Edm.String",
"searchable": true, "retrievable": true, "filterable": false, "sortable": false, "facetable": false,
"analyzer": "en.microsoft",
"stored": true,
"synonymMaps": []
}
Menambahkan peta sinonim
Peta sinonim memperluas kueri dengan menambahkan sinonim untuk istilah bernama. Misalnya, Anda mungkin memiliki istilah ilmiah atau medis untuk istilah umum.
Peta sinonim didefinisikan sebagai sumber daya tingkat atas pada indeks pencarian dan ditetapkan ke bidang. Contoh kumpulan bidang tidak menyertakan peta sinonim, tetapi jika Anda memiliki ejaan varian nama negara dalam peta sinonim, berikut adalah contoh yang mungkin terlihat jika ditetapkan ke bidang "lokasi" hipotetis.
{
"name":"locations",
"type":"Edm.String",
"searchable":true,
"synonymMaps":[ "country-synonyms" ]
}
Menambahkan indeks Anda ke sumber pengetahuan
Jika Anda memiliki indeks mandiri yang sudah ada, dan tidak dihasilkan oleh sumber pengetahuan, buat objek berikut:
Sumber pengetahuan searchIndex untuk merangkum konten terindeks Anda.
Pangkalan pengetahuan yang mewakili satu atau beberapa sumber pengetahuan dan instruksi lain untuk pengambilan pengetahuan.