Membuat jawaban yang dirujuk dengan RAG

Sebagai bagian dari pengalaman Retrieval Augmented Generation (RAG) di Aplikasi AI, Anda dapat membuat jawaban yang memiliki rujukan untuk perintah berdasarkan sumber perujukan berikut:

  • Google Penelusuran: Gunakan Grounding dengan Google Penelusuran jika Anda ingin menghubungkan model dengan informasi global, berbagai topik, atau informasi terbaru di internet. Melakukan grounding dengan Google Penelusuran mendukung pengambilan dinamis yang memberi Anda opsi untuk membuat Hasil dengan Grounding dengan Google Penelusuran hanya jika diperlukan. Oleh karena itu, konfigurasi pengambilan dinamis mengevaluasi apakah perintah memerlukan pengetahuan tentang peristiwa terbaru dan mengaktifkan Perujukan dengan Google Penelusuran. Untuk mengetahui informasi selengkapnya, lihat Pengambilan dinamis.
  • Teks inline: Gunakan perujukan dengan teks inline untuk merujuk jawaban dalam potongan teks yang disebut teks fakta yang disediakan dalam permintaan. Teks fakta adalah pernyataan yang diberikan pengguna yang dianggap faktual untuk permintaan tertentu. Model tidak memeriksa keaslian teks fakta.
  • Penyimpanan data Vertex AI Search: Gunakan perujukan dengan Vertex AI Search jika Anda ingin menghubungkan model ke dokumen perusahaan dari penyimpanan data Vertex AI Search.

Halaman ini menjelaskan cara membuat jawaban yang memiliki rujukan berdasarkan sumber perujukan ini menggunakan pendekatan berikut:

Selain itu, Anda dapat memilih untuk melakukan streaming jawaban dari model. Menghasilkan jawaban dengan perujukan yang baik melalui streaming adalah fitur Eksperimental.

Anda dapat menggunakan metode lain untuk menghasilkan jawaban yang berisi rujukan, agar sesuai dengan aplikasi Anda. Untuk mengetahui informasi selengkapnya, lihat Vertex AI API untuk membangun pengalaman penelusuran dan RAG.

Terminologi

Sebelum Anda menggunakan metode pembuatan jawaban berbasis perujukan, sebaiknya pahami input dan output, cara menyusun permintaan, dan terminologi terkait RAG.

Istilah RAG

RAG adalah metodologi yang memungkinkan Model Bahasa Besar (LLM) menghasilkan respons yang didasarkan pada sumber data pilihan Anda. Ada dua tahap dalam RAG:

  1. Pengambilan: Mendapatkan fakta yang paling relevan dengan cepat dapat menjadi masalah penelusuran yang umum. Dengan RAG, Anda dapat dengan cepat mengambil fakta yang penting untuk membuat jawaban.
  2. Pembuatan: Fakta yang diambil digunakan oleh LLM untuk menghasilkan respons yang berisi rujukan.

Oleh karena itu, metode pembuatan jawaban yang berisi rujukan mengambil fakta dari sumber perujukan dan menghasilkan jawaban yang berisi rujukan.

Data input

