Panduan ini menunjukkan cara mendasarkan model Gemini pada data Anda di Elasticsearch. Panduan ini mencakup topik berikut:
- Ringkasan perujukan dengan Elasticsearch: Pelajari manfaat perujukan dengan Elasticsearch dan model yang didukung.
- Menyiapkan template penelusuran di Elasticsearch: Konfigurasi template penelusuran di instance Elasticsearch Anda untuk menyiapkan data Anda untuk perujukan.
- Membuat respons berdasar dengan Elasticsearch: Gunakan konsol Google Cloud atau REST API untuk membuat respons model yang didasarkan pada data Elasticsearch Anda.
Diagram berikut merangkum alur kerja keseluruhan:
Ringkasan perujukan dengan Elasticsearch
Perujukan menggunakan set data publik dan pribadi untuk memberikan konteks dan fakta untuk merujuk respons Model Bahasa Besar (LLM). Dengan perujukan menggunakan Elasticsearch, Anda dapat menggunakan indeks Elasticsearch yang ada untuk meningkatkan kualitas dan keandalan output Gemini, mengurangi halusinasi, dan membantu memastikan respons relevan dengan data Anda.
Fitur ini memungkinkan Anda membuat aplikasi RAG yang canggih seperti berikut:
- Ringkasan penelusuran generatif
- Chatbot tanya jawab dengan data perusahaan
- Agen yang didasarkan pada data Anda
Anda dapat mendasarkan jawaban pada hingga 10 sumber data sekaligus. Anda dapat menggabungkan grounding dengan Elasticsearch dan Grounding dengan Google Penelusuran untuk menghubungkan model dengan informasi global, berbagai topik, atau informasi terbaru di internet.
Model yang didukung
Model berikut mendukung perujukan dengan Elasticsearch dengan input teks saja:
- Gemini 2.5 Flash-Lite
- Gemini 2.5 Flash dengan audio native Live API
Pratinjau - Gemini 2.0 Flash dengan Live API
Pratinjau - Gemini 2.5 Pro
- Gemini 2.5 Flash
- Gemini 2.0 Flash
Menyiapkan template penelusuran di Elasticsearch
Praktik terbaik
Untuk mendapatkan respons perujukan terbaik, ikuti prinsip berikut saat Anda membuat template penelusuran:
- Hanya sertakan data yang relevan dan berguna. Misalnya, dalam katalog produk, menentukan URL gambar mungkin tidak membantu LLM menjawab perintah tentang properti produk kecuali perintah tersebut secara khusus meminta URL. Demikian pula, hindari mengekspor vektor embedding.
- Memberikan jumlah hasil yang lebih banyak. Perujukan menghilangkan hasil Elasticsearch dengan relevansi rendah terhadap perintah Anda. Untuk mendapatkan semua konteks yang relevan, berikan jumlah hasil Elasticsearch yang lebih tinggi.
- Susun data Anda secara efektif. Data hasil dapat berada dalam satu kolom atau tersebar di beberapa kolom.
Contoh template
Anda dapat menggunakan template penelusuran Anda sendiri. Template penelusuran kNN generik berikut direkomendasikan untuk perujukan Elasticsearch. Untuk template penelusuran tambahan, lihat repositori GitHub.
Contoh berikut menunjukkan template penelusuran kNN generik untuk penelusuran semantik dengan Vertex AI.
PUT _scripts/google-template-knn-multioutput
{
"script": {
"lang": "mustache",
"source": {
"_source": {
"excludes": [ "title_embedding", "description_embedding", "images"]
},
"size": "num_hits",
"knn" : [
{
"field": "description_embedding",
"k": 5,
"num_candidates": 10,
"query_vector_builder": {
"text_embedding": {
"model_id": "googlevertexai_embeddings_004",
"model_text": "query"
}
},
"boost": 0.4
},
{
"field": "title_embedding",
"k": 5,
"num_candidates": 10,
"query_vector_builder": {
"text_embedding": {
"model_id": "googlevertexai_embeddings_004",
"model_text": "query"
}
},
"boost": 0.6
}
]
}
}
}
Membuat respons yang relevan dengan Elasticsearch
Anda dapat membuat respons berbasis data yang terpercaya menggunakan konsol Google Cloud untuk pengujian cepat atau REST API untuk integrasi ke dalam aplikasi Anda.
Metode | Deskripsi | Kasus Penggunaan |
---|---|---|
Google Cloud console | Antarmuka pengguna grafis dalam konsol Google Cloud untuk membuat dan menguji perintah secara interaktif. | Paling cocok untuk eksperimen cepat, pembuatan prototipe, dan pengguna yang lebih memilih antarmuka visual tanpa menulis kode. |
REST API | Antarmuka terprogram untuk mengintegrasikan kemampuan perujukan langsung ke dalam aplikasi Anda. | Ideal untuk mengotomatiskan alur kerja, membangun aplikasi produksi, dan berintegrasi dengan sistem yang ada. |
Konsol
Untuk melakukan perujukan dengan Elasticsearch di konsol Google Cloud , ikuti langkah-langkah berikut:
Buka halaman Create prompt di Vertex AI Studio.
Di panel Setelan, untuk mendasarkan data Anda, klik tombol Dasar: Data Anda.
Di panel Sesuaikan Perujukan, pilih Elasticsearch.
Di kolom Elasticsearch endpoint, masukkan endpoint.
Di kolom Elasticsearch API Key, masukkan Kunci API.
Di kolom Elasticsearch index, masukkan indeks.
Di kolom Elasticsearch search template, masukkan template penelusuran.
Untuk menyesuaikan jumlah hit, gunakan penggeser Jumlah hit.
Klik Simpan.
Masukkan perintah Anda.
Klik Kirim.
Memahami respons Anda
Jika perintah model Anda berhasil melakukan perujukan ke datastore Elasticsearch menggunakan Vertex AI Studio atau API, respons model akan menyertakan metadata dengan kutipan dan konten sumber. Jika relevansi sumber rendah atau informasi tidak lengkap terjadi dalam respons model, metadata mungkin tidak diberikan, dan respons perintah tidak akan di-grounding.
REST
Bagian ini menjelaskan cara Anda menggunakan Vertex AI API untuk mendasari respons LLM Anda.
Prasyarat
Sebelum dapat mendasarkan respons LLM dengan Elasticsearch, Anda harus menyelesaikan langkah-langkah berikut:
Aktifkan Vertex AI API: Pastikan Vertex AI API diaktifkan untuk project Google Cloud Anda.
Instal dan login ke CLI Google Cloud CLI: Instal dan lakukan inisialisasi alat command line gcloud CLI.
Penyiapan Elasticsearch: Gunakan cluster dan indeks Elasticsearch yang ada yang ingin Anda gunakan untuk perujukan. Dapatkan informasi berikut dari penyiapan Elasticsearch Anda:
- Endpoint: URL cluster Elasticsearch Anda.
- Nama Indeks: Nama indeks yang ingin Anda telusuri, seperti my-data-index.
- Kunci API: Kunci API yang memungkinkan akses ke cluster Elasticsearch Anda. Kunci API harus diawali dengan awalan ApiKey.
Membuat template penelusuran Elasticsearch: Gunakan sumber data Elasticsearch yang menggunakan template referensi yang menampilkan data hasil untuk perujukan.
Akses API
Gunakan petunjuk berikut untuk mendasari Gemini dengan sumber data Elasticsearch menggunakan Vertex AI API.
Menyiapkan permintaan pembuatan dengan perujukan
Untuk mengirimkan perintah teks dan menyandarkannya dengan Elasticsearch, kirim permintaan POST ke Vertex AI API. Minimal, Anda harus memberikan isi permintaan. Pastikan untuk melakukan penggantian berikut:
- QUERY: Perintah teks untuk merujuk.
- ELASTIC_SEARCH_ENDPOINT: Jalur endpoint absolut untuk resource Elasticsearch yang akan digunakan.
- ELASTIC_SEARCH_API_KEY: Kunci API untuk endpoint data Elasticsearch.
- INDEX_NAME: Nama indeks Elasticsearch yang digunakan untuk perujukan.
- SEARCH_TEMPLATE_NAME: Template penelusuran Elasticsearch yang digunakan untuk perujukan.
- NUM_HITS: Jumlah hasil yang ditampilkan dari sumber data Elasticsearch dan digunakan untuk perujukan.
Meminta isi JSON:
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "QUERY"
}
]
}
],
"tools": [{
"retrieval": {
"externalApi": {
"api_spec": "ELASTIC_SEARCH",
"endpoint": "ELASTIC_SEARCH_ENDPOINT",
"apiAuth": {
"apiKeyConfig": {
"apiKeyString": "ApiKey ELASTIC_SEARCH_API_KEY"
}
},
"elasticSearchParams": {
"index": "INDEX_NAME",
"searchTemplate": "SEARCH_TEMPLATE_NAME",
"numHits": "NUM_HITS",
}
}
}
}]
}
Untuk mengetahui informasi selengkapnya tentang kolom API lainnya seperti petunjuk sistem dan percakapan multi-giliran, lihat Panduan pemula AI Generatif.
Mengirim permintaan API
Anda dapat menyimpan isi permintaan dalam file bernama request.json
.
Kemudian, jalankan permintaan POST API, dan lakukan penggantian berikut:
- LOCATION: Region untuk memproses permintaan. Untuk mengetahui informasi selengkapnya tentang lokasi yang tersedia, lihat Lokasi AI Generatif di Vertex AI.
- PROJECT_ID: ID project Google Cloud Anda. Untuk mengetahui informasi selengkapnya tentang ID project, lihat Membuat dan mengelola project.
- MODEL_ID: ID model multimodal.
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent"
Anda akan melihat respons JSON seperti berikut:
{
"candidates": [
{
"content": {
"role": "model",
"parts": [
{
"text": "Based on the information ..."
}
]
},
"finishReason": "STOP",
"safetyRatings": [ "..." ],
"groundingMetadata": {
"groundingChunks": [
{
"retrievedContext": {
"text": "ipsum lorem ..."
}
},
{...},
{...},
],
"groundingSupports": [
{
"segment": {
"startIndex": 25,
"endIndex": 147,
"text": "ipsum lorem ..."
},
"groundingChunkIndices": [1,2],
"confidenceScores": [0.6626542, 0.82018316],
},
],
},
}
],
}
Memahami respons Anda
Respons dari kedua API tersebut mencakup teks yang dihasilkan LLM, yang disebut kandidat. Jika perintah model Anda berhasil mendasarkan pada sumber data Elasticsearch, respons akan menyertakan metadata perujukan, yang mengidentifikasi bagian respons yang berasal dari data Elasticsearch Anda. Namun, ada beberapa alasan mengapa metadata ini mungkin tidak diberikan, dan respons prompt tidak akan memiliki rujukan. Alasan tersebut mencakup relevansi sumber yang rendah atau informasi yang tidak lengkap dalam respons model.
Berikut adalah perincian data output:
- Peran: Menunjukkan pengirim jawaban berbasis informasi. Karena respons
selalu berisi teks yang dirujuk, peran selalu
model
. - Teks: Jawaban yang dirujuk yang dihasilkan oleh LLM.
- Metadata perujukan: Informasi tentang sumber perujukan, yang berisi elemen berikut:
- Potongan perujukan: Daftar hasil dari indeks Elasticsearch Anda yang mendukung jawaban.
- Dukungan perujukan: Informasi tentang klaim tertentu dalam jawaban yang dapat digunakan untuk menampilkan kutipan:
- Segmen: Bagian jawaban model yang didukung oleh potongan perujukan.
- Indeks potongan perujukan: Indeks potongan perujukan dalam daftar potongan perujukan yang sesuai dengan klaim ini.
- Skor keyakinan: Angka dari 0 hingga 1 yang menunjukkan seberapa kuat klaim tersebut didasarkan pada kumpulan perujukan yang disediakan. Tidak tersedia untuk Gemini 2.5 Pro dan Gemini 2.5 Flash serta yang lebih baru.
Memahami respons
Respons dari Vertex AI Studio atau API mencakup teks yang dihasilkan LLM, yang disebut kandidat. Jika perintah model Anda berhasil mendasarkan pada sumber data Elasticsearch, respons akan menyertakan metadata perujukan yang mengidentifikasi bagian respons yang berasal dari data Anda.
Namun, jika relevansi sumber rendah atau informasi tidak lengkap, metadata mungkin tidak diberikan, dan respons tidak akan memiliki rujukan.
Respons API berisi detail berikut:
- Peran: Menunjukkan pengirim jawaban. Untuk respons yang dihasilkan model, perannya adalah
model
. - Teks: Jawaban yang dihasilkan oleh LLM.
- Metadata perujukan: Informasi tentang sumber perujukan, yang berisi elemen berikut:
- Potongan perujukan: Daftar hasil dari indeks Elasticsearch Anda yang mendukung jawaban.
- Dukungan perujukan: Informasi tentang klaim tertentu dalam jawaban
yang dapat digunakan untuk menampilkan kutipan:
- Segmen: Bagian jawaban model yang didukung oleh potongan perujukan.
- Indeks potongan perujukan: Indeks potongan perujukan dalam daftar potongan perujukan yang sesuai dengan klaim ini.
- Skor keyakinan: Angka dari 0 hingga 1 yang menunjukkan seberapa kuat klaim tersebut didasarkan pada kumpulan perujukan yang disediakan. Tidak tersedia untuk Gemini 2.5 Pro dan Gemini 2.5 Flash serta yang lebih baru.
Langkah berikutnya
- Untuk mempelajari cara mengirim permintaan prompt chat, lihat Chat multi-giliran.
- Untuk mempelajari praktik terbaik AI yang bertanggung jawab dan filter keamanan Vertex AI, lihat Praktik terbaik keamanan.