Metode pembuatan jawaban berbasis data memerlukan input berikut dalam permintaan:

  • Peran: Pengirim teks tertentu yang berupa pengguna (user) atau model (model).

  • Teks: Jika perannya adalah user, teksnya adalah perintah dan jika perannya adalah model, teksnya adalah jawaban yang memiliki rujukan. Cara Anda menentukan peran dan teks dalam permintaan ditentukan sebagai berikut:

    • Untuk pembuatan jawaban satu putaran, pengguna mengirimkan teks perintah dalam permintaan dan model mengirimkan teks jawaban dalam respons.
    • Untuk pembuatan jawaban multi-turn, permintaan berisi pasangan perintah-jawaban untuk semua turn sebelumnya dan teks perintah dari pengguna untuk turn saat ini. Oleh karena itu, dalam permintaan tersebut, peran user adalah untuk teks perintah dan model untuk teks jawaban.
  • Petunjuk sistem: Pengantar pada perintah Anda yang mengatur perilaku model dan mengubah output yang sesuai. Misalnya, Anda dapat menambahkan persona ke jawaban yang dihasilkan atau menginstruksikan model untuk memformat teks output dengan cara tertentu. Untuk pembuatan jawaban multi-giliran, Anda harus memberikan petunjuk sistem untuk setiap giliran. Untuk mengetahui informasi selengkapnya, lihat Menggunakan petunjuk sistem.

  • Sumber perujukan: Sumber tempat jawaban dirujuk dan dapat berupa satu atau beberapa sumber berikut:

    • Google Penelusuran: Melakukan grounding jawaban dengan hasil Google Penelusuran. Jika sumber perujukan adalah Google Penelusuran, Anda dapat menentukan konfigurasi pengambilan dinamis dengan nilai minimum pengambilan dinamis. Untuk mengetahui informasi selengkapnya, lihat Pengambilan dinamis.

    • Teks inline: Mendasarkan jawaban pada teks fakta yang disediakan dalam permintaan. Teks fakta adalah pernyataan yang diberikan pengguna yang dianggap faktual untuk permintaan tertentu. Model tidak memeriksa keaslian teks fakta. Anda dapat memberikan maksimum 100 teks fakta di setiap sumber teks inline. Teks fakta dapat didukung menggunakan atribut meta, seperti judul, penulis, dan URI. Atribut meta ini ditampilkan dalam respons saat mengutip potongan yang mendukung jawaban.

    • Penyimpanan data Vertex AI Search: Melakukan grounding jawaban dalam dokumen dari penyimpanan data Vertex AI Search. Anda tidak dapat menentukan penyimpanan data penelusuran situs sebagai sumber perujukan.

    Dalam permintaan tertentu, Anda dapat memberikan sumber teks inline dan sumber penyimpanan data Vertex AI Search. Anda tidak dapat menggabungkan Google Penelusuran dengan salah satu sumber ini. Oleh karena itu, jika Anda ingin mendasarkan jawaban Anda pada hasil Google Penelusuran, Anda harus mengirim permintaan terpisah yang menentukan Google Penelusuran sebagai satu-satunya sumber perujukan.

    Anda dapat memberikan maksimum 10 sumber perujukan dalam urutan apa pun. Misalnya, anggap Anda memberikan sumber perujukan dengan jumlah berikut, dalam urutan berikut untuk mendapatkan total 10 sumber perujukan:

    • Tiga sumber teks inline, yang masing-masing dapat berisi maksimum 100 teks fakta
    • Enam penyimpanan data Vertex AI Search
    • Satu sumber teks inline, yang berisi maksimum 100 teks fakta

    Setiap sumber diberi indeks sesuai urutan penentuannya dalam permintaan. Misalnya, jika Anda telah menentukan kombinasi sumber dalam permintaan, indeks sumber ditetapkan seperti yang diilustrasikan dalam tabel berikut:

    Sumber perujukan Indeks
    Teks inline #1 0
    Teks inline #2 1
    Penyimpanan data Vertex AI Search #1 2
    Teks inline #3 3
    Penyimpanan data Vertex AI Search #2 4

    Indeks ini dikutip dalam respons dan berguna saat melacak asal-usulnya.

  • Spesifikasi pembuatan: Spesifikasi untuk konfigurasi model yang terdiri dari informasi berikut:

    • ID Model: Menentukan model Gemini Vertex AI yang akan digunakan untuk pembuatan jawaban. Untuk mengetahui daftar model yang dapat Anda gunakan untuk menghasilkan jawaban berbasis fakta, lihat Model yang didukung.

    • Parameter model: Tentukan parameter yang dapat Anda tetapkan untuk model yang Anda pilih untuk digunakan. Parameter ini adalah: bahasa, temperatur, top-P, dan top-K. Untuk mengetahui detail tentang parameter ini, lihat Parameter model Gemini.

  • Kode bahasa: Bahasa jawaban yang dihasilkan umumnya ditetapkan agar sesuai dengan bahasa perintah. Jika tidak ada satu bahasa dalam perintah (misalnya, jika perintah sangat singkat dan dapat valid dalam beberapa bahasa), maka kolom kode bahasa menentukan bahasa jawaban.

    Untuk mengetahui daftar kode bahasa, lihat Bahasa.

  • Lintang dan bujur: Menentukan lintang dan bujur pengguna. Jika kueri berisi pertanyaan khusus lokasi, seperti "Cari kedai kopi di dekat saya", maka kolom ini akan digunakan. Jika bahasa kueri tidak dapat ditentukan dan kode bahasa tidak ditetapkan, lintang dan bujur akan digunakan untuk menentukan bahasa jawaban.

Data output

Respons yang dihasilkan model disebut kandidat dan berisi data berikut. Tidak semua kolom mungkin ada dalam output.

  • Peran: Pengirim jawaban berbasis informasi. Respons selalu berisi teks jawaban yang memiliki rujukan. Oleh karena itu, peran dalam respons selalu berupa model.

  • Teks: Jawaban yang di-grounding.

  • Skor perujukan: Nilai float dalam rentang [0, 1] yang menunjukkan seberapa baik jawaban dirujuk dalam sumber yang diberikan.

  • Metadata perujukan: Metadata tentang sumber perujukan. Metadata perujukan berisi informasi berikut:

    • Potongan pendukung: Daftar potongan yang mendukung jawaban. Setiap chunk dukungan diberi indeks chunk dukungan yang berguna saat melacak asal. Setiap bagian dukungan berisi hal berikut:

      • Teks potongan: Bagian teks yang dikutip kata demi kata dari sumber yang darinya jawaban atau bagian jawaban (disebut teks klaim) diekstrak. Hal ini mungkin tidak selalu ada dalam respons.
      • Sumber: Indeks yang ditetapkan ke sumber dalam permintaan.
      • Metadata sumber: Metadata tentang potongan. Bergantung pada sumbernya, metadata sumber dapat berupa salah satu dari berikut:

        • Untuk sumber inline, metadata dapat berupa detail tambahan yang ditentukan dalam permintaan seperti judul, penulis, atau URI.
        • Untuk penyimpanan data Vertex AI Search, metadata dapat berupa ID dokumen, judul dokumen, URI (lokasi Cloud Storage), atau nomor halaman.
        • Untuk Grounding dengan Google Penelusuran, saat hasil yang di-grounding dibuat, metadata berisi URI yang mengalihkan ke penayang konten yang digunakan untuk membuat hasil yang di-grounding. Metadata juga berisi domain penayang. URI yang diberikan tetap dapat diakses hingga 30 hari setelah hasil yang memiliki rujukan dibuat.
    • Dukungan perujukan: Merujuk informasi untuk klaim dalam jawaban. Dukungan perujukan berisi informasi berikut:

      • Teks klaim: Jawaban atau bagian jawaban yang didukung dengan teks potongan pendukung.
      • Mendukung indeks potongan: Indeks yang ditetapkan ke potongan dukungan dalam urutan kemunculan potongan dalam daftar potongan dukungan.
      • Kueri penelusuran web: Kueri penelusuran yang disarankan untuk Saran Penelusuran Google.
      • Saran Penelusuran: Jika Anda menerima Saran Penelusuran Google dengan respons, respons tersebut adalah "Hasil dengan Grounding" yang tunduk pada persyaratan layanan untuk Grounding dengan Google Penelusuran. Untuk mengetahui informasi selengkapnya, lihat Persyaratan Layanan. Kolom renderedContent dalam kolom searchEntryPoint adalah kode yang diberikan untuk menerapkan Saran Penelusuran Google. Untuk menggunakan Saran Penelusuran Google, lihat Menggunakan Saran Penelusuran Google.

Menghasilkan jawaban yang relevan dalam satu giliran

Bagian ini menjelaskan cara membuat jawaban yang didasarkan pada sumber berikut:

Mendasarkan jawaban pada teks inline dan penyimpanan data Vertex AI Search

Contoh berikut menunjukkan cara mengirim teks perintah dengan menentukan teks inline dan penyimpanan data Vertex AI Search sebagai sumber perujukan. Anda tidak dapat menentukan penyimpanan data penelusuran situs sebagai sumber perujukan. Contoh ini menggunakan metode generateGroundedContent.

REST

  1. Kirim perintah dalam permintaan curl berikut.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \
    -d '
    {
    "contents": [
     {
       "role": "user",
       "parts": [
         {
           "text": "PROMPT_TEXT"
         }
       ]
     }
    ],
    "systemInstruction": {
       "parts": {
           "text": "SYSTEM_INSTRUCTION"
       }
    },
    "groundingSpec": {
     "groundingSources": [
       {
         "inlineSource": {
           "groundingFacts": [
             {
               "factText": "FACT_TEXT_1",
               "attributes": {
                 "title": "TITLE_1",
                 "uri": "URI_1",
                 "author": "AUTHOR_1"
               }
             }
           ]
         }
       },
       {
         "inlineSource": {
           "groundingFacts": [
             {
               "factText": "FACT_TEXT_2",
               "attributes": {
                 "title": "TITLE_2",
                 "uri": "URI_2"
               }
             },
             {
               "factText": "FACT_TEXT_3",
               "attributes": {
                 "title": "TITLE_3",
                 "uri": "URI_3"
               }
             }
           ]
         }
       },
       {
         "searchSource": {
           "servingConfig": "projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID_1/servingConfigs/default_search"
         }
       },
       {
         "searchSource": {
           "servingConfig": "projects/PROJECT_NUMBER/locations/global/collections/default_collection/engines/APP_ID_2/servingConfigs/default_search"
         }
       }
      ]
    },
    "generationSpec": {
      "modelId": "MODEL_ID",
      "temperature": TEMPERATURE,
      "topP": TOP_P,
      "topK": TOP_K
    },
    "user_context": {
      "languageCode: "LANGUAGE_CODE",
      "latLng": {
        "latitude": LATITUDE,
        "longitude": LONGITUDE
     },
    }
    }'
    

    Ganti kode berikut:

    • PROJECT_NUMBER: jumlah project Google Cloud Anda.
    • PROMPT_TEXT: perintah dari pengguna.
    • SYSTEM_INSTRUCTION: kolom opsional untuk memberikan kata pengantar atau beberapa konteks tambahan.
    • FACT_TEXT_N: teks inline untuk mendasari jawaban. Anda dapat memberikan maksimum 100 teks fakta.
    • TITLE_N: kolom opsional untuk menetapkan atribut meta judul untuk teks inline.
    • URI_N: kolom opsional untuk menetapkan atribut meta URI untuk teks inline.
    • AUTHOR_N: kolom opsional untuk menyetel atribut meta penulis untuk teks inline.
    • APP_ID_N: ID aplikasi Vertex AI Search.
    • MODEL_ID: kolom opsional untuk menetapkan ID model Gemini yang ingin Anda gunakan untuk membuat jawaban berbasis perujukan. Untuk mengetahui daftar ID model yang tersedia, lihat Model yang didukung.
    • TEMPERATURE: kolom opsional untuk menyetel suhu yang digunakan untuk pengambilan sampel. Google merekomendasikan suhu 0,0. Untuk mengetahui informasi selengkapnya, lihat Parameter model Gemini.
    • TOP_P: kolom opsional untuk menetapkan nilai top-P model. Untuk mengetahui informasi selengkapnya, lihat Parameter model Gemini.
    • TOP_K: kolom opsional untuk menetapkan nilai top-K untuk model. Untuk mengetahui informasi selengkapnya, lihat Parameter model Gemini.
    • LANGUAGE_CODE: kolom opsional yang dapat digunakan untuk menyetel bahasa jawaban yang dihasilkan dan untuk teks potongan yang ditampilkan. Jika bahasa tidak dapat ditentukan dari kueri, kolom ini akan digunakan. Nilai defaultnya adalah en. Untuk daftar kode bahasa, lihat Bahasa.
    • LATITUDE: kolom opsional untuk menetapkan garis lintang. Masukkan nilai dalam derajat desimal—misalnya, -25.34.
    • LONGITUDE: kolom opsional untuk menetapkan garis bujur. Masukkan nilai dalam derajat desimal—misalnya, 131.04.

Contoh pembuatan jawaban sekali putaran yang didasarkan pada teks inline dan Vertex AI Search

Dalam contoh berikut, permintaan menentukan sumber perujukan berikut: satu fakta teks inline dan satu penyimpanan data Vertex AI Search. Contoh ini menggunakan metode generateGroundedContent. Contoh ini juga menggunakan petunjuk sistem untuk mengakhiri jawaban dengan emoji senyum.

REST

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \
-d '
{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "text": "How did Google do in 2020? Where can I find BigQuery docs?"
        }
      ]
    }
  ],
  "systemInstruction": {
      "parts": {
          "text": "Add a smiley emoji after the answer."
      }
  },
  "groundingSpec": {
    "groundingSources": [
      {
        "inline_source": {
          "grounding_facts": [
            {
              "fact_text": "The BigQuery documentation can be found at https://cloud.google.com/bigquery/docs/introduction",
              "attributes": {
                "title": "BigQuery Overview",
                "uri": "https://cloud.google.com/bigquery/docs/introduction"
              }
            }
          ]
        }
      },
      {
        "searchSource": {
          "servingConfig": "projects/123456/locations/global/collections/default_collection/engines/app_id_example/servingConfigs/default_search"
        }
      }
    ]
  },
  "generationSpec": {
    "modelId": "gemini-1.5-flash"
  },
  "user_context": {
    "languageCode: "en",
    "latLng": {
       "latitude": 37.422131,
       "longitude": -122.084801
    }
  }
}'

Membuat jawaban yang relevan dengan Google Penelusuran

Anda dapat men-grounding respons yang dihasilkan dengan data web yang tersedia secara publik.

Pengambilan dinamis

Anda dapat menggunakan pengambilan dinamis dalam permintaan Anda untuk memilih kapan harus menonaktifkan perujukan dengan Google Penelusuran. Hal ini berguna saat perintah tidak memerlukan jawaban yang di-grounding dengan Google Penelusuran dan model yang didukung dapat memberikan jawaban berdasarkan pengetahuan mereka tanpa melakukan grounding. Hal ini membantu Anda mengelola latensi, kualitas, dan biaya secara lebih efektif.

Skor dan nilai minimum prediksi pengambilan dinamis

Saat Anda mengirim permintaan untuk membuat jawaban berbasis data, Aplikasi AI akan menetapkan skor prediksi ke perintah. Skor prediksi adalah nilai floating point dalam rentang [0,1]. Nilainya bergantung pada apakah perintah dapat memperoleh manfaat dari perujukan jawaban dengan informasi terkini dari Google Penelusuran. Oleh karena itu, perintah yang memerlukan jawaban yang didasarkan pada fakta terbaru di web memiliki skor prediksi yang lebih tinggi, dan perintah yang jawaban yang dihasilkan modelnya sudah memadai memiliki skor prediksi yang lebih rendah.

Berikut adalah contoh beberapa perintah dan skor prediksinya.

Perintah Skor prediksi Komentar
"Tulis puisi tentang bunga peony" 0,13 Model dapat mengandalkan pengetahuannya dan jawaban tidak memerlukan perujukan
"Suggest a toy for a 2yo child" (Sarankan mainan untuk anak berusia 2 tahun) 0,36 Model dapat mengandalkan pengetahuannya dan jawaban tidak memerlukan perujukan
"Bisa berikan resep guacamole dengan sentuhan Asia?" 0,55 Google Penelusuran dapat memberikan jawaban yang di-grounding, tetapi grounding tidak sepenuhnya diperlukan; pengetahuan model mungkin sudah cukup
"Apa itu Aplikasi AI? Bagaimana penagihan perujukan di Aplikasi AI?" 0,72 Memerlukan Google Penelusuran untuk menghasilkan jawaban yang memiliki rujukan yang baik
"Siapa yang memenangkan grand prix F1 terakhir?" 0,97 Memerlukan Google Penelusuran untuk menghasilkan jawaban yang memiliki rujukan yang baik

Dalam permintaan pembuatan jawaban berbasis rujukan, Anda dapat menentukan konfigurasi pengambilan dinamis dengan nilai minimum. Nilai minimum adalah nilai floating point dalam rentang [0,1] dan default-nya adalah 0,7. Jika nilai minimum adalah nol, respons selalu didasarkan pada Google Penelusuran. Untuk semua nilai batas lainnya, berlaku hal berikut:

  • Jika skor prediksi lebih besar dari atau sama dengan nilai minimum, jawaban akan didasarkan pada Google Penelusuran. Nilai minimum yang lebih rendah menunjukkan bahwa lebih banyak perintah memiliki respons yang dihasilkan menggunakan Perujukan dengan Google Penelusuran.
  • Jika skor prediksi kurang dari nilai minimum, model mungkin masih membuat jawaban, tetapi tidak di-grounding dengan Google Penelusuran.

Untuk menemukan nilai minimum yang sesuai dengan kebutuhan bisnis Anda, Anda dapat membuat serangkaian kueri representatif yang diperkirakan akan Anda temui. Kemudian, Anda dapat mengurutkan kueri menurut skor prediksi dalam respons dan memilih nilai minimum yang sesuai untuk kasus penggunaan Anda.

Mencari rujukan jawaban dengan Google Penelusuran

Contoh berikut menunjukkan cara membuat jawaban yang memiliki rujukan dari perintah dengan menentukan Google Penelusuran sebagai sumber perujukan. Contoh ini menggunakan metode generateGroundedContent.

REST

  1. Kirim perintah dalam permintaan curl berikut.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \
    -d '
    {
    "contents": [
     {
       "role": "user",
       "parts": [
         {
           "text": "PROMPT_TEXT"
         }
       ]
     }
    ],
    "systemInstruction": {
       "parts": {
           "text": "SYSTEM_INSTRUCTION"
       }
    },
    "groundingSpec": {
     "groundingSources": [
     {
         "googleSearchSource": {
              "dynamicRetrievalConfig": {
                  "predictor":{
                      "threshold": DYNAMIC_RETRIEVAL_THRESHOLD
                  }
              }
         }
     }
    ]
    },
    "generationSpec": {
     "modelId": "MODEL_ID",
     "temperature": TEMPERATURE,
     "topP": TOP_P,
     "topK": TOP_K
    },
    "user_context": {
     "languageCode: "LANGUAGE_CODE",
     "latLng": {
       "latitude": LATITUDE,
       "longitude": LONGITUDE
     },
    }
    }'
    

    Ganti kode berikut:

    • PROJECT_NUMBER: jumlah project Google Cloud Anda.
    • PROMPT_TEXT: perintah dari pengguna.
    • SYSTEM_INSTRUCTION: kolom opsional untuk memberikan kata pengantar atau beberapa konteks tambahan.
    • DYNAMIC_RETRIEVAL_THRESHOLD: kolom opsional untuk menetapkan nilai minimum untuk memanggil konfigurasi pengambilan dinamis. Nilai floating point dalam rentang [0,1]. Jika Anda menambahkan kolom dynamicRetrievalConfig, tetapi tidak menetapkan kolom predictor atau threshold, nilai minimum akan ditetapkan secara default ke 0,7. Jika Anda tidak menetapkan kolom dynamicRetrievalConfig, jawaban akan selalu memiliki rujukan.
    • MODEL_ID: kolom opsional untuk menetapkan ID model Gemini yang ingin Anda gunakan untuk membuat jawaban berbasis perujukan. Untuk mengetahui daftar ID model yang tersedia, lihat Model yang didukung.
    • TEMPERATURE: kolom opsional untuk menyetel suhu yang digunakan untuk pengambilan sampel. Google merekomendasikan suhu 0,0. Untuk mengetahui informasi selengkapnya, lihat Parameter model Gemini.
    • TOP_P: kolom opsional untuk menetapkan nilai top-P model. Untuk mengetahui informasi selengkapnya, lihat Parameter model Gemini.
    • TOP_K: kolom opsional untuk menetapkan nilai top-K untuk model. Untuk mengetahui informasi selengkapnya, lihat Parameter model Gemini.
    • LANGUAGE_CODE: kolom opsional yang dapat digunakan untuk menyetel bahasa jawaban yang dihasilkan dan untuk teks potongan yang ditampilkan. Jika bahasa tidak dapat ditentukan dari kueri, kolom ini akan digunakan. Nilai defaultnya adalah en. Untuk daftar kode bahasa, lihat Bahasa.
    • LATITUDE: kolom opsional untuk menetapkan garis lintang. Masukkan nilai dalam derajat desimal—misalnya, -25.34.
    • LONGITUDE: kolom opsional untuk menetapkan garis bujur. Masukkan nilai dalam derajat desimal—misalnya, 131.04.

Dalam contoh berikut, permintaan menentukan Google Penelusuran sebagai sumber perujukan. Contoh ini menggunakan metode generateGroundedContent. Contoh ini juga menggunakan petunjuk sistem untuk mengakhiri jawaban dengan emoji senyum.

REST

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \
-d '
{
"contents": [{
  "role": "user",
  "parts": [{
    "text": "What is ai applications?"
}]
}],
"systemInstruction": {
   "parts": {
      "text": "Add a smiley emoji after the answer."
   }
},
"groundingSpec": {
  "groundingSources": [
  {
      "googleSearchSource": {
        "dynamicRetrievalConfig": {
               "predictor":{
                   "threshold": 0.6
               }
           }
      }
  }
 ]
},
"generationSpec": {
  "modelId": "gemini-1.5-flash"
}
}
'

Menghasilkan jawaban dengan perujukan yang baik dalam beberapa giliran

Dalam pembuatan jawaban multi-turn, di setiap permintaan, Anda harus mengirimkan semua teks yang dipertukarkan antara pengguna dan model di semua turn sebelumnya. Hal ini memastikan kontinuitas dan mempertahankan konteks untuk membuat jawaban atas perintah terbaru.

Untuk mendapatkan jawaban yang memiliki rujukan dengan pembuatan jawaban multi-giliran, lakukan hal berikut:

REST

Contoh berikut menunjukkan cara mengirim teks perintah lanjutan selama beberapa giliran. Contoh ini menggunakan metode generateGroundedContent dan merujuk jawaban dengan Google Penelusuran. Anda dapat menggunakan langkah-langkah serupa untuk membuat jawaban yang berisi rujukan menggunakan sumber perujukan lainnya.

  1. Kirim perintah pertama dalam permintaan curl berikut.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \
    -d '
    {
    "contents": [
     {
       "role": "user",
       "parts": [
         {
           "text": "PROMPT_TEXT_TURN_1"
         }
       ]
     }
    ],
    "systemInstruction": {
       "parts": {
           "text": "SYSTEM_INSTRUCTION_TURN_1"
       }
    },
    "groundingSpec": {
     "groundingSources": [
       {
         "googleSearchSource": {}
       }
     ]
    },
    "generationSpec": {
     "modelId": "MODEL_ID",
     "temperature": TEMPERATURE,
     "topP": TOP_P,
     "topK": TOP_K
    },
    "user_context": {
     "languageCode: "LANGUAGE_CODE",
     "latLng": {
       "latitude": LATITUDE,
       "longitude": LONGITUDE
     },
    }
    }'
    

    Ganti kode berikut:

    • PROJECT_NUMBER: jumlah project Google Cloud Anda.
    • PROMPT_TEXT_TURN_1: teks perintah dari pengguna pada giliran pertama.
    • SYSTEM_INSTRUCTION_TURN_1: kolom opsional untuk memberikan kata pengantar atau beberapa konteks tambahan. Untuk pembuatan jawaban multi-giliran, Anda harus memberikan petunjuk sistem untuk setiap giliran.
    • MODEL_ID: kolom opsional untuk menetapkan ID model Gemini yang ingin Anda gunakan untuk membuat jawaban berbasis perujukan. Untuk mengetahui daftar ID model yang tersedia, lihat Model yang didukung.
    • TEMPERATURE: kolom opsional untuk menyetel suhu yang digunakan untuk pengambilan sampel. Google merekomendasikan suhu 0,0. Untuk mengetahui informasi selengkapnya, lihat Parameter model Gemini.
    • TOP_P: kolom opsional untuk menetapkan nilai top-P model. Untuk mengetahui informasi selengkapnya, lihat Parameter model Gemini.
    • TOP_K: kolom opsional untuk menetapkan nilai top-K untuk model. Untuk mengetahui informasi selengkapnya, lihat Parameter model Gemini.
    • LANGUAGE_CODE: kolom opsional yang dapat digunakan untuk menyetel bahasa jawaban yang dihasilkan dan untuk teks potongan yang ditampilkan. Jika bahasa tidak dapat ditentukan dari kueri, kolom ini akan digunakan. Nilai defaultnya adalah en. Untuk daftar kode bahasa, lihat Bahasa.
    • LATITUDE: kolom opsional untuk menetapkan garis lintang. Masukkan nilai dalam derajat desimal—misalnya, -25.34.
    • LONGITUDE: kolom opsional untuk menetapkan garis bujur. Masukkan nilai dalam derajat desimal—misalnya, 131.04.
  2. Kirim perintah kedua sebagai tindak lanjut. Tambahkan perintah pertama dari pengguna, diikuti dengan jawaban yang sesuai dari model untuk konteks.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/PROJECT_NUMBER/locations/global:generateGroundedContent" \
    -d '
    {
    "contents": [
     {
       "role": "user",
       "parts": [
         {
           "text": "PROMPT_TEXT_TURN_1"
         }
       ]
     },
     {
       "role": "model",
       "parts": [
         {
           "text": "ANSWER_TEXT_TURN_1"
         }
       ]
     },
     {
       "role": "user",
       "parts": [
         {
           "text": "PROMPT_TEXT_TURN_2"
         }
       ]
     }
    ],
    "systemInstruction": {
       "parts": {
           "text": "SYSTEM_INSTRUCTION_TURN_2"
       }
    },
    "groundingSpec": {
     "groundingSources": [
       {
         "googleSearchSource": {}
       }
     ]
    },
    "generationSpec": {
     "modelId": "MODEL_ID",
     "temperature": TEMPERATURE,
     "topP": TOP_P,
     "topK": TOP_K
    },
    "user_context": {
     "languageCode: "LANGUAGE_CODE",
     "latLng": {
       "latitude": LATITUDE,
       "longitude": LONGITUDE
     },
    }
    }'
    

    Ganti kode berikut:

    • PROJECT_NUMBER: jumlah project Google Cloud Anda.
    • PROMPT_TEXT_TURN_1: teks perintah dari pengguna pada giliran pertama.
    • ANSWER_TEXT_TURN_1: teks jawaban dari model pada giliran pertama.
    • PROMPT_TEXT_TURN_2: teks perintah dari pengguna pada giliran kedua.
    • SYSTEM_INSTRUCTION_TURN_2: kolom opsional untuk memberikan kata pengantar atau beberapa konteks tambahan. Untuk pembuatan jawaban multi-giliran, Anda harus memberikan petunjuk sistem untuk setiap giliran.
    • MODEL_ID: kolom opsional untuk menetapkan ID model Gemini yang ingin Anda gunakan untuk membuat jawaban berbasis perujukan. Untuk mengetahui daftar ID model yang tersedia, lihat Model yang didukung.
    • TEMPERATURE: kolom opsional untuk menyetel suhu yang digunakan untuk pengambilan sampel. Google merekomendasikan suhu 0,0. Untuk mengetahui informasi selengkapnya, lihat Parameter model Gemini.
    • TOP_P: kolom opsional untuk menetapkan nilai top-P model. Untuk mengetahui informasi selengkapnya, lihat Parameter model Gemini.
    • TOP_K: kolom opsional untuk menetapkan nilai top-K untuk model. Untuk mengetahui informasi selengkapnya, lihat Parameter model Gemini.
    • LANGUAGE_CODE: kolom opsional yang dapat digunakan untuk menyetel bahasa jawaban yang dihasilkan dan untuk teks potongan yang ditampilkan. Jika bahasa tidak dapat ditentukan dari kueri, kolom ini akan digunakan. Nilai defaultnya adalah en. Untuk daftar kode bahasa, lihat Bahasa.
    • LATITUDE: kolom opsional untuk menetapkan garis lintang. Masukkan nilai dalam derajat desimal—misalnya, -25.34.
    • LONGITUDE: kolom opsional untuk menetapkan garis bujur. Masukkan nilai dalam derajat desimal—misalnya, 131.04.
  3. Ulangi proses ini untuk mendapatkan jawaban lanjutan lainnya. Di setiap giliran, tambahkan semua perintah sebelumnya dari pengguna, diikuti dengan jawaban yang sesuai dari model.

Contoh pembuatan jawaban multi-giliran

Dalam contoh berikut, permintaan menentukan tiga teks fakta inline sebagai sumber perujukan untuk menghasilkan jawaban selama dua giliran. Contoh ini menggunakan metode generateGroundedContent. Contoh ini juga menggunakan petunjuk sistem untuk mengakhiri jawaban pada giliran pertama dengan emoji tersenyum.

REST

  1. Kirim perintah pertama dalam permintaan curl berikut.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \
    -d '
    {
    "contents": [
     {
       "role": "user",
       "parts": [
         {
           "text": "Summarize what happened in 2023 in one paragraph."
         }
       ]
     }
    ],
    "systemInstruction": {
      "parts": {
          "text": "Add a smiley emoji after the answer."
      }
    },
    "grounding_spec": {
     "grounding_sources": [
       {
         "inline_source": {
           "grounding_facts": [
             {
               "fact_text": "In 2023, the world population surpassed 8 billion. This milestone marked a significant moment in human history, highlighting both the rapid growth of our species and the challenges of resource management and sustainability in the years to come.",
               "attributes": {
                 "title": "title_1",
                 "uri": "some-uri-1"
               }
             }
           ]
         }
       },
       {
         "inline_source": {
           "grounding_facts": [
             {
               "fact_text": "In 2023, global e-commerce sales reached an estimated $5.7 trillion. The continued rise of online shopping solidified its position as a dominant force in retail, with major implications for traditional brick-and-mortar stores and the logistics networks supporting worldwide deliveries.",
               "attributes": {
                 "title": "title_2",
                 "uri": "some-uri-2"
               }
             }
           ]
         }
       },
       {
         "inline_source": {
           "grounding_facts": [
             {
               "fact_text": "In 2023, the global average surface temperature was approximately 0.2 degrees Celsius higher than the 20th-century average. This continued the worrying trend of global warming, underscoring the urgency of worldwide climate initiatives, carbon reduction efforts, and investment in renewable energy sources.",
               "attributes": {
                 "title": "title_3",
                 "uri": "some-uri-3"
               }
             }
           ]
         }
       }
     ]
    },
    "generationSpec": {
     "modelId": "gemini-1.5-flash"
    }
    }'
    
  2. Kirim perintah kedua sebagai tindak lanjut. Tambahkan perintah pertama dari pengguna, diikuti dengan jawaban yang sesuai dari model untuk konteks.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1/projects/123456/locations/global:generateGroundedContent" \
    -d '
    {
    "contents": [
     {
       "role": "user",
       "parts": [
         {
           "text": "Summarize what happened in 2023 in one paragraph."
         }
       ]
     },
     {
       "role": "model",
       "parts": [
         {
           "text": "In 2023, the global average surface temperature increased, the world population surpassed 8 billion, and global e-commerce sales reached an estimated $5.7 trillion.  😊 \n"
         }
       ]
     },
     {
       "role": "user",
       "parts": [
         {
           "text": "Rephrase the answer in an abstracted list."
         }
       ]
     }
    ],
    "grounding_spec": {
     "grounding_sources": [
       {
         "inline_source": {
           "grounding_facts": [
             {
               "fact_text": "In 2023, the world population surpassed 8 billion. This milestone marked a significant moment in human history, highlighting both the rapid growth of our species and the challenges of resource management and sustainability in the years to come.",
               "attributes": {
                 "title": "title_1",
                 "uri": "some-uri-1"
               }
             }
           ]
         }
       },
       {
         "inline_source": {
           "grounding_facts": [
             {
               "fact_text": "In 2023, global e-commerce sales reached an estimated $5.7 trillion. The continued rise of online shopping solidified its position as a dominant force in retail, with major implications for traditional brick-and-mortar stores and the logistics networks supporting worldwide deliveries.",
               "attributes": {
                 "title": "title_2",
                 "uri": "some-uri-2"
               }
             }
           ]
         }
       },
       {
         "inline_source": {
           "grounding_facts": [
             {
               "fact_text": "In 2023, the global average surface temperature was approximately 0.2 degrees Celsius higher than the 20th-century average. This continued the worrying trend of global warming, underscoring the urgency of worldwide climate initiatives, carbon reduction efforts, and investment in renewable energy sources.",
               "attributes": {
                 "title": "title_3",
                 "uri": "some-uri-3"
               }
             }
           ]
         }
       }
     ]
    },
    "generationSpec": {
     "modelId": "gemini-1.5-flash"
    }
    }'
    

Menampilkan jawaban yang memiliki rujukan secara bertahap

Anda dapat memilih untuk melakukan streaming jawaban dari model. Hal ini berguna dalam kasus penggunaan tersebut di mana jawabannya sangat panjang dan mengirim seluruh respons sekaligus menyebabkan penundaan yang signifikan. Streaming jawaban memecah respons menjadi array beberapa kandidat yang berisi bagian berurutan dari teks jawaban.

Untuk mendapatkan jawaban yang memiliki rujukan dan di-streaming, lakukan hal berikut:

REST

Contoh berikut menunjukkan cara melakukan streaming jawaban yang memiliki rujukan. Contoh ini menggunakan metode streamGenerateGroundedContent dan mendasarkan jawaban dengan Google Penelusuran tanpa konfigurasi pengambilan dinamis. Anda dapat menggunakan langkah-langkah serupa untuk membuat jawaban yang berisi rujukan menggunakan sumber perujukan lainnya.

  1. Kirim perintah dalam permintaan curl berikut.

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_NUMBER/locations/global:streamGenerateGroundedContent" \
    -d '
    [
    {
     "contents": [
       {
         "role": "user",
         "parts": [
           {
             "text": "PROMPT_TEXT"
           }
         ]
       }
     ],
     "systemInstruction": {
         "parts": {
             "text": "SYSTEM_INSTRUCTION"
         }
     },
     "groundingSpec": {
       "groundingSources": [
         {
           "googleSearchSource": {}
         }
       ]
     },
    "generationSpec": {
     "modelId": "MODEL_ID",
     "temperature": TEMPERATURE,
     "topP": TOP_P,
     "topK": TOP_K
    },
    "user_context": {
     "languageCode: "LANGUAGE_CODE",
     "latLng": {
       "latitude": LATITUDE,
       "longitude": LONGITUDE
     },
    }
    }
    ]'
    

    Ganti kode berikut:

    • PROJECT_NUMBER: jumlah project Google Cloud Anda.
    • PROMPT_TEXT: perintah dari pengguna.
    • SYSTEM_INSTRUCTION: kolom opsional untuk memberikan kata pengantar atau beberapa konteks tambahan.
    • MODEL_ID: kolom opsional untuk menetapkan ID model Gemini yang ingin Anda gunakan untuk membuat jawaban berbasis perujukan. Untuk mengetahui daftar ID model yang tersedia, lihat Model yang didukung.
    • TEMPERATURE: kolom opsional untuk menyetel suhu yang digunakan untuk pengambilan sampel. Google merekomendasikan suhu 0,0. Untuk mengetahui informasi selengkapnya, lihat Parameter model Gemini.
    • TOP_P: kolom opsional untuk menetapkan nilai top-P model. Untuk mengetahui informasi selengkapnya, lihat Parameter model Gemini.
    • TOP_K: kolom opsional untuk menetapkan nilai top-K untuk model. Untuk mengetahui informasi selengkapnya, lihat Parameter model Gemini.
    • LANGUAGE_CODE: kolom opsional yang dapat digunakan untuk menyetel bahasa jawaban yang dihasilkan dan untuk teks potongan yang ditampilkan. Jika bahasa tidak dapat ditentukan dari kueri, kolom ini akan digunakan. Nilai defaultnya adalah en. Untuk daftar kode bahasa, lihat Bahasa.
    • LATITUDE: kolom opsional untuk menetapkan garis lintang. Masukkan nilai dalam derajat desimal—misalnya, -25.34.
    • LONGITUDE: kolom opsional untuk menetapkan garis bujur. Masukkan nilai dalam derajat desimal—misalnya, 131.04.

Contoh untuk streaming jawaban yang berisi rujukan

Dalam contoh berikut, permintaan menentukan Google Penelusuran sebagai sumber perujukan untuk mengalirkan jawaban tanpa konfigurasi pengambilan dinamis. Jawaban yang di-streaming didistribusikan ke beberapa kandidat respons. Contoh ini menggunakan metode streamGenerateGroundedContent.

REST

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1alpha/projects/123456/locations/global:streamGenerateGroundedContent" \
-d '
[
{
  "contents": [
    {
      "role": "user",
      "parts": [
        {
          "text": "Summarize How to delete a data store in AI Applications?"
        }
      ]
    }
  ],
  "groundingSpec": {
    "groundingSources": [
      {
        "googleSearchSource": {}
      }
    ]
  },
  "generationSpec": {
    "modelId": "gemini-1.5-flash"
  }
}
]'

Model yang didukung

Model berikut mendukung perujukan:

  • Gemini 1.5 Pro dengan input teks saja
  • Gemini 1.5 Flash dengan input teks saja

Untuk mempelajari model Gemini ini lebih lanjut, lihat Versi dan siklus proses model Gemini.

Saat memanggil metode generateGroundedContent, Anda dapat menggunakan ID model berikut:

ID Model Diperbarui otomatis
default Ya
gemini-1.5-flash Ya
gemini-1.5-flash-001 Tidak
gemini-1.5-flash-002 Tidak
gemini-1.5-pro Ya
gemini-1.5-pro-001 Tidak
gemini-1.5-pro-002 Tidak

Langkah berikutnya

Pelajari cara menggunakan metode pembuatan teks berbasis data dengan API RAG lainnya untuk membuat jawaban berbasis data dari data tidak terstruktur.