Halaman ini memperkenalkan penelusuran dengan jawaban dan tindak lanjut untuk Vertex AI Search dan menunjukkan cara menerapkannya untuk aplikasi penelusuran kustom menggunakan panggilan metode.
Catatan:  Fitur jawaban dan tindak lanjut tidak dapat diterapkan ke penyimpanan data media atau kesehatan. Penelusuran dengan jawaban dan tindak lanjut didasarkan pada metode jawaban. Metode jawaban
menggantikan fitur ringkasan dari metode search  yang lebih lama
dan semua fitur metode converse  yang tidak digunakan lagi.
Metode jawaban juga memiliki beberapa fitur tambahan penting, seperti
kemampuan untuk menangani kueri yang kompleks.
Istilah Utama:  Di halaman ini, istilah jawaban  mengacu pada jawaban buatan AI yang didasarkan pada hasil penelusuran dari kueri. Pada dasarnya sama dengan
summary , yang dapat dibuat oleh metode penelusuran. Fitur metode jawaban 
Fitur utama metode jawaban adalah sebagai berikut:
Kemampuan untuk membuat jawaban atas kueri yang kompleks. Misalnya, metode
jawaban dapat menguraikan kueri gabungan, seperti berikut,
menjadi beberapa kueri yang lebih kecil untuk menampilkan hasil yang lebih baik yang digunakan untuk
menghasilkan jawaban yang lebih baik:
"Berapa pendapatan Google Cloud dan Google Ads pada tahun 2024?" 
"Setelah berapa tahun sejak didirikan, Google mencapai pendapatan 1 miliar USD?" 
 Kemampuan untuk menggabungkan penelusuran dan pembuatan jawaban dalam percakapan multi-turn dengan memanggil metode jawaban di setiap giliran.
Kemampuan untuk dipasangkan dengan metode penelusuran guna mengurangi latensi penelusuran. Anda
dapat memanggil metode penelusuran dan metode jawaban secara terpisah serta merender
hasil penelusuran dan jawaban dalam iframe yang berbeda pada waktu yang berbeda. Artinya, Anda dapat menampilkan hasil penelusuran (10 link biru) kepada pengguna dalam milidetik. Anda tidak perlu menunggu jawaban dibuat sebelum Anda dapat menampilkan hasil penelusuran.
 
Fitur jawaban dan tindak lanjut dapat dibagi menjadi tiga fase kueri,
penelusuran, dan jawaban:
Kapan harus menggunakan jawaban dan kapan harus menggunakan penelusuran 
Vertex AI Search memiliki dua metode yang digunakan untuk membuat kueri aplikasi. Keduanya memiliki fitur yang berbeda, tetapi tumpang-tindih.
Gunakan metode jawaban  saat:
Anda menginginkan jawaban (atau ringkasan) yang dibuat AI dari hasil penelusuran.
Anda menginginkan penelusuran multi-giliran, yaitu penelusuran yang mempertahankan konteks sehingga memungkinkan pertanyaan lanjutan.
 
Gunakan metode search  dalam kasus berikut:
Anda hanya memerlukan hasil penelusuran, bukan jawaban yang dihasilkan.
Anda memiliki salah satu dari hal berikut:
Data media atau kesehatan 
Embedding Anda sendiri 
Kontrol sinonim atau pengalihan 
Faset 
Kode negara pengguna 
 Anda perlu menjelajahi  data di penyimpanan data generik.
 
Gunakan metode jawaban dan penelusuran bersama-sama saat:
Anda ingin menampilkan lebih dari sepuluh hasil penelusuran, dan  Anda menginginkan jawaban yang dibuat.
Anda mengalami masalah latensi dan ingin menampilkan hasil penelusuran dengan cepat sebelum jawaban yang dihasilkan ditampilkan.
 
Fitur fase kueri 
Fitur jawaban dan tindak lanjut mendukung pemrosesan kueri bahasa alami.
Bagian ini menjelaskan dan menggambarkan berbagai opsi untuk pengubahan frasa dan klasifikasi kueri.
Pengubahan frasa kueri 
Pengubahan frasa kueri aktif secara default. Fitur ini memilih cara terbaik untuk memparafrasakan kueri secara otomatis guna meningkatkan hasil penelusuran. Fitur ini juga dapat menangani kueri yang tidak memerlukan pengubahan kata-kata.
Pecah kueri kompleks menjadi beberapa kueri dan lakukan sub-kueri sinkron.
Misalnya: Kueri kompleks dipecah menjadi empat kueri yang lebih kecil dan sederhana.
    
      Input pengguna 
      Sub-kueri yang dibuat dari kueri kompleks 
     
    
      Apa pekerjaan dan hobi yang dimiliki Andie Ram dan Arnaud
                            Clément? 
      
        
          Pendudukan Andie Ram 
          Pekerjaan Arnaud Clément 
          Hobi Andie Ram 
          Hobi Arnaud Clément 
         
       
     
Mensintesis kueri multigiliran, untuk membuat pertanyaan lanjutan yang sadar konteks
dan memiliki status.
Misalnya: Kueri yang disintesis dari input pengguna di setiap giliran mungkin terlihat
seperti ini:
    
      Input pengguna 
      Kueri yang disintesis 
     
    
      Turn 1: laptop untuk sekolah 
      laptop untuk sekolah 
     
    
      Turn 2: not mac 
      laptop untuk sekolah selain mac 
     
    
      Turn 3: layar yang lebih besar dan saya juga memerlukan keyboard dan mouse nirkabel 
      laptop dengan layar yang lebih besar untuk sekolah, bukan Mac, dengan keyboard dan mouse nirkabel 
     
    
      Turn 4: dan ransel untuknya 
      laptop layar yang lebih besar untuk sekolah, bukan Mac, dengan keyboard dan mouse nirkabel serta ransel untuk laptop tersebut 
     
Menyederhanakan kueri panjang untuk meningkatkan pengambilan (memerlukan fitur LLM lanjutan ).
Misalnya: Kueri panjang dipersingkat menjadi kueri standar.
    
      Input pengguna 
      Kueri disederhanakan 
     
    
       Saya mencoba mencari tahu mengapa tombol \"Tambahkan ke Keranjang\"
      di situs kami tidak berfungsi dengan baik. Sepertinya saat
      pengguna mengklik tombol, item tidak ditambahkan ke keranjang dan mereka
      menerima pesan error. Saya telah memeriksa kodenya dan sepertinya sudah benar, jadi saya tidak yakin apa masalahnya. Dapatkah Anda membantu saya memecahkan masalah ini? 
      Tombol "Tambahkan ke Keranjang" tidak berfungsi di situs. 
     
Melakukan penalaran multi-langkah
Istilah Utama:  Langkah  (juga disebut sebagai lompatan ) digunakan untuk menjawab pertanyaan yang kompleks. Pertanyaan dipecah menjadi
beberapa langkah pengambilan dan inferensi informasi.
 
Penalaran multi-langkah didasarkan pada paradigma ReAct (reason + act) yang memungkinkan LLM menyelesaikan tugas kompleks menggunakan penalaran bahasa alami.
Secara default, jumlah langkah maksimum adalah lima.
Contoh:
    
      Input pengguna 
       Dua langkah untuk menghasilkan jawaban 
     
    
      Setelah berapa tahun sejak didirikan, Google mencapai pendapatan 1
      miliar USD? 
      Langkah 1: Langkah 2:  
Penalaran multi-langkah memerlukan fitur LLM lanjutan .
 
Klasifikasi kueri 
Opsi klasifikasi kueri adalah untuk mengidentifikasi kueri yang bersifat merugikan dan kueri yang tidak mencari jawaban. Secara default, opsi klasifikasi kueri dinonaktifkan.
Untuk mengetahui informasi selengkapnya tentang kueri yang bersifat merugikan dan tidak mencari jawaban, lihat Mengabaikan kueri yang bersifat merugikan  dan Mengabaikan kueri yang tidak mencari ringkasan .
Fitur fase penelusuran 
Untuk penelusuran, metode jawaban memiliki opsi yang sama dengan metode penelusuran. Misalnya:
Fitur fase jawaban 
Selama fase jawaban, saat jawaban dibuat dari hasil penelusuran, Anda dapat mengaktifkan fitur yang sama seperti dalam metode penelusuran. Contoh:
Mendapatkan kutipan untuk menunjukkan sumber setiap kalimat dalam jawaban. Untuk mengetahui informasi selengkapnya, lihat Menyertakan kutipan .
Gunakan pengantar perintah untuk menyesuaikan jawaban terkait hal-hal seperti nada bahasa, gaya, dan panjang jawaban.
Untuk mengetahui informasi selengkapnya, lihat Menentukan pembuka kustom .
Pilih model Vertex AI yang akan digunakan untuk pembuatan jawaban.
Untuk mengetahui informasi selengkapnya, lihat Versi dan siklus proses model pembuatan jawaban .
Pilih apakah akan mengabaikan kueri yang telah diklasifikasikan sebagai kueri yang merugikan atau tidak mencari jawaban.
Untuk mengetahui informasi selengkapnya tentang kueri yang bersifat memusuhi dan tidak mencari jawaban, lihat Mengabaikan kueri yang bersifat memusuhi  dan Mengabaikan kueri yang tidak mencari ringkasan . Kueri yang tidak mencari jawaban
juga disebut kueri yang tidak mencari ringkasan.
 
Fitur fase jawaban tambahan yang tidak tersedia dalam metode penelusuran adalah:
Mendapatkan skor dukungan untuk setiap klaim (kalimat dalam jawaban yang dihasilkan).
Skor dukungan adalah nilai floating point dalam rentang [0,1] yang menunjukkan seberapa kuat klaim didasarkan pada data di penyimpanan data. Untuk mengetahui informasi selengkapnya, lihat Mengembalikan skor dukungan perujukan .
Mendapatkan skor dukungan gabungan untuk jawaban. Skor dukungan
menunjukkan seberapa baik jawaban didasarkan pada data di penyimpanan data. Untuk
mengetahui informasi selengkapnya, lihat Skor dukungan perujukan balik .
Hanya berikan jawaban yang memiliki rujukan yang baik. Anda dapat memilih untuk hanya menampilkan jawaban yang memenuhi nilai minimum skor dukungan tertentu. Untuk mengetahui informasi selengkapnya, lihat Hanya tampilkan jawaban yang memiliki rujukan yang kuat .
Pilih untuk menampilkan pertanyaan terkait. Pertanyaan terkait adalah saran yang dapat dipilih pengguna Anda, alih-alih memasukkan pertanyaan mereka sendiri.
Menambahkan informasi personalisasi ke kueri sehingga jawaban dapat disesuaikan untuk setiap pengguna. Untuk mengetahui informasi selengkapnya, lihat Mempersonalisasi jawaban .
 
Untuk menerima jawaban multimodal yang menyertakan diagram atau gambar selain teks,
tersedia opsi berikut:
Mendapatkan jawaban yang mencakup diagram dan grafik yang memetakan data yang ada dalam jawaban. Untuk mengetahui informasi selengkapnya, lihat Membuat diagram untuk
jawaban .
Mengambil gambar dari penyimpanan data. Jika penyimpanan data berisi gambar, metode jawaban dapat menampilkan gambar dalam jawaban. Gambar dari
penyimpanan data juga dapat ditampilkan dalam referensi jika kutipan
diminta. Untuk mengetahui informasi selengkapnya, lihat Mengambil gambar yang ada dari penyimpanan data .
 
Sebelum memulai 
Bergantung pada jenis aplikasi yang Anda miliki, selesaikan persyaratan berikut:
Jika Anda memiliki aplikasi penelusuran terstruktur, tidak terstruktur, atau situs, aktifkan opsi berikut:
Fitur edisi Enterprise : Fitur ini memberi Anda akses ke fitur jawaban generatif inti. Hal ini mencakup semua fitur pembuatan jawaban, kecuali fitur jawaban generatif tingkat lanjut, seperti pertanyaan terkait, penyederhanaan kueri, kueri multi-turn, dan jawaban multimodal yang menampilkan gambar dan diagram.Fitur LLM tingkat lanjut : Fitur ini memberi Anda akses ke
fitur jawaban generatif tingkat lanjut yang memerlukan penalaran multi-langkah, penyederhanaan
kueri, kueri multi-giliran, pertanyaan terkait, dan jawaban multimodal
yang menampilkan gambar dan diagram. Selain itu, jika Anda memiliki penyimpanan data penelusuran situs, aktifkan
Pengindeksan situs lanjutan .
 
Penelusuran dan jawaban (dasar) 
Perintah berikut menunjukkan cara memanggil metode answer  dan menampilkan jawaban yang dihasilkan serta daftar hasil penelusuran, dengan link ke sumbernya.
Perintah ini hanya menampilkan input yang diperlukan. Opsi dibiarkan pada
defaultnya.
  
  
  
  
  
    
  
  
  REST Untuk menelusuri dan mendapatkan hasil dengan jawaban yang dihasilkan, lakukan hal berikut:
Jalankan perintah 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_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "}
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY  
Contoh perintah dan hasil sebagian 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{"query": { "text": "Which database is faster, bigquery or spanner?"}}'
         What is the performance of BigQuery? "
            },
            "observation": {
              "searchResults": [
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/9ab3ef91bcfde1fcd091efe9df7c699c",
                  "uri": "https://cloud.google.com/bigquery/docs/best-practices-performance-overview",
                  "title": "Introduction to optimizing query performance | BigQuery | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "After a query begins execution, \u003cb\u003eBigQuery\u003c/b\u003e calculates how many slots each query stage uses based on the stage size and complexity and the number of slots ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/4e545c5cb69b06b251265114d9099cb4",
                  "uri": "https://cloud.google.com/bigquery/docs/query-insights",
                  "title": "Get query performance insights | BigQuery | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "This document describes how to use the query execution graph to diagnose query \u003cb\u003eperformance\u003c/b\u003e issues, and to see query \u003cb\u003eperformance\u003c/b\u003e insights. \u003cb\u003eBigQuery\u003c/b\u003e offers ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/d34672d877eefe596f9c7d1a3d7076b1",
                  "uri": "https://cloud.google.com/bigquery/docs/best-practices-performance-compute",
                  "title": "Optimize query computation | BigQuery | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "After addressing the query \u003cb\u003eperformance\u003c/b\u003e insights, you can further optimize your query by performing the following tasks: Reduce data that is to be processed ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                ...
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/75ce2f05833683e60ddc21a11ce0466f",
                  "uri": "https://cloud.google.com/blog/products/data-analytics/troubleshoot-and-optimize-your-bigquery-analytics-queries-with-query-execution-graph/",
                  "title": "Troubleshoot and optimize your BigQuery analytics queries with query execution graph | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "Since query \u003cb\u003eperformance\u003c/b\u003e is multi-faceted, \u003cb\u003eperformance\u003c/b\u003e insights might only provide a partial picture of the overall query \u003cb\u003eperformance\u003c/b\u003e. Execution graph. When ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                }
              ]
            }
          },
          {
            "searchAction": {
              "query": " What is the performance of Spanner? "
            },
            "observation": {
              "searchResults": [
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f3d036b60379873acf7c73081c5e5b5c",
                  "uri": "https://cloud.google.com/spanner/docs/performance",
                  "title": "Performance overview | Spanner | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "These \u003cb\u003eperformance\u003c/b\u003e improvements should result in higher throughput and better latency in \u003cb\u003eSpanner\u003c/b\u003e nodes in both regional and multi-region instance configurations.",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/422496248ade354c73b4c906b8eb9b5f",
                  "uri": "https://cloud.google.com/blog/products/databases/announcing-cloud-spanner-price-performance-updates",
                  "title": "Announcing Cloud Spanner price-performance updates | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "Alongside lower costs, Cloud \u003cb\u003eSpanner\u003c/b\u003e provides single-digit ms latencies and strong consistency across multiple availability zones in the same region.",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/53c2a1a6990480ba4aa05cc6b4404562",
                  "uri": "https://cloud.google.com/blog/topics/developers-practitioners/understanding-cloud-spanner-performance-metrics-scale-key-visualizer",
                  "title": "Understanding Cloud Spanner performance metrics at scale with Key Visualizer | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "Designed for \u003cb\u003eperformance\u003c/b\u003e tuning and instance sizing, you can use Key Visualizer today in the web-based Cloud Console for all \u003cb\u003eSpanner\u003c/b\u003e databases at no additional ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                ...
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/a6501ecd5d6391e3ade49097bab0ad3a",
                  "uri": "https://cloud.google.com/blog/products/databases/a-technical-overview-of-cloud-spanners-query-optimizer",
                  "title": "A technical overview of Cloud Spanner's query optimizer | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "... performance. Typically, a join will ... Google is continuously improving out-of-the-box \u003cb\u003eperformance of Spanner\u003c/b\u003e and reducing the need for manual tuning.",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    ]
  },
  "answerQueryToken": "NMwKDAj1_d62BhC72_X_AhIkNjZkN2I4YWEtMDAwMC0yYTdiLWIxMmMtMDg5ZTA4MjhlNzY0"
}
 Dalam contoh ini, kueri diuraikan menjadi beberapa bagian: "Bagaimana performa Spanner?" dan "Bagaimana performa BigQuery?"
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Perintah fase kueri 
Bagian ini menunjukkan cara menentukan opsi untuk fase kueri panggilan metode
answer .
Penelusuran dan jawaban (parafrasa dinonaktifkan) 
Perintah berikut menunjukkan cara memanggil metode answer  dan menampilkan jawaban yang dihasilkan serta daftar hasil penelusuran. Jawaban dapat berbeda dari jawaban sebelumnya karena opsi pengubahan kata-kata dinonaktifkan.
  
  
  
  
  
    
  
  
  REST Untuk menelusuri dan mendapatkan hasil dengan jawaban yang dihasilkan tanpa menerapkan pengubahan frasa kueri, lakukan hal berikut:
Jalankan perintah 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_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "queryUnderstandingSpec": {
           "queryRephraserSpec": {
              "disable": true 
        }
    }
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY  
Contoh perintah dan hasil sebagian 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{
      "query": { "text": "Which database is faster, bigquery or spanner?"},
      "queryUnderstandingSpec": { "queryRephraserSpec": { "disable": true  } }
    }'
    Which database is faster, bigquery or spanner? "
            },
            "observation": {
              "searchResults": [
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/ecc0e7547253f4ca3ff3328ce89995af",
                  "uri": "https://cloud.google.com/blog/topics/developers-practitioners/how-spanner-and-bigquery-work-together-handle-transactional-and-analytical-workloads",
                  "title": "How Spanner and BigQuery work together to handle transactional and analytical workloads | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "A federated \u003cb\u003equery\u003c/b\u003e might not be as \u003cb\u003efast\u003c/b\u003e as querying local \u003cb\u003eBigQuery tables\u003c/b\u003e. There may be higher latency because of the small wait time for the source \u003cb\u003edatabase\u003c/b\u003e to ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/d7e238f73608a860e00b752ef80e2941",
                  "uri": "https://cloud.google.com/blog/products/databases/cloud-spanner-gets-stronger-with-bigquery-federated-queries",
                  "title": "Cloud Spanner gets stronger with BigQuery-federated queries | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "... \u003cb\u003equick\u003c/b\u003e lookup on \u003cb\u003edata\u003c/b\u003e that's in \u003cb\u003eSpanner\u003c/b\u003e -- you can ... Set up an external \u003cb\u003edata\u003c/b\u003e source for the \u003cb\u003eSpanner\u003c/b\u003e shopping \u003cb\u003edatabase\u003c/b\u003e in \u003cb\u003eBigQuery\u003c/b\u003e. ... The \u003cb\u003equery\u003c/b\u003e is executed in ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f3d036b60379873acf7c73081c5e5b5c",
                  "uri": "https://cloud.google.com/spanner/docs/performance",
                  "title": "Performance overview | Spanner | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "The information on this page applies to both GoogleSQL and PostgreSQL \u003cb\u003edatabases\u003c/b\u003e. Note: We are in the process of rolling out \u003cb\u003eperformance\u003c/b\u003e and storage changes that ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                ...
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/47b09cb5ad5e3ab3b1eb93d99ecb0896",
                  "uri": "https://cloud.google.com/blog/products/databases/rewe-uses-cloud-spanner-to-optimize-for-speed-and-performance",
                  "title": "REWE uses Cloud Spanner to optimize for speed and performance | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "As a fully managed relational \u003cb\u003edatabase\u003c/b\u003e, \u003cb\u003eSpanner\u003c/b\u003e provides unlimited scale, strong consistency, and up to 99.999% availability. By choosing this approach to ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    ]
  },
  "answerQueryToken": "M8gKCwjp_t62BhC7wOFMEiQ2NmQ3YjhhZS0wMDAwLTJhN2ItYjEyYy0wODllMDgyOGU3NjQ"
}
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Penelusuran dan jawaban (tentukan langkah maksimum) 
Perintah berikut menunjukkan cara memanggil metode answer  dan menampilkan jawaban yang dihasilkan serta daftar hasil penelusuran. Jawabannya berbeda dari jawaban sebelumnya karena jumlah langkah parafrasa telah ditingkatkan.
  
  
  
  
  
    
  
  
  REST Untuk menelusuri dan mendapatkan hasil dengan jawaban yang dihasilkan yang memungkinkan hingga lima langkah pengubahan kata, lakukan hal berikut:
Jalankan perintah 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_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "queryUnderstandingSpec": {
            "queryRephraserSpec": {
                "maxRephraseSteps": MAX_REPHRASE  
             }
         }
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY MAX_REPHRASE 5.
  Jika tidak ditetapkan atau jika ditetapkan ke kurang dari 1, nilainya adalah default,
  1.
   
Contoh perintah  
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "How much longer does it take to train a recommendations model than a search model"},
        "queryUnderstandingSpec": {
            "queryRephraserSpec": {
            "maxRephraseSteps": 5 
             }
         }
      }'
        
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Menelusuri dan menjawab dengan klasifikasi kueri 
Perintah berikut menunjukkan cara memanggil metode answer  untuk
menanyakan apakah kueri bersifat merugikan, tidak mencari jawaban, atau tidak keduanya.
Respons mencakup jenis klasifikasi untuk kueri, tetapi jawaban itu sendiri tidak terpengaruh oleh klasifikasi.
Jika ingin mengubah perilaku jawaban sesuai dengan jenis kueri, Anda dapat melakukannya di fase jawaban. Lihat Mengabaikan kueri
adversarial  dan Mengabaikan kueri yang tidak mencari ringkasan .
  
  
  
  
  
    
  
  
  REST Untuk menentukan apakah kueri bersifat merugikan atau tidak mencari jawaban, lakukan hal berikut:
Jalankan perintah 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_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "queryUnderstandingSpec": {
            "queryClassificationSpec": {
                "types": ["QUERY_CLASSIFICATION_TYPE "] 
             }
         }
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY QUERY_CLASSIFICATION_TYPE ADVERSARIAL_QUERY,
  NON_ANSWER_SEEKING_QUERY, atau keduanya. 
Contoh perintah dan hasil sebagian 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{
      "query": {
          "text": "Hello!"},
          "queryUnderstandingSpec": {
             "queryClassificationSpec": {
             "types": ["ADVERSARIAL_QUERY", "NON_ANSWER_SEEKING_QUERY"] 
              }
          }
}'
"type": "NON_ANSWER_SEEKING_QUERY",
          "positive": true 
        }
      ]
    }
  },
  "answerQueryToken": "NMwKDAjVloK3BhCdt8u9AhIkNjZkYmFhNWItMDAwMC0yZTBkLTg0ZDAtMDg5ZTA4MmRjYjg0"
}
 Dalam contoh ini, kueri "halo" tidak bersifat merugikan, tetapi diklasifikasikan sebagai
tidak mencari jawaban.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Perintah fase penelusuran: Menelusuri dan menjawab dengan opsi hasil penelusuran 
Bagian ini menunjukkan cara menentukan opsi untuk bagian fase penelusuran dari panggilan metode answer , opsi seperti menetapkan jumlah maksimum dokumen yang ditampilkan, meningkatkan, dan memfilter, serta cara mendapatkan jawaban saat Anda memberikan hasil penelusuran Anda sendiri.
Perintah berikut menunjukkan cara memanggil metode answer  dan
menentukan berbagai opsi untuk cara hasil penelusuran ditampilkan. (Hasil penelusuran tidak bergantung pada jawaban.)
  
  
  
  
  
    
  
  
  REST Untuk menetapkan berbagai opsi terkait hasil penelusuran yang ditampilkan dan caranya, lakukan hal berikut:
Jalankan perintah 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_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
          "searchSpec": {
          "searchParams": {
            "maxReturnResults": MAX_RETURN_RESULTS ,
            "filter": "FILTER ",
            "boostSpec": BOOST_SPEC ,
            "orderBy": "ORDER_BY ",
            "searchResultMode": SEARCH_RESULT_MODE 
           }
         }
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY MAX_RETURN_RESULTS 10. Nilai maksimumnya adalah 25.FILTER Memfilter penelusuran khusus untuk data terstruktur atau tidak terstruktur .BOOST_SPEC Meningkatkan hasil penelusuran .ORDER_BY Document . Ekspresi orderBy peka huruf besar/kecil.
  Jika kolom ini tidak dapat dikenali, INVALID_ARGUMENT akan ditampilkan.SEARCH_RESULT_MODE DOCUMENTS atau CHUNKS. Untuk mengetahui informasi selengkapnya, lihat Mengurai dan mengelompokkan dokumen  dan ContentSearchSpec .
  Kolom ini hanya tersedia di API versi v1alpha.
  
   
Contoh perintah dan hasil 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{
      "query": {
          "text": "Does spanner database have an API?"},
          "searchSpec": {
          "searchParams": { "maxReturnResults": 3 } 
          }
    }'
     Dalam contoh ini, jumlah dokumen yang ditampilkan dibatasi hingga tiga.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Perintah fase jawaban 
Bagian ini menunjukkan cara menyesuaikan panggilan metode answer
Mengabaikan kueri yang bersifat menyerang dan kueri yang tidak mencari jawaban 
Perintah berikut menunjukkan cara menghindari menjawab kueri yang bersifat menyerang dan kueri yang tidak mencari jawaban saat memanggil metode answer .
  
  
  
  
  
    
  
  
  REST Untuk melewati penjawaban kueri yang bersifat pertentangan atau tidak mencari jawaban, lakukan hal berikut:
Jalankan perintah 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_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "answerGenerationSpec": {
           "ignoreAdversarialQuery": true,
           "ignoreNonAnswerSeekingQuery": true 
        }
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY  
Contoh perintah dan hasil sebagian 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)"
    -H "Content-Type: application/json"
    "https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
    -d '{
      "query": { "text": "Hello"},
      "answerGenerationSpec": {
          "ignoreAdversarialQuery": true ,
          "ignoreNonAnswerSeekingQuery": true  }
        }'
        A summary could not be generated for your search query. Here are some search results. ",
    "steps": [
      {
        "state": "SUCCEEDED",
        "description": "Rephrase the query and search.",
        "actions": [
          {
            "searchAction": {
              "query": "Hello"
            },
            "observation": {
              "searchResults": [
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/69e92e5b1de5b1e583fbe95f94dd4cbf",
                  "uri": "https://support.google.com/voice/thread/152245405/google-voice-is-randomly-automatically-sending-hello-replies-to-incoming-texts?hl=en",
                  "title": "Google voice is randomly/automatically sending \"Hello!\" replies to incoming texts",
                  "snippetInfo": [
                    {
                      "snippet": "There IS a new "Smart reply" feature on the Android or iOS client apps, but you'd have to a) receive a SMS/MMS, b) open it up, c) look at the three suggested ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/16d65e2af7fa854d1a00995525646dc3",
                  "uri": "https://support.google.com/voice/thread/112990484/google-voice-sending-hello-in-response-to-text-messages?hl=en",
                  "title": "Google Voice sending \"Hello,\" in response to text messages",
                  "snippetInfo": [
                    {
                      "snippet": "When I receive text messages, a reply is instantly sent out reading "\u003cb\u003eHello\u003c/b\u003e," and I cannot figure out how this is happening. I have no linked accounts, ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/b3bdde4957f588a1458c533269626d09",
                  "uri": "https://support.google.com/voice/thread/4307458/lately-an-automatic-text-response-saying-hello-is-going-out-how-do-i-stop-this?hl=en",
                  "title": "Lately an automatic text response saying, \"Hello\" is going out. How do I stop this? - Google Voice Community",
                  "snippetInfo": [
                    {
                      "snippet": "You need to find out what app is causing it and deactivate or delete it. Last edited Apr 16, 2019.",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                ...
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/a828eb8f442f1dfbdda06dbeb52841b0",
                  "uri": "https://support.google.com/a/thread/161821861/hello-hello-the-lost-phone?hl=en",
                  "title": "Hello.Hello the lost phone - Google Workspace Admin Community",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eHello\u003c/b\u003e the lost phone. My wife lost her phone but she cannot remember her emails pasward to help track .",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    ],
    "answerSkippedReasons": [
      "NON_ANSWER_SEEKING_QUERY_IGNORED" 
    ]
  },
  "answerQueryToken": "NMwKDAjFgN-2BhDlsKaZARIkNjZkN2I0NmItMDAwMC0yZmQ5LTkwMDktZjQwMzA0M2E5YTg4"
}
 Dalam contoh ini, kueri ditentukan sebagai kueri yang tidak mencari jawaban sehingga tidak ada jawaban yang dihasilkan.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Hanya tampilkan jawaban yang relevan 
Vertex AI Search dapat menilai seberapa relevan hasil dengan kueri. Jika tidak ada hasil yang dianggap cukup relevan, Anda dapat memilih untuk menampilkan jawaban pengganti, bukan membuat jawaban dari hasil yang tidak relevan atau kurang relevan: "We do not have a summary for your query."
Perintah berikut menunjukkan cara menampilkan jawaban pengganti jika hasil tidak relevan saat memanggil metode answer .
  
  
  
  
  
    
  
  
  REST Untuk menampilkan jawaban pengganti jika tidak ada hasil yang relevan, lakukan hal berikut:
Jalankan perintah 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_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "answerGenerationSpec": {
           "ignoreLowRelevantContent": true 
        }
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY  
Contoh perintah dan hasil 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{"query": { "text": "foobar"}, "answerGenerationSpec": {
       "ignoreLowRelevantContent": true 
    } }'
    "answerText": "We do not have a summary for your query.", 
    "steps": [
      {
        "state": "SUCCEEDED",
        "description": "Rephrase the query and search.",
        "actions": [
          {
            "searchAction": {
              "query": "foobar"
            },
            "observation": {
              "searchResults": [
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/719b79786f0c143717c569eade5305d9",
                  "uri": "https://support.google.com/websearch/thread/261714267/google-foobar-bug-console-disappeared?hl=en",
                  "title": "Google Foobar Bug - Console Disappeared",
                  "snippetInfo": [
                    {
                      "snippet": "Google \u003cb\u003eFoobar\u003c/b\u003e Bug - Console Disappeared. After I logged in today the top bar says "The \u003cb\u003eFoobar\u003c/b\u003e Challenge will be turned down on 1 April 2024. If you run out of ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/932369826585ff45f6ab3eba01ba6933",
                  "uri": "https://support.google.com/websearch/thread/95251114/unable-to-contact-foobar-recruiter?hl=en",
                  "title": "Unable to contact Foobar Recruiter - Google Search Community",
                  "snippetInfo": [
                    {
                      "snippet": "Access is by invitation only so you will need to have the proper credentials to login. You can always reach out using the contact us button, but there is no ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/fb736a30ff90d058be755f0a04a522a8",
                  "uri": "https://support.google.com/websearch/thread/121151780/foobar-challenge-appeared-to-me-then-disappeared?hl=en",
                  "title": "Foobar challenge appeared to me then disappeared - Google Search Community",
                  "snippetInfo": [
                    {
                      "snippet": "Hi. I got the \u003cb\u003efoobar\u003c/b\u003e challenge some months ago. But then it disappeared immediately, maybe by misclick (though I don't think I misclicked).",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                ...
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f56f2656b0d02b839509d0e67e60c1c9",
                  "uri": "https://support.google.com/chrome/thread/159931759/cannot-access-google-foobar-challenge?hl=en",
                  "title": "Cannot Access Google FooBar Challenge",
                  "snippetInfo": [
                    {
                      "snippet": "I knew I wouldn't have time for it today, so I just kept the tab in the background. Tonight, I went to go close all my tabs, but the page had changed. It said " ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    ],
    "answerSkippedReasons": [
      "NO_RELEVANT_CONTENT"
    ]
  },
  "answerQueryToken": "M8gKCwiokvy2BhDtv8EDEiQ2NmQ5NDQxZC0wMDAwLTIxMGQtOWU2Yi1mNDAzMDQ1ZGJkMzA"
}
 Dalam contoh ini, hasil ditentukan tidak cukup relevan dengan kueri, sehingga jawaban pengganti ditampilkan, bukan jawaban dan hasil yang dihasilkan.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Mengembalikan skor dukungan perujukan 
Perintah berikut menunjukkan cara menampilkan skor dukungan perujukan untuk jawaban dan klaim.
Untuk mengetahui informasi umum tentang perujukan di Vertex AI, lihat Memeriksa perujukan dengan RAG . Metode
groundingConfigs.check
  
  
  
  
  
    
  
  
  REST Untuk menampilkan skor dukungan untuk setiap klaim (kalimat dalam jawaban) dan skor dukungan gabungan untuk jawaban, lakukan hal berikut:
Jalankan perintah 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_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "groundingSpec": {
           "includeGroundingSupports": true,
        }
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY  
Contoh perintah dan hasil sebagian 
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/collections/default_collection/engines/my-app/servingConfigs/default_search:answer"
-d '{
    "query": { "text": "What is SQL?"},
    "groundingSpec": {
       "includeGroundingSupports": true,
    }
  }'
            "groundingScore": 0.9 
    "groundingCheckRequired": true
  },
  {
    "startIndex": "42",
    "endIndex": "144",
    "sources": [
      {
        "referenceId": "1"
      }
    ]
    "groundingScore": 0.8 
    "groundingCheckRequired": true
  },
  {
    "startIndex": "267",
    "endIndex": "342",
    "sources": [
      {
        "referenceId": "2"
      }
    ]
    "groundingScore": 0.6 
    "groundingCheckRequired": true
  }
],
"references": [
  {
    "chunkInfo": {
      "content": "There are a lot of Databases available in the market such as MS Access, Oracle and many others.For you to write programs that interact with these databases easily, there has to be a way where you could get information from all these databases using the same method.For this purpose SQL was developed.It is a kind of language (simple when compared to the likes of C or C++) which enables you to ask all your queries to a database without bothering about the exact type of database.When you use this Query the database engine would first find the table called people.Then it would find a column called firstname.Next it would compare all the values in that column with 'Reena'.Finally it would return all the details wherever it finds a match for the firstname.When you write a database program in VC++ or Java or any other language for that matter, you would make a database connection to your database and then you would query the database using SQL queries.When you query the database with any SQL query the database returns a recordset.A recordset is basically a set of records (all the entries that your query returns).This recordset is received in your program and all languages have a data structure which represents a recordset.",
      "documentMetadata": {
        "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/d993d922043374f5ef7ba297c158b106",
        "uri": "gs://my-bucket-123/documents/058dee0ec23a3e92f9bfd7cd29840e8f.txt"
        "structData": {
          "fields": [
            {
              "key": "cdoc_url"
              "value": { "stringValue": "058dee0ec23a3e92f9bfd7cd29840e8f" }
            },
            {
              "key": "doc_id"
              "value": { "stringValue": "d993d922043374f5ef7ba297c158b106" }
            }
          ]
        }
      }
    }
  },
  {
    "chunkInfo": {
      "content": "The Structured Query Language (SQL) is a database management programming language.SQL is a tool for accessing databases, and more specifically, relational databases, and can be used with different database products.This chapter will prepare you to learn basic database management using this language.SQLite – To implement SQL as a library, you need SQLite.SQLite is intended to provide users and programs a way to store data using a SQL interface within the program.SQLite3 can be used to manipulate SQLite databases for major Linux distros.SQL is used to access relational databases.Each database contains more or less tables which in turn contain more or less rows and columns.Hereby a single row is seen as a separate object with features represented by the tables' columns.To access a table's data you first have to connect to its database.With the same table, the query SELECT * FROM T WHERE C1 = 1 will result in all the elements of all the rows where the value of column C1 is '1' being shown.A WHERE clause specifies that a SQL statement should only affect rows that meet specified criteria.The criteria are expressed in the form of predicates.WHERE clauses are not mandatory clauses of SQL statements, but should be used to limit the number of rows affected by a SQL DML statement or returned by a query.",
      "documentMetadata": {
        "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/3825eac51ef9e934bbc558faa42f4c71",
        "uri": "gs://my-bucket-123/documents/26f5872b0719790cb966a697bfa1ea27.txt"
        "structData": {
          "fields": [
            {
              "key": "cdoc_url"
              "value": { "stringValue": "26f5872b0719790cb966a697bfa1ea27" }
            },
            {
              "key": "doc_id"
              "value": { "stringValue": "3825eac51ef9e934bbc558faa42f4c71" }
            }
          ]
        }
      }
    }
  },
  {
    "chunkInfo": {
      "content": "This chapter focuses on using Paradox as a client/server development tool.It does not talk about connecting; it is assumed you have already connected.If you are having trouble connecting to a particular SQL server, then refer to the Connection Guide for that particular server.This chapter does review what a user can do interactively with Paradox and how to use ObjectPAL with SQL servers.Structured Query Language (SQL) was developed to create a standard for accessing database information.The ANSI standard for SQL allows a user to become familiar with the commands needed to query many different types of data.After you learn ANSI SQL, you then can query many different databases.Is SQL a solid standard?Yes and no.Yes, the core ANSI SQL commands are solid and consistent from vendor to vendor.Every vendor, however, adds capability to its version of SQL.These improvements are expected because ANSI SQL does not go far enough to cover every feature of every high-end DBMS.The SQL standard is used by many companies for their high-end products.They include Oracle, Sybase, Microsoft SQL, Informix, and Interbase.Paradox also provides the capability to use standard ANSI SQL commands on local Paradox and dBASE tables.Although SQL by definition is a standard, various flavors are on the market.",
      "documentMetadata": {
        "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/b3e88db8676b87b99af1e6ecc7d8757f",
        "uri": "gs://my-bucket-123/documents/073c21335d37d8d14982cb3437a721c0.txt"
        "structData": {
          "fields": [
            {
              "key": "cdoc_url"
              "value": { "stringValue": "073c21335d37d8d14982cb3437a721c0" }
            },
            {
              "key": "doc_id"
              "value": { "stringValue": "b3e88db8676b87b99af1e6ecc7d8757f" }
            }
          ]
        }
      }
    }
  }
],
...
"steps": [
  {
    "state": "SUCCEEDED",
    "description": "Rephrase the query and search.",
    "actions": [
      {
        "searchAction": {
          "query": "What is SQL?"
        },
        "observation": {
          "searchResults": [
            {
              "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/d993d922043374f5ef7ba297c158b106",
              "uri": "gs://my-bucket-123/documents/058dee0ec23a3e92f9bfd7cd29840e8f.txt",
              "chunkInfo": [
                {
                  "content": "There are a lot of Databases available in the market such as MS Access, Oracle and many others.For you to write programs that interact with these databases easily, there has to be a way where you could get information from all these databases using the same method.For this purpose SQL was developed.It is a kind of language (simple when compared to the likes of C or C++) which enables you to ask all your queries to a database without bothering about the exact type of database.When you use this Query the database engine would first find the table called people.Then it would find a column called firstname.Next it would compare all the values in that column with 'Reena'.Finally it would return all the details wherever it finds a match for the firstname.When you write a database program in VC++ or Java or any other language for that matter, you would make a database connection to your database and then you would query the database using SQL queries.When you query the database with any SQL query the database returns a recordset.A recordset is basically a set of records (all the entries that your query returns).This recordset is received in your program and all languages have a data structure which represents a recordset."
                }
              ]
            },
            {
              "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/3825eac51ef9e934bbc558faa42f4c71",
              "uri": "gs://my-bucket-123/documents/26f5872b0719790cb966a697bfa1ea27.txt",
              "chunkInfo": [
                {
                  "content": "The Structured Query Language (SQL) is a database management programming language.SQL is a tool for accessing databases, and more specifically, relational databases, and can be used with different database products.This chapter will prepare you to learn basic database management using this language.SQLite – To implement SQL as a library, you need SQLite.SQLite is intended to provide users and programs a way to store data using a SQL interface within the program.SQLite3 can be used to manipulate SQLite databases for major Linux distros.SQL is used to access relational databases.Each database contains more or less tables which in turn contain more or less rows and columns.Hereby a single row is seen as a separate object with features represented by the tables' columns.To access a table's data you first have to connect to its database.With the same table, the query SELECT * FROM T WHERE C1 = 1 will result in all the elements of all the rows where the value of column C1 is '1' being shown.A WHERE clause specifies that a SQL statement should only affect rows that meet specified criteria.The criteria are expressed in the form of predicates.WHERE clauses are not mandatory clauses of SQL statements, but should be used to limit the number of rows affected by a SQL DML statement or returned by a query."
                }
              ]
            },
            {
              "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/b3e88db8676b87b99af1e6ecc7d8757f",
              "uri": "gs://my-bucket-123/documents/073c21335d37d8d14982cb3437a721c0.txt",
              "chunkInfo": [
                {
                  "content": "This chapter focuses on using Paradox as a client/server development tool.It does not talk about connecting; it is assumed you have already connected.If you are having trouble connecting to a particular SQL server, then refer to the Connection Guide for that particular server.This chapter does review what a user can do interactively with Paradox and how to use ObjectPAL with SQL servers.Structured Query Language (SQL) was developed to create a standard for accessing database information.The ANSI standard for SQL allows a user to become familiar with the commands needed to query many different types of data.After you learn ANSI SQL, you then can query many different databases.Is SQL a solid standard?Yes and no.Yes, the core ANSI SQL commands are solid and consistent from vendor to vendor.Every vendor, however, adds capability to its version of SQL.These improvements are expected because ANSI SQL does not go far enough to cover every feature of every high-end DBMS.The SQL standard is used by many companies for their high-end products.They include Oracle, Sybase, Microsoft SQL, Informix, and Interbase.Paradox also provides the capability to use standard ANSI SQL commands on local Paradox and dBASE tables.Although SQL by definition is a standard, various flavors are on the market."
                }
              ]
            },
...
            {
              "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/3dd4014e41044c5dd6a0fe380847f369",
              "uri": "gs://my-bucket-123/documents/76245cb33a66f4fbd9030a2a11eea00d.txt",
              "chunkInfo": [
                {
                  "content": "SQL injection is a code injection technique that might destroy your database.You can read more here OWASP sql injection testing sheet.Description: SQL injection ( second order) SQL injection vulnerabilities arise when user- controllable data is incorporated sheet into database SQL queries in an unsafe manner.This sheet cheat wiki assumes you have a basic understanding of SQL injection, please go here for an introduction if you are unfamiliar.Bypass login page with sql SQL injection [ closed].Gone are the days when knowledge sheet of just sql SQL Injection or XSS could help you land a lucrative high- paying InfoSec job.There is many sheet differnet variations you would login have probably have to try to make this exploit work ( sql especially if it is sql a blind SQL exploit).SQL injection usually occurs when you ask a user for input, like their.ゲストブック/ コメントの例.Submit Text Post.Get an ad- free experience with special benefits, and directly support Reddit.get reddit premium.SQL Injection Cheat.Many web applications have an authentication system: a user provides a user name and password, the web application checks them and stores the corresponding user id in the session hash.Login # 1 Login # 2 Login # 3 Login # 4."
                }
              ]
            }
          ]
        }
      }
    ]
  }
]
}
}
 Dalam contoh ini, skor dukungan (`groundingScore`) ditampilkan untuk setiap
kutipan.
 
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Hanya menampilkan jawaban yang memiliki dasar yang kuat 
Perintah berikut menunjukkan cara menampilkan hanya jawaban yang dianggap memiliki
dasar yang kuat dalam korpus , yaitu informasi di penyimpanan data.
Jawaban yang tidak memiliki dasar yang kuat akan difilter.
Anda memilih nilai minimum atau maksimum untuk skor dukungan perujukan. Kemudian, jawaban
hanya ditampilkan jika memenuhi atau melampaui tingkat tersebut. Anda dapat bereksperimen dengan dua
nilai minimum filter dan tanpa nilai minimum untuk menentukan tingkat filter yang
kemungkinan akan memberikan hasil terbaik bagi pengguna Anda.
Untuk mengetahui informasi umum tentang perujukan di Vertex AI, lihat Memeriksa perujukan dengan RAG . Metode
groundingConfigs.check
  
  
  
  
  
    
  
  
  REST Untuk menampilkan jawaban hanya jika memenuhi nilai minimum skor dukungan, lakukan
hal berikut:
Jalankan perintah 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_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "groundingSpec": {
           "filteringLevel": "FILTER_LEVEL "
        }
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY FILTER_LEVEL FILTERING_LEVEL_LOW dan FILTERING_LEVEL_HIGH. Jika
  filteringLevel tidak disertakan, tidak ada
  filter skor dukungan yang diterapkan pada jawaban.
   
Contoh perintah dan hasil sebagian 
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/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{
    "query": { "text": "When can an NCD be made?"},
    "groundingSpec": {
       "filtering_level": "FILTERING_LEVEL_HIGH"
    }
  }'
  answer_text: "We do not have a summary for your query." 
      steps {
        state: SUCCEEDED
        description: "Rephrase the query and search."
        actions {
          search_action {
            query: "test?"
          }
          observation {
            search_results {
              document: "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f7f5cfde02"
              uri: "gs://my-bucket-123/data/CoverageDocumentation.pdf"
              title: "ABC345_0101"
              chunk_info {
                content: "This notice implements part of section 731 of the Medicare Prescription Drug, Improvement, and Modernization Act of 2003 by describing a method of developing, and making available to the public, guidance documents under the Medicare program… "
              }
    ...
            search_results {
              document: "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f7f5cfde02"
              uri: "gs://my-bucket-123/data/CoverageDocumentation.pdf"
              title: "ABC345_0101"
              chunk_info {
                content: "For the purposes of this notice, the term guidance documents means documents prepared for our staff, potential requestors of National Coverage Determinations, and other interested parties explaining the NCD process… "
              }
            }
          }
        }
      }
      answer_skipped_reasons: LOW_GROUNDED_CONTENT 
    }
 Dalam contoh ini, tidak ada jawaban yang ditampilkan karena nilai minimum tinggi tidak terpenuhi.
 
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Tentukan model jawaban 
Perintah berikut menunjukkan cara mengubah versi model yang digunakan untuk membuat
jawaban.
Untuk mengetahui informasi tentang model yang didukung, lihat Versi dan siklus proses model pembuatan jawaban .
  
  
  
  
  
    
  
  
  REST Untuk membuat jawaban menggunakan model yang berbeda dari model default, lakukan hal berikut:
Jalankan perintah 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_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "answerGenerationSpec": {
           "modelSpec": {
              "modelVersion": "MODEL_VERSION ",
           }
         }
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY MODEL_VERSION Versi dan siklus proses model pembuatan jawaban .
   
Contoh perintah dan hasil sebagian 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{"query": { "text": "Compare bigquery with spanner database?"},   "answerGenerationSpec": {
     "modelSpec": {
     "modelVersion": "preview", 
     }
   } }'
    Dalam contoh ini, versi pratinjau model digunakan, bukan model default.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Menentukan pembukaan kustom 
Perintah berikut menunjukkan cara menetapkan pengantar untuk jawaban yang dihasilkan. Pengantar
berisi petunjuk bahasa alami untuk menyesuaikan jawaban. Anda
dapat meminta penyesuaian seperti panjang, tingkat detail, gaya output
(seperti "sederhana"), bahasa output, fokus jawaban, dan format (seperti
tabel, poin butir, dan XML). Misalnya, pembukaannya bisa berupa "Jelaskan seperti Anda
adalah anak berusia sepuluh tahun".
Pengantar dapat berdampak signifikan pada kualitas jawaban yang dihasilkan. Untuk mengetahui informasi tentang apa yang harus ditulis dalam kata pengantar dan contoh kata pengantar yang baik, lihat Tentang kata pengantar kustom .
  
  
  
  
  
    
  
  
  REST Untuk membuat jawaban menggunakan model yang berbeda dari model default, lakukan hal berikut:
Jalankan perintah 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_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "answerGenerationSpec": {
           "promptSpec": {
               "preamble": "PREAMBLE ",
           }
        }
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY PREAMBLE show the answer format in
  an ordered list atau give a very detailed answer.
   
Contoh perintah dan hasil 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)"
    -H "Content-Type: application/json"
    "https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
    -d '{
          "query": { "text": "what is bigquery?"},
          "answerGenerationSpec": {
             "promptSpec": {
                "preamble": "Explain like you are a ten years old
                kid ",
     }
  }
}'
BigQuery is like a super-powered storage space for your data, but it's in the cloud, not on your computer. It's like a giant warehouse for all your information, but you don't have to build or manage it yourself. You can use BigQuery to find patterns and insights in your data, like figuring out what people like to buy or how many people visited your website. It's like having a super-smart assistant that can help you understand your data better. BigQuery is really good at working with lots of data, even billions of pieces of information. \n",
    "steps ": [
      {
        "state": "SUCCEEDED",
        "description": "Rephrase the query and search.",
        "actions": [
          {
            "searchAction": {
              "query": "What is BigQuery?"
            },
            "observation": {
              "searchResults": [
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/2d032dc582689e8c0ecea7fc7bfa3189",
                  "uri": "https://cloud.google.com/bigquery",
                  "title": "BigQuery enterprise data warehouse | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eBigQuery\u003c/b\u003e is a fully managed, AI-ready data analytics platform that helps you maximize value from your data and is designed to be multi-engine, multi-format, ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/4474f4a5a18ecd611dedfe323dfe55d9",
                  "uri": "https://cloud.google.com/bigquery/docs/introduction",
                  "title": "BigQuery overview | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eBigQuery\u003c/b\u003e is a fully managed, AI-ready data platform that helps you manage and analyze your data with built-in features like machine learning, search, ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/c840fdef90d86328f13bbedbdbf0ac10",
                  "uri": "https://cloud.google.com/bigquery/docs/query-overview",
                  "title": "Overview of BigQuery analytics | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eBigQuery\u003c/b\u003e lets you save queries and share queries with others. When you save a query, it can be private (visible only to you), shared at the project level ( ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
...
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/5cbfab8ce1d5f6ffe45fef22900c9a00",
                  "uri": "https://cloud.google.com/curated-resources/bigquery",
                  "title": "Guides BigQuery | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eBigQuery\u003c/b\u003e is Google Cloud's fully managed and serverless enterprise data warehouse solution, designed to help you make informed decisions quickly, so you can ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    ]
  },
  "answerQueryToken": "NMwKDAi8hN-2BhC0jMCPARIkNjZkN2I4MzItMDAwMC0yMTliLTkxN2EtMDg5ZTA4MjA0YjFj"
}
 Dalam contoh ini, pengantar meminta jawaban yang lebih sederhana daripada yang mungkin diberikan secara default.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Metode jawaban dapat menyarankan pertanyaan terkait, yang dapat dipilih pengguna Anda, bukan memasukkan pertanyaan mereka sendiri. Misalnya, saat Anda bertanya
"Kapan waktu terbaik dalam setahun untuk berlibur di Meksiko?",
selain menjawab pertanyaan Anda, metode jawaban dapat menyarankan pertanyaan lain
yang mungkin Anda ajukan, seperti "Bulan apa yang paling murah untuk berlibur di Meksiko?" dan "Bulan apa saja yang ramai turis di Meksiko?".
Untuk menerima pertanyaan terkait, Anda harus menentukan penyertaannya dengan setiap kueri,
dan pertanyaan tersebut ditampilkan sebagai array string dalam respons.
Sebelum memulai 
Pastikan Anda telah mengaktifkan fitur LLM lanjutan  untuk aplikasi.
Prosedur 
Perintah berikut menunjukkan cara meminta agar pertanyaan terkait disertakan dengan
jawaban.
  
  
  
  
  
    
  
  
  REST Untuk mendapatkan pertanyaan terkait dengan jawaban yang dihasilkan:
Jalankan perintah 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_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "relatedQuestionsSpec": { "enable": true }
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY  
Contoh perintah dan hasil sebagian 
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/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "what kinds of data can I import into Vertex AI Search?"},
        "session": "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/10291252835232308789",
        "searchSpec":{ "searchParams": {"filter": ""} },
        "relatedQuestionsSpec": { "enable": true }
}'
"relatedQuestions": [
      "Can you provide examples of structured data formats?",
      "What file types are supported for unstructured data?",
      "How does website data ingestion work?",
      "What are the limitations of healthcare data import?",
      "Is there a size limit for importing data?"
    ], 
    ...
  }
}
 Dalam contoh ini, kolom enabled di objek relatedQuestionsSpec
ditetapkan ke true dan respons berisi pertanyaan terkait dalam array
relatedQuestions.
  
  
 
  
  
  
  
  
  
  
  
  
  
   
 
Sertakan kutipan 
Perintah berikut menunjukkan cara meminta kutipan disertakan dalam jawaban.
Catatan:  Nilai startIndex dan endIndex untuk metadata kutipan,
yang ditampilkan dalam respons, diukur dalam byte Unicode UTF-8, bukan karakter.
Jika ada karakter multi-byte, pengukuran indeks lebih panjang daripada
panjang string. 
  
  
  
  
  
    
  
  
  REST Untuk membuat jawaban menggunakan model yang berbeda dari model default, lakukan hal berikut:
Jalankan perintah 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_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "answerGenerationSpec": {
           "includeCitations": INCLUDE_CITATIONS 
        }
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY INCLUDE_CITATIONS false.
   
Contoh perintah dan hasil sebagian 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{"query": { "text": "What is SQL"},   "answerGenerationSpec": {
    "includeCitations": true
}
}'
"citations": [
      {
        "endIndex": "137",
        "sources": [
          {
            "referenceId": "0"
          },
          {
            "referenceId": "1"
          }
        ]
      },
      {
        "startIndex": "138",
        "endIndex": "437",
        "sources": [
          {
            "referenceId": "3"
          }
        ]
      },
      {
        "startIndex": "438",
        "endIndex": "575",
        "sources": [
          {
            "referenceId": "2"
          }
        ]
      },
      {
        "startIndex": "576",
        "endIndex": "742",
        "sources": [
          {
            "referenceId": "3"
          }
        ]
      }
    ],
    "references": [
      {
        "chunkInfo": {
          "content": "There may be a second table that stores visit information. A relational database uses a unique ID for each row to maintain the linked patient information across the two tables. This way, you can quickly look up the visits of each patient. Sign up for a free trial for any of Google Cloud's SQL databases, which include AlloyDB, Cloud SQL, and Spanner. Get started for free What is SQL? SQL (Structured Query Language) is a programming language used to store, retrieve, and manage data in a relational database. SQL statements are English-like, making the language accessible to software developers, data analysts, and other practitioners. Benefits of SQL databases Enterprises choose SQL databases for being: Efficient. Relational databases are incredibly efficient in managing complex queries. Fast. SQL databases can retrieve large amounts of data, quickly. This makes them highly desirable for real-time transactional data. Reliable. SQL databases provide a high degree of data integrity and are ACID-compliant. SQL database engines There are numerous SQL database engines (products) used to build software applications. Some of the most popular include PostgreSQL, MySQL, SQL Server, and Oracle. Some database engines are open source while others are commercial offerings. ",
          "relevanceScore": 0.9,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/7218ff4f57328d86059246d4af3a9953",
            "uri": "https://cloud.google.com/discover/what-are-sql-databases",
            "title": "SQL Databases | Google Cloud"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "PostgreSQL vs. SQL Server: What's the difference? | Google Cloud Page Contents Topics PostgreSQL vs. SQL PostgreSQL vs SQL Server: What are the key differences? Trying to find the right database for your applications? When it comes to choosing a database technology, the most common SQL options to consider are PostgreSQL vs. SQL Server. While both systems share many core features, there are some key differences—the major one being that PostgreSQL is open source and SQL Server is owned by Microsoft. Today, it is more vital than ever for companies to be able to manage, store, and activate data for modern business operations. With the growing assortment of databases available to choose from, it can be overwhelming to pick the right one for your applications. The most important thing to remember is that no single database will be a good match for every project requirement, so it's critical to understand the option that will work best for your specific use case. So, what is PostgreSQL vs. SQL Server? In this short guide, we'll discuss the basic differences between PostgreSQL and SQL Server. Get started for freeStay informed What is SQL? Structured Query Language or SQL, as it's more commonly known, is a programming language used to manage, query, and retrieve data in a relational database. ",
          "relevanceScore": 0.8,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f7cd9afab1282a9f57cdcee1885bb4c6",
            "uri": "https://cloud.google.com/learn/postgresql-vs-sql",
            "title": "PostgreSQL vs. SQL Server: What's the difference? | Google Cloud"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "SQL Databases | Google Cloud Page Contents Topics What are SQL databases? What are SQL databases? A SQL database, also known as a relational database, is a system that stores and organizes data into highly structured tables of rows and columns. These databases offer Structured Query Language (SQL) to read and write the data, and are categorized as relational database management systems (RDBMS). SQL statements are used to create and update the structure of tables, read and write data, manage user permissions, and perform administrative tasks. For example, a CREATE statement is used to create a table, an INSERT statement adds a new row to a table, and a SELECT statement performs a database query. Statements that make structural or administrative changes are usually reserved for software developers and administrators, while read and write operations are performed by end-user applications. A relational database maintains the ability to link information across multiple tables. This format makes it easy to quickly gain insights about the relationships between various columns or data points in these tables. A relational database can create indexes for particular columns for faster lookups. For example, a healthcare facility might maintain a table containing rows of patient information, where each row is one patient and the columns contain data points, such as the patient's name, insurance information, and contact details. ",
          "relevanceScore": 0.8,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/7218ff4f57328d86059246d4af3a9953",
            "uri": "https://cloud.google.com/discover/what-are-sql-databases",
            "title": "SQL Databases | Google Cloud"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "It is the standard language used by relational database management systems (RDBMS), including PostgreSQL, SQL Server, MySQL, and Oracle Database. SQL typically uses commands written in statement format for queries and other database operations, which allow users to manipulate data in relational database tables. While originally created for relational databases, SQL acts as a foundation for many of today's technology capabilities, making SQL knowledge an essential skill for many technology roles today, including data analysts, database engineers, and even backend programming. However, you will find that there are different variants of SQL depending on the database or database management system that you choose. What is Microsoft SQL Server? SQL Server is a leading RDBMS that is built on top of SQL and developed by Microsoft. It is used to manage and store data to support numerous enterprise use cases for business intelligence, transaction processing, data analytics, and machine learning services. SQL Server has a row-based table structure that allows you to connect related data elements from different tables without having to store data multiple times in a database. In general, Microsoft SQL Server is known for its high availability, fast performance when handling large workloads, and easy integration with other applications to gain business intelligence across your entire data estate. For more information, we recommend reviewing the official SQL Server documentation. ",
          "relevanceScore": 0.8,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f7cd9afab1282a9f57cdcee1885bb4c6",
            "uri": "https://cloud.google.com/learn/postgresql-vs-sql",
            "title": "PostgreSQL vs. SQL Server: What's the difference? | Google Cloud"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "Send feedback The GoogleSQL language in Spanner bookmark_borderbookmark Stay organized with collections Save and categorize content based on your preferences. Dismiss Got it GoogleSQL is the new name for Google Standard SQL! New name, same great SQL dialect. This page provides an overview of supported statements in GoogleSQL. GoogleSQL is an ANSI compliant Structured Query Language (SQL) which includes the following types of supported statements: Query statements, also known as Data Query Language (DQL) statements, are the primary method to analyze data in Spanner. They scan one or more tables or expressions and return the computed result rows. Data Definition Language (DDL) statements let you create and modify database objects such as tables, views, and database roles. Data Manipulation Language (DML) statements enable you to update, insert, and delete data from your Spanner tables. Data Access Control statements let you grant and revoke access privileges at the table and column level. Transaction Control statements allow you to manage transactions for data modifications. Was this helpful? Send feedback Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates. ",
          "relevanceScore": 0.7,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/0c5c094170756eeb6bdfec6eb5c7d081",
            "uri": "https://cloud.google.com/spanner/docs/reference/standard-sql/overview",
            "title": "The GoogleSQL language in Spanner | Google Cloud"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "FAQ Expand all What is Cloud SQL? Cloud SQL is a service that delivers fully managed relational databases in the cloud. It offers MySQL, PostgreSQL, and SQL Server database engines. How is Cloud SQL different from other cloud databases? Cloud SQL is valued for its openness, ease of use, security, cost-efficiency, and Google Cloud integration—in fact, more than 95% of Google Cloud's top 100 customers use it. If you're comparing PostgreSQL options on Google Cloud, view our comparison chart. What's the difference between the Enterprise and Enterprise Plus editions? For PostgreSQL, the Enterprise Plus edition brings enhanced availability, performance, and data protection capabilities. Specifically, it provides a 99.99% availability SLA with near-zero downtime maintenance, optimized hardware and software configurations, intelligent data caching for read-intensive transactional workloads, a configurable data cache option and 35 days of log retention. For MySQL, the Enterprise Plus edition brings enhanced availability, performance, and data protection capabilities. Specifically, it provides a 99.99% availability SLA with near-zero downtime maintenance, optimized hardware and software configurations, intelligent data caching for read-intensive transactional workloads, a configurable data cache option, 35 days of log retention and advanced disaster recovery capabilities like orchestrated failover and switchback. ",
          "relevanceScore": 0.7,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/931f2c8e19ed54a407857f1cad3b5aaa",
            "uri": "https://cloud.google.com/sql",
            "title": "Cloud SQL for MySQL, PostgreSQL, and SQL Server | Google Cloud"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "PostgreSQL versus SQL PostgreSQL is an open-source, object-relational database (ORDBMS) designed for enterprise-level performance and is valued for its reliability and robust features. Its long history of development and its use of SQL makes it one of the most popular open source databases worldwide. Its default procedural language is an extension of pgSQL (PL/pgSQL), with procedural language extensions of Tcl, Perl, and Python included in the standard distribution (written as PL/Tcl, PL/Perl, and PL/Python). Many more languages are supported through extensions, including Java, Ruby, C, C++, Delphi, and JavaScript. For a more in-depth comparison, visit our PostgreSQL versus SQL guide. MySQL versus SQL MySQL is a popular open source relational database created in 1995 and currently sponsored by Oracle. It supports SQL queries and can be administered either through a graphical user interface (GUI) or a command line. MySQL can be deployed manually on a physical machine or through a cloud service provider. Enterprises are increasingly choosing fully managed services to reduce the maintenance burden of their databases. What is SQL Server? SQL Server is a Microsoft-owned database that runs SQL queries. Dive into the differences between PostgreSQL and SQL Server. ",
          "relevanceScore": 0.6,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/7218ff4f57328d86059246d4af3a9953",
            "uri": "https://cloud.google.com/discover/what-are-sql-databases",
            "title": "SQL Databases | Google Cloud"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "Send feedback On this page BigQuery SQL dialects Changing from the default dialect What's next Introduction to SQL in BigQuery bookmark_borderbookmark Stay organized with collections Save and categorize content based on your preferences. Dismiss Got it GoogleSQL is the new name for Google Standard SQL! New name, same great SQL dialect. This document provides an overview of supported statements and SQL dialects in BigQuery. GoogleSQL is an ANSI compliant Structured Query Language (SQL) which includes the following types of supported statements: Query statements, also known as Data Query Language (DQL) statements, are the primary method to analyze data in BigQuery. They scan one or more tables or expressions and return the computed result rows. Procedural language statements are procedural extensions to GoogleSQL that allow you to execute multiple SQL statements in one request. Procedural statements can use variables and control-flow statements, and can have side effects. Data Definition Language (DDL) statements let you create and modify database objects such as tables, views, functions, and row-level access policies. Data Manipulation Language (DML) statements enable you to update, insert, and delete data from your BigQuery tables. Data Control Language (DCL) statements let you control BigQuery system resources such as access and capacity. Transaction Control Language (TCL) statements allow you to manage transactions for data modifications. ",
          "relevanceScore": 0.6,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/2f6fc3e29873518196cb50195d7ded45",
            "uri": "https://cloud.google.com/bigquery/docs/introduction-sql",
            "title": "Introduction to SQL in BigQuery | Google Cloud"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "Database administration Cloud SQL pricing Connect to a Cloud SQL managed database Cloud SQL updates Configuration updates System updates What's next Home Cloud SQL Documentation Guides Was this helpful? Send feedback Cloud SQL overview bookmark_borderbookmark Stay organized with collections Save and categorize content based on your preferences. Dismiss Got it On this page Database configurations with Cloud SQL Use cases for Cloud SQL What Cloud SQL provides What is a Cloud SQL instance? Database administration Cloud SQL pricing Connect to a Cloud SQL managed database Cloud SQL updates Configuration updates System updates What's next Cloud SQL is a fully managed relational database service for MySQL, PostgreSQL, and SQL Server. This frees you from database administration tasks so that you have more time to manage your data. This page discusses basic concepts and terminology for Cloud SQL, which provides SQL data storage for Google Cloud. For a more in-depth explanation of key concepts, see the key terms and features pages. For information about how Cloud SQL databases compare with one another, see Cloud SQL feature support by database engine. Database configurations with Cloud SQL The following video shows you the benefits of using Cloud SQL. ",
          "relevanceScore": 0.6,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/4098ae11bfa400e8f1b8e9ba59d2b71b",
            "uri": "https://cloud.google.com/sql/docs/introduction",
            "title": "Cloud SQL overview"
          }
        }
      },
      {
        "chunkInfo": {
          "content": "Cloud SQL documentation View all product documentation Cloud SQL is a fully-managed database service that helps you set up, maintain, manage, and administer your relational databases on Google Cloud Platform. You can use Cloud SQL with MySQL, PostgreSQL, or SQL Server. Not sure what database option is right for you? Learn more about our database services. Learn more about Cloud SQL. Documentation resources Find quickstarts and guides, review key references, and get help with common issues. format_list_numbered Guides Cloud SQL overview Database engine feature support MySQL PostgreSQL SQL Server find_in_page Reference gcloud commands REST API Client libraries info Resources Pricing Release notes Resources Try Cloud SQL for yourself Create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads. Try Cloud SQL free Was this helpful? Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates. Last updated 2024-08-29 UTC. ",
          "relevanceScore": 0.5,
          "documentMetadata": {
            "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/37935181d99a6ad3b4897e673a7a7986",
            "uri": "https://cloud.google.com/sql/docs",
            "title": "Cloud SQL documentation"
          }
        }
      }
      ], 
    "steps": [
      {
        "state": "SUCCEEDED",
        "description": "Rephrase the query and search.",
        "actions": [
          {
            "searchAction": {
              "query": "What is SQL?"
            },
            "observation": {
              "searchResults": [
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/7218ff4f57328d86059246d4af3a9953",
                  "uri": "https://cloud.google.com/discover/what-are-sql-databases",
                  "title": "SQL Databases | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eSQL\u003c/b\u003e (Structured Query Language) is a programming language used to store, retrieve, and manage data in a relational database. \u003cb\u003eSQL\u003c/b\u003e statements are English-like, ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f7cd9afab1282a9f57cdcee1885bb4c6",
                  "uri": "https://cloud.google.com/learn/postgresql-vs-sql",
                  "title": "PostgreSQL vs. SQL Server: What's the difference? | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eSQL\u003c/b\u003e typically uses commands written in statement format for queries and other database operations, which allow users to manipulate data in relational database ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/3afdede140d0906c2146a2f2b3a7821e",
                  "uri": "https://cloud.google.com/blog/topics/developers-practitioners/what-cloud-sql",
                  "title": "What is Cloud SQL? | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "It is a fully managed relational database for MySQL, PostgreSQL and \u003cb\u003eSQL\u003c/b\u003e Server. It reduces maintenance cost and automates database provisioning, storage ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                ...
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/0c5c094170756eeb6bdfec6eb5c7d081",
                  "uri": "https://cloud.google.com/spanner/docs/reference/standard-sql/overview",
                  "title": "The GoogleSQL language in Spanner | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eGoogleSQL\u003c/b\u003e is the new name for Google Standard \u003cb\u003eSQL\u003c/b\u003e! New name, same great \u003cb\u003eSQL\u003c/b\u003e dialect. This page provides an overview of supported statements in \u003cb\u003eGoogleSQL\u003c/b\u003e.",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    ]
  },
  "answerQueryToken": "NMwKDAiFm_y2BhC_nfrYAxIkNjZkYjg3NjItMDAwMC0yZTBkLTg0ZDAtMDg5ZTA4MmRjYjg0"
}
 
  
  
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Menetapkan kode bahasa jawaban 
Perintah berikut menunjukkan cara menyetel kode bahasa untuk jawaban.
  
  
  
  
  
    
  
  
  REST Untuk membuat jawaban menggunakan model yang berbeda dari model default, lakukan hal berikut:
Jalankan perintah 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_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "answerGenerationSpec": {
           "answerLanguageCode": "ANSWER_LANGUAGE_CODE "
           }
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY ANSWER_LANGUAGE_CODE BCP47: Tags for
  Identifying Languages .  
Contoh perintah dan hasil 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{"query": { "text": "What is SQL"},   "answerGenerationSpec": {
  "answerLanguageCode": "es" 
     }
}'
"answerText": "SQL, que significa Structured Query Language, es un lenguaje de programación utilizado para almacenar, recuperar y administrar datos en una base de datos relacional. Las instrucciones de SQL son similares al inglés, lo que hace que el lenguaje sea accesible para desarrolladores de software, analistas de datos y otros profesionales. Las bases de datos SQL se utilizan para administrar y almacenar datos para apoyar numerosos casos de uso empresariales, como la inteligencia empresarial, el procesamiento de transacciones, el análisis de datos y los servicios de aprendizaje automático. SQL es el lenguaje estándar utilizado por los sistemas de gestión de bases de datos relacionales (RDBMS), incluidos PostgreSQL, SQL Server, MySQL y Oracle Database. SQL se utiliza para crear y actualizar la estructura de las tablas, leer y escribir datos, administrar los permisos de los usuarios y realizar tareas administrativas. \n", 
    "steps": [
      {
        "state": "SUCCEEDED",
        "description": "Rephrase the query and search.",
        "actions": [
          {
            "searchAction": {
              "query": "What is SQL?"
            },
            "observation": {
              "searchResults": [
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/7218ff4f57328d86059246d4af3a9953",
                  "uri": "https://cloud.google.com/discover/what-are-sql-databases",
                  "title": "SQL Databases | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eSQL\u003c/b\u003e (Structured Query Language) is a programming language used to store, retrieve, and manage data in a relational database. \u003cb\u003eSQL\u003c/b\u003e statements are English-like, ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/f7cd9afab1282a9f57cdcee1885bb4c6",
                  "uri": "https://cloud.google.com/learn/postgresql-vs-sql",
                  "title": "PostgreSQL vs. SQL Server: What's the difference? | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eSQL\u003c/b\u003e typically uses commands written in statement format for queries and other database operations, which allow users to manipulate data in relational database ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/3afdede140d0906c2146a2f2b3a7821e",
                  "uri": "https://cloud.google.com/blog/topics/developers-practitioners/what-cloud-sql",
                  "title": "What is Cloud SQL? | Google Cloud Blog",
                  "snippetInfo": [
                    {
                      "snippet": "It is a fully managed relational database for MySQL, PostgreSQL and \u003cb\u003eSQL\u003c/b\u003e Server. It reduces maintenance cost and automates database provisioning, storage ...",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                },
                ...
                                {
                  "document": "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/0c5c094170756eeb6bdfec6eb5c7d081",
                  "uri": "https://cloud.google.com/spanner/docs/reference/standard-sql/overview",
                  "title": "The GoogleSQL language in Spanner | Google Cloud",
                  "snippetInfo": [
                    {
                      "snippet": "\u003cb\u003eGoogleSQL\u003c/b\u003e is the new name for Google Standard \u003cb\u003eSQL\u003c/b\u003e! New name, same great \u003cb\u003eSQL\u003c/b\u003e dialect. This page provides an overview of supported statements in \u003cb\u003eGoogleSQL\u003c/b\u003e.",
                      "snippetStatus": "SUCCESS"
                    }
                  ]
                }
              ]
            }
          }
        ]
      }
    ]
  },
  "answerQueryToken": "NMwKDAjim_y2BhDftIjEAhIkNjZkOTQ0NWQtMDAwMC0yMTBkLTllNmItZjQwMzA0NWRiZDMw"
}
 Dalam contoh ini, meskipun dokumen sumber dalam bahasa Inggris, jawabannya diberikan dalam bahasa Spanyol.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Mempersonalisasi jawaban 
Jika ada informasi spesifik tentang pengguna yang tersedia—misalnya, data dalam profil, Anda dapat menentukan informasi tersebut dalam objek endUserMetadata
Misalnya, jika pengguna yang login menelusuri informasi tentang mengupgrade ponsel, informasi dari profilnya, seperti model ponsel saat ini dan paket seluler, memberikan informasi yang dapat mempersonalisasi jawaban yang dihasilkan.
Untuk menambahkan informasi pribadi tentang pengguna yang membuat kueri dan untuk membuat jawaban yang mempertimbangkan informasi pribadi tersebut, lakukan hal berikut:
Jalankan perintah 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_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
-d '{
    "query": { "text": "QUERY "},
    "endUserSpec": {
       "endUserMetadata": [
         {
           "chunkInfo": {
              "content": "PERSONALIZED_INFO ",
              "documentMetadata":  { "title": "INFO_DESCRIPTION "}
           }
         }
       ]
    }
  }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY PERSONALIZATION_INFO This customer has a Pixel 6 Pro  purchased over a period of
  24-months  starting 2023-01-15 . This customer is on the
  Business Plus International  plan. No payment is due at this
  time. Batas panjang untuk string ini adalah 8.000 karakter.INFO_DESCRIPTION Customer
  profile data, including model, plan, and billing status. Model
  menggunakan deskripsi ini dan informasi personalisasi
  saat membuat jawaban yang disesuaikan untuk kueri. 
Contoh perintah dan hasil 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "Can I upgrade my phone now?"},
        "answerGenerationSpec": { "includeCitations": true }
        "endUserSpec": {
           "endUserMetadata": [
             {
               "chunkInfo": {
                 "content": "This customer has a Pixel 6 Pro purchased over a period of 24-months starting 2023-01-15. This customer is on the Business Plus International plan. No payment is due at this time.",
                 "documentMetadata":  { "title": "Customer profile data, including model, plan, and billing status."}
               }
             }
           ]
        } 
      }'
"answerText": "Yes, you qualify for the yearly device upgrade because you've completed your 24-month payment plan.[1,3]  Since your account is fully paid you will not need to pay any additional monthly fees…  \n", 
    "citations": [
      {
        "end_index": 99
        "sources": [
           {
              "reference_id": "0"
           }
        ]
      },
      {
        "start_index": "100"
        "end_index": "240"
        "sources": [
           {
              "reference_id": "0"
           }
        ]
      },
      ...
    ]
    "references": [
      {
        "chunk_info": {
          "content":
          "+ "This customer has a Pixel 6 Pro purchased over a period of 24-months starting 2023-01-15. This customer is on the Business Plus International plan. No payment is due at this time.",
          "relevance_score": 0.3
          "documentMetadata":  {
            "title": "Customer profile data, including model, plan, and billing status."
          }
      {
        "chunk_info": {
          "content":
          "+ "For Cymbal Mobile upgrades, you can upgrade when you've paid off at least half of your current device's cost and have had it for 8 months…",
          "relevance_score": 0.8
          "documentMetadata":  {
            "document":
            "projects/123456/locations/us/collections/default_collection/dataStores/my-data-store/branches/0/documents/abcd1234567890"
            "uri": "https://www.example.com/help/device-upgrade"
            "title": "Upgrade eligibility"
          }
         }
      }
      ...
 Dalam contoh ini, model menggunakan endUserMetadata untuk menyesuaikan
jawaban. Sebagai ilustrasi, contoh ini menyertakan kutipan sehingga Anda dapat melihat pentingnya endUserMetadata; endUserMetadata selalu menjadi referensi pertama yang dikutip.
  
Membuat diagram untuk jawaban 
  
    
      
     
        Pratinjau
     
       
     
    
    
      
     
       
          Fitur ini
       
        tunduk kepada "Persyaratan Penawaran Pra-GA" di bagian Persyaratan Layanan Umum dari
        Persyaratan Khusus
        Layanan .
       
        Fitur pra-GA tersedia "sebagaimana adanya" dan mungkin memiliki dukungan terbatas.
     
      Untuk mengetahui informasi selengkapnya, lihat
      deskripsi tahap peluncuran .
  
 
   
Metode answer  dapat membuat diagram dan menampilkannya sebagai bagian dari
jawaban atas kueri.
Anda dapat secara khusus meminta agar jawaban menyertakan diagram, misalnya, "Buat diagram tingkat pertumbuhan pembayaran usaha kecil dari tahun ke tahun selama beberapa tahun dengan data yang tersedia". Jika sistem menentukan bahwa data yang memadai tersedia, diagram akan ditampilkan. Biasanya, beberapa teks jawaban ditampilkan bersama dengan
diagram.
Selain itu, jika ada cukup data untuk membuat diagram, metode jawaban dapat
menampilkan diagram meskipun kueri tidak secara eksplisit meminta diagram. Misalnya,
"Berapa peningkatan skor HDI yang terkait dengan akses yang lebih besar ke air minum bersih dalam dekade antara tahun 2010 dan 2020?"
Hanya satu diagram yang dibuat per jawaban. Namun, diagram tersebut mungkin merupakan diagram komposit, yang berisi diagram kecil lainnya. Contoh diagram komposit:
Batasan 
Kueri harus dalam bahasa Inggris.
Skenario kegagalan umum 
Anda tidak selalu mendapatkan gambar yang ditampilkan bersama jawaban Anda. Jika tidak ada data yang cukup, angka tidak dapat dibuat.
Skenario kegagalan lainnya mencakup kegagalan dan waktu tunggu habis saat eksekusi kode. Jika salah satu dari hal ini terjadi, ubah susunan kata kueri Anda dan coba lagi.
Sebelum memulai 
Sebelum menjalankan kueri yang meminta diagram yang dibuat, lakukan hal berikut:
Pastikan Anda telah mengaktifkan fitur LLM lanjutan  untuk aplikasi.
Pastikan Anda menggunakan model Gemini 2.0 atau yang lebih baru. Untuk mengetahui informasi tentang model, lihat Versi dan siklus proses model pembuatan jawaban .
Jika Anda memiliki penyimpanan data tidak terstruktur yang mencakup dokumen dengan banyak
tabel dan gambar, aktifkan Pengurai tata letak . Meskipun
tidak benar-benar diperlukan, hal ini akan memberikan hasil yang lebih berkualitas.
 
Prosedur 
  
  
  
  
  
    
  
  
  REST Panggil metode answer  sebagai berikut untuk menampilkan jawaban yang dapat
mencakup diagram yang dibuat dari data di penyimpanan data:
Jalankan perintah curl berikut:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "answerGenerationSpec": {
          "model_spec": {
             "model_version": "MODEL_VERSION "
         },
          "multimodalSpec": {
             "imageSource": "IMAGE_SOURCE "
             } 
        }
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY MODEL_VERSION gemini-2.0-flash-001/answer_gen/v1 atau yang lebih baru. Untuk mengetahui informasi selengkapnya, lihat Versi dan siklus proses model pembuatan jawaban .
  IMAGE_SOURCE FIGURE_GENERATION_ONLY,
  atau agar jawaban dapat menyertakan diagram yang dihasilkan atau gambar
  yang ada dari penyimpanan data , ALL_AVAILABLE_SOURCES. 
Contoh perintah dan hasil sebagian 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://discoveryengine.googleapis.com/v1beta/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" \
-d '{
    "query": { "text": "Plot composition of net cash used in investing activities"},
    "answerGenerationSpec": {
      "model_spec": {
         "model_version": "gemini-2.0-flash-001/answer_gen/v1"
         },
         "multimodalSpec": {
         "image_source": "FIGURE_GENERATION_ONLY"
         } 
    }
  }'
  "blobAttachments": [
      {
        "data": {
          "mimeType": "image/png",
          "data": "iVBORw0KGgoAAAANSUhEUgAACvAAZd8AEZFKHDp0CE5OTgCAZcuWYfr06QonIqIMXIGXiIhUITY2Vq4tLCxyNdbMzEyuk5OTtZaJiEgfZd5aMj4+Xq4zr1rztm3SMs/fXIGXiOjDGRgYyLWpqalcJyUlyfW/V7rJULVqVbl++PChDtIREemXr7766oPHPnr0CK1bt9ZeGCIiPXXlypWPGr9lyxYtJSEi0k9ly5bFzZs30bNnT0iSBEmS8PLlS1y6dAlHjhzBpUuX8PLlS/lcjx49cOPGDZQtW1bp6EREquHv7w9JkgAALVq0UDgNEWXGBl4iIlIFc3NzuY6MjMzV2ICAALkuVqyY1jIREemjzDdVb926JdeWlpZynXlr98z8/f3lunDhwtoPR0SkJzLPuYGBgXKd+bOun5/fG8dmXjE9PT1dB+mIiPTL8uXLP2hVm19++QV169aFt7e3DlIREemXDh06wMfHJ9fjwsLC0K1bN4wePVoHqYiI9EuRIkXwxx9/4MSJE3BycoKFhYXcsCtJEiwsLNC/f38cP34chw4dyrJQBBERfbxChQrJde...PrTn86//Mu/5Jhjjql1NACAAeP/AX0CwI314+qiAAAAAElFTkSuQmCC"
        },
        "attributionType": "GENERATED"
      }
      ] 
  },
  "answerQueryToken": "NMwKDAjEjOe-BhD-meX6ARIkNjdkNjBhM2QtMDAwMC0yYzU4LTgxYjctMDg5ZTA4MmNhZDgw"
 Dalam contoh ini, diagram yang dihasilkan disertakan dalam jawaban karena
kueri meminta plot dan ada cukup data untuk membuat diagram.
Gambar diagram ditampilkan dalam output blobAttachments
dengan attributionType GENERATED.
 
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Mengambil gambar yang ada dari penyimpanan data 
  
    
      
     
        Pratinjau
     
       
     
    
    
      
     
       
          Fitur ini
       
        tunduk kepada "Persyaratan Penawaran Pra-GA" di bagian Persyaratan Layanan Umum dari
        Persyaratan Khusus
        Layanan .
       
        Fitur pra-GA tersedia "sebagaimana adanya" dan mungkin memiliki dukungan terbatas.
     
      Untuk mengetahui informasi selengkapnya, lihat
      deskripsi tahap peluncuran .
  
 
   
Anda dapat memilih agar gambar dari penyimpanan data ditampilkan bersama jawaban dan
dalam referensi kutipan . Penyimpanan data harus berupa penyimpanan data tidak terstruktur dengan parser tata letak diaktifkan.
Untuk mendapatkan diagram dalam jawaban yang ditampilkan, Anda harus mengaktifkan
fitur LLM lanjutan .
Jika imageSource adalah CORPUS_IMAGE_ONLY atau ALL_AVAILABLE_SOURCES, maka metode
answer  dapat mengambil gambar dari penyimpanan data sebagaimana
mestinya. Namun, mengaktifkan opsi ini tidak berarti bahwa gambar akan selalu
ditampilkan.
Anda akan mendapatkan satu gambar (maksimum) per jawaban. Kutipan dapat berisi beberapa gambar.
Batasan 
Aplikasi yang Anda gunakan harus terhubung ke penyimpanan data tidak terstruktur.
Gambar tidak dapat ditampilkan dari situs atau dari penyimpanan data terstruktur.
Kueri harus dalam bahasa Inggris.
Anotasi gambar melalui parser tata letak harus diterapkan ke penyimpanan data.
Untuk mengetahui informasi tentang parser tata letak, lihat Mem-parsing dan mengelompokkan dokumen .
 
Prosedur 
  
  
  
  
  
    
  
  
  REST Panggil metode answer  sebagai berikut untuk menampilkan jawaban yang dapat menyertakan gambar dari penyimpanan data dalam jawaban:
Jalankan perintah curl berikut:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1beta/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer" \
  -d '{
        "query": { "text": "QUERY "},
        "answerGenerationSpec": {
          "model_spec": {
             "model_version": "MODEL_VERSION "
          },
          includeCitations: true,
          "multimodalSpec": {
             "imageSource": "IMAGE_SOURCE "
             } 
        }
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID QUERY MODEL_VERSION gemini-2.0-flash-001/answer_gen/v1 atau yang lebih baru. Untuk mengetahui informasi selengkapnya, lihat Versi dan siklus proses model pembuatan jawaban .
  IMAGE_SOURCE CORPUS_IMAGE_ONLY, atau agar jawaban dapat menyertakan salah satu
  gambar dari penyimpanan data atau diagram yang dihasilkan ,
  ALL_AVAILABLE_SOURCES. 
Contoh perintah dan hasil sebagian 
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
 -H "Content-Type: application/json" \
 "https://discoveryengine.googleapis.com/v1beta/projects/my-project-123//locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer"   -d '{
        "query": { "text": "Display the ranking of  generations from highest to lowest based on their spending on holiday items using cards."},
        "answerGenerationSpec": {"includeCitations": true,
        "model_spec": {
             "model_version": "gemini-2.0-flash-001/answer_gen/v1"
             },
             "multimodalSpec": {
      "imageSource": "CORPUS_IMAGE_ONLY"
      } 
  },
  "searchSpec": {
    "searchParams": {
      "maxReturnResults": 5
    }
  }
}'
"blobAttachments": [
      {
        "data": {
          "mimeType": "image/png",
          "data": "iVBORw0KGgoAAAANSUhEUgAABcwAAAIjCAIAAACxms+ZAAAgAElEQVR42uzdd1xTV/...Vv/F0NDQ4NOp3+waz94PJ5Op7+/ibro6fRiWPX/AaZ6/dAGW00gAAAAAElFTkSuQmCC"
        },
        "attributionType": "CORPUS"
      }
      ] 
  },
  "answerQueryToken": "M8gKCwiPuOe-BhDyhpgIEiQ2N2Q2MWI0Mi0wMDAwLTJjNTgtODFiNy0wODllMDgyY2FkODA"
}
 Gambar ditampilkan di bagian blobAttachments output. Gambar yang ditampilkan bersama jawaban selalu berada di
blobAttachments pertama. Jika ada, blobAttachments lain
akan berisi gambar yang ditampilkan dalam referensi kutipan. Gambar yang ditampilkan dengan jawaban juga dapat (dan sering kali) ditampilkan dengan kutipan. blobAttachmentIndexes adalah indeks yang mengaitkan
blobAttachment dengan jawaban atau teks kutipan.
attributionType untuk gambar yang ditampilkan selalu
CORPUS untuk menunjukkan bahwa gambar berasal dari penyimpanan data.
 
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Perintah untuk pertanyaan lanjutan 
Tindak lanjut adalah kueri multi-turn. Setelah kueri pertama dalam sesi lanjutan,
"giliran" berikutnya mempertimbangkan interaksi sebelumnya. Dengan tindak lanjut, metode
jawaban juga dapat menyarankan pertanyaan terkait, yang dapat dipilih pengguna
daripada memasukkan pertanyaan tindak lanjut mereka sendiri. Untuk mendapatkan saran pertanyaan terkait, Anda harus mengaktifkan fitur LLM lanjutan .
Semua fitur jawaban dan lanjutan yang dijelaskan di bagian sebelumnya, seperti kutipan, filter, SafeSearch, mengabaikan jenis kueri tertentu, dan menggunakan pengantar untuk menyesuaikan jawaban dapat diterapkan bersama dengan lanjutan.
Contoh sesi lanjutan 
Berikut adalah contoh sesi dengan tindak lanjut. Misalkan Anda ingin mengetahui informasi tentang berlibur di Meksiko:
Giliran 1: 
Anda:  Kapan waktu terbaik dalam setahun untuk berlibur di Meksiko?
Jawaban dengan tindak lanjut:  Waktu terbaik untuk berlibur di Meksiko adalah selama musim kemarau, yang berlangsung dari November hingga April.
 Giliran 2: 
Anda:  Berapa nilai tukar yang berlaku?
Jawaban dengan tindak lanjut:  1 USD setara dengan sekitar 17,65 peso Meksiko.
 Giliran 3: 
 
Tanpa tindak lanjut, pertanyaan Anda "Berapa nilai tukar?" tidak akan
dapat dijawab karena penelusuran reguler tidak akan tahu bahwa Anda menginginkan nilai tukar
Meksiko. Demikian pula, tanpa tindak lanjut, tidak akan ada konteks yang diperlukan untuk memberikan suhu khusus untuk Meksiko.
Tentang sesi 
Untuk memahami cara kerja tindak lanjut di Vertex AI Search, Anda perlu memahami sesi.
Sesi terdiri dari kueri teks yang diberikan oleh pengguna dan respons yang diberikan oleh Vertex AI Search.
Pasangan kueri dan respons ini terkadang disebut sebagai giliran . Dalam
contoh sebelumnya, giliran kedua terdiri dari "Berapa nilai tukarnya?"
dan "1 USD sama dengan sekitar 17,65 peso Meksiko".
Sesi disimpan dengan aplikasi.
Di aplikasi, sesi diwakili oleh resource
sesi .
Selain berisi pesan kueri dan respons, resource sesi memiliki:
Nama unik (ID sesi).
Status (sedang berlangsung atau selesai).
ID pseudo pengguna, yang merupakan ID pengunjung yang melacak pengguna. Nilai ini dapat ditetapkan secara terprogram. Jika dipetakan ke ID pseudo pengguna di peristiwa pengguna aplikasi Anda, model ini dapat membantu Anda menayangkan hasil yang dipersonalisasi untuk pengguna.
Waktu mulai dan waktu berakhir.
Giliran, yang merupakan pasangan jawaban kueri.
 
Sebelum memulai 
Sebelum menjalankan kueri yang meminta pertanyaan lanjutan, pastikan Anda telah mengaktifkan fitur LLM lanjutan  untuk aplikasi.
Menyimpan informasi sesi dan mendapatkan respons 
Anda dapat menggunakan command line untuk membuat respons dan jawaban penelusuran
dan untuk menyimpannya, beserta setiap kueri dalam sesi.
  
  
  
  
    
  
  
  REST Untuk menggunakan command line guna membuat sesi dan menghasilkan respons dari
input pengguna, ikuti langkah-langkah berikut:
Tentukan aplikasi tempat Anda ingin menyimpan sesi:
curl  -X  POST  \ 
   -H  "Authorization: Bearer  $( gcloud  auth  print-access-token) "   \ 
   -H  "Content-Type: application/json"   \ 
   "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /sessions"   \ 
   -d  '{ 
        "userPseudoId": "USER_PSEUDO_ID " 
      }' 
Ganti kode berikut:
PROJECT_ID 
APP_ID 
USER_PSEUDO_ID 
  ID ini tidak berubah saat pengunjung login atau logout dari
    situs. 
  Kolom ini tidak boleh disetel ke ID yang sama untuk beberapa pengguna.
    Jika tidak, ID pengguna yang sama dapat menggabungkan histori peristiwa pengguna yang berbeda dan menurunkan kualitas model. 
  Kolom ini tidak boleh menyertakan informasi identitas pribadi (PII). 
  Untuk permintaan penelusuran atau penjelajahan tertentu, kolom ini harus dipetakan ke kolom userPseudoId yang sesuai di peristiwa pengguna. 
 
Untuk informasi selengkapnya, lihat
userPseudoId
 
 
 Contoh perintah dan hasil 
curl  -X  POST  -H  "Authorization: Bearer  $( gcloud  auth  print-access-token) " 
-H  "Content-Type: application/json" 
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/sessions" 
-d  '{ 
"userPseudoId": "test_user" 
}' 
{ 
   "name" :  "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943" ,
   "state" :  "IN_PROGRESS" ,
   "userPseudoId" :  "test_user" ,
   "startTime" :  "2024-09-13T18:47:10.465311Z" ,
   "endTime" :  "2024-09-13T18:47:10.465311Z" 
}   
 Catat ID sesi, yaitu angka di akhir kolom name: dalam respons JSON. Dalam hasil contoh, ID-nya adalah 5386462384953257772.
Anda memerlukan ID ini pada langkah berikutnya.
Buat jawaban dan tambahkan ke sesi di aplikasi Anda:
curl  -X  POST  \ 
   -H  "Authorization: Bearer  $( gcloud  auth  print-access-token) "   \ 
   -H  "Content-Type: application/json"   \ 
   "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /servingConfigs/default_search:answer"   \ 
   -d  '{ 
        "query": { "text": "QUERY "}, 
        "session": "projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /sessions/SESSION_ID ", 
          "searchSpec":{ "searchParams": {"filter": "FILTER "} } 
}' 
Ganti kode berikut:
  PROJECT_ID APP_ID QUERY SESSION_ID name:, yang dicatat pada langkah 2. Untuk sesi, gunakan ID sesi yang sama di setiap giliran.
  FILTER Memfilter penelusuran khusus untuk data terstruktur atau tidak terstruktur  dan Memfilter penelusuran situs .
   
 
 Contoh perintah dan hasil 
curl  -X  POST  -H  "Authorization: Bearer  $( gcloud  auth  print-access-token) " 
-H  "Content-Type: application/json" 
"https://discoveryengine.googleapis.com/v1/projects/my-project-123/locations/global/collections/default_collection/engines/my-app/servingConfigs/default_search:answer" 
-d  '{ 
"query": { "text": "Compare bigquery with spanner database?"}, 
"session":  "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943", 
}' 
     { 
   "answer" :  { 
     "name" :  "projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943/answers/4861507376861383072" ,
     "state" :  "SUCCEEDED" ,
     "answerText" :  "BigQuery and Spanner are both powerful tools that can be used together to handle transactional and analytical workloads. Spanner is a fully managed relational database optimized for transactional workloads, while BigQuery is a serverless data warehouse designed for business agility. Spanner provides seamless replication across regions in Google Cloud and processes over 1 billion requests per second at peak. BigQuery analyzes over 110 terabytes of data per second. Users can leverage federated queries to read data from Spanner and write to a native BigQuery table. \n" ,
     "steps" :  [ 
       { 
         "state" :  "SUCCEEDED" ,
         "description" :  "Rephrase the query and search." ,
         "actions" :  [ 
           { 
             "searchAction" :  { 
               "query" :  "Compare bigquery with spanner database?" 
             } ,
             "observation" :  { 
               "searchResults" :  [ 
                 { 
                   "document" :  "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/ecc0e7547253f4ca3ff3328ce89995af" ,
                   "uri" :  "https://cloud.google.com/blog/topics/developers-practitioners/how-spanner-and-bigquery-work-together-handle-transactional-and-analytical-workloads" ,
                   "title" :  "How Spanner and BigQuery work together to handle transactional and analytical workloads | Google Cloud Blog" ,
                   "snippetInfo" :  [ 
                     { 
                       "snippet" :  "Using Cloud \u003cb\u003eSpanner\u003c/b\u003e and \u003cb\u003eBigQuery\u003c/b\u003e also allows customers to build their \u003cb\u003edata\u003c/b\u003e clouds using Google Cloud, a unified, open approach to \u003cb\u003edata\u003c/b\u003e-driven transformation ..." ,
                       "snippetStatus" :  "SUCCESS" 
                     } 
                   ] 
                 } ,
                 { 
                   "document" :  "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/d7e238f73608a860e00b752ef80e2941" ,
                   "uri" :  "https://cloud.google.com/blog/products/databases/cloud-spanner-gets-stronger-with-bigquery-federated-queries" ,
                   "title" :  "Cloud Spanner gets stronger with BigQuery-federated queries | Google Cloud Blog" ,
                   "snippetInfo" :  [ 
                     { 
                       "snippet" :  "As enterprises compete for market share, their need for real-time insights has given rise to increased demand for transactional \u003cb\u003edatabases\u003c/b\u003e to support \u003cb\u003edata\u003c/b\u003e ..." ,
                       "snippetStatus" :  "SUCCESS" 
                     } 
                   ] 
                 } ,
                 { 
                   "document" :  "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/e10a5a3c267dc61579e7c00fefe656eb" ,
                   "uri" :  "https://cloud.google.com/blog/topics/developers-practitioners/replicating-cloud-spanner-bigquery-scale" ,
                   "title" :  "Replicating from Cloud Spanner to BigQuery at scale | Google Cloud Blog" ,
                   "snippetInfo" :  [ 
                     { 
                       "snippet" :  "... \u003cb\u003eSpanner data\u003c/b\u003e into \u003cb\u003eBigQuery\u003c/b\u003e for analytics. In this post, you will learn how to efficiently use this feature to replicate large tables with high throughput ..." ,
                       "snippetStatus" :  "SUCCESS" 
                     } 
                   ] 
                 } ,
                 ...
                 { 
                   "document" :  "projects/123456/locations/global/collections/default_collection/dataStores/my-data-store/branches/0/documents/8100ad36e1cac149eb9fc180a41d8f25" ,
                   "uri" :  "https://cloud.google.com/blog/products/gcp/from-nosql-to-new-sql-how-spanner-became-a-global-mission-critical-database" ,
                   "title" :  "How Spanner became a global, mission-critical database | Google Cloud Blog" ,
                   "snippetInfo" :  [ 
                     { 
                       "snippet" :  "... SQL \u003cb\u003evs\u003c/b\u003e. NoSQL dichotomy may no longer be relevant."   The  \u 003cb\u 003eSpanner\u 003c/b\u 003e  SQL  query  processor,  while   recognizable  as  a  standard  implementation,  has  unique ...", 
                      " snippetStatus": " SUCCESS" 
                    } 
                  ] 
                } 
              ] 
            } 
          } 
        ] 
      } 
    ] 
  }, 
  " session": { 
    " name": " projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943", 
    " state": " IN_PROGRESS", 
    " userPseudoId": " test_user", 
    " turns": [ 
      { 
        " query": { 
          " queryId": " projects/123456/locations/global/questions/741830", 
          " text": " Compare  bigquery  with  spanner  database?" 
        }, 
        " answer": " projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943/answers/4861507376861383072" 
      } 
    ], 
    " startTime": " 2024 -09-13T18:47:10.465311Z", 
    " endTime": " 2024 -09-13T18:47:10.465311Z" 
  }, 
  " answerQueryToken": " NMwKDAjFkpK3BhDU24uZAhIkNjZlNDIyZWYtMDAwMC0yMjVmLWIxMmQtZjQwMzA0M2FkYmNj" 
}   
 Ulangi langkah 3 untuk setiap kueri baru dalam sesi.
 
  
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
 
Mendapatkan sesi dari penyimpanan data 
Perintah berikut menunjukkan cara memanggil metode get
  
  
  
  
  
    
  
  
  REST Untuk mendapatkan sesi dari penyimpanan data, lakukan hal berikut:
Jalankan perintah curl berikut:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /sessions/SESSION_ID "
 Ganti kode berikut:
  PROJECT_ID APP_ID SESSION_ID  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Menghapus sesi dari aplikasi 
Perintah berikut menunjukkan cara memanggil metode delete
Secara default, sesi yang sudah lebih dari 60 hari akan otomatis dihapus.
Namun, jika Anda ingin menghapus sesi tertentu—misalnya, jika sesi tersebut berisi konten sensitif, gunakan panggilan API ini untuk menghapusnya.
  
  
  
  
  
    
  
  
  REST Untuk menghapus sesi dari aplikasi, lakukan langkah-langkah berikut:
Jalankan perintah curl berikut:
curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /sessions/SESSION_ID "
 Ganti kode berikut:
  PROJECT_ID APP_ID SESSION_ID  
Contoh perintah dan hasil 
curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json"
"https://discoveryengine.googleapis.com/v1/projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943"
      
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Memperbarui sesi 
Ada berbagai alasan mengapa Anda mungkin ingin memperbarui sesi. Misalnya,
untuk melakukan salah satu hal berikut:
Menandai sesi sebagai selesai 
Menggabungkan pesan dari satu sesi ke sesi lainnya 
Mengubah ID pseudo pengguna 
 
Perintah berikut menunjukkan cara memanggil metode patch
  
  
  
  
  
    
  
  
  REST Untuk memperbarui sesi dari aplikasi, lakukan hal berikut:
Jalankan perintah curl berikut:
curl -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /sessions/SESSION_ID ?updateMask=state" \
  -d '{
        "state": "NEW_STATE "
      }'
 Ganti kode berikut:
  PROJECT_ID APP_ID SESSION_ID NEW_STATE IN_PROGRESS. 
Contoh perintah dan hasil 
curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json"
"https://discoveryengine.googleapis.com/v1/projects/123456/locations/global/collections/default_collection/engines/my-app/sessions/16002628354770206943?updateMask=state"
-d '{
"state": "IN_PROGRESS"
}'
     Contoh ini mengubah status sesi menjadi terbuka (sedang berlangsung). Ikuti pola yang sama untuk memperbarui userPseudoId.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Mencantumkan semua sesi 
Perintah berikut menunjukkan cara memanggil metode list
  
  
  
  
  
    
  
  
  REST Untuk mencantumkan sesi aplikasi, lakukan hal berikut:
Jalankan perintah curl berikut:
curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /sessions"
 Ganti kode berikut:
  PROJECT_ID APP_ID  
Contoh perintah dan hasil 
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json"
"https://discoveryengine.googleapis.com/v1/projects/123456/locations/global/collections/default_collection/engines/my-app/sessions"
     Respons berisi daftar sesi dan nextPageToken. Jika nextPageToken tidak ditampilkan, berarti tidak ada lagi sesi yang akan dicantumkan. Ukuran halaman default adalah 50.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Mencantumkan sesi untuk pengguna 
Perintah berikut menunjukkan cara memanggil metode list
  
  
  
  
  
    
  
  
  REST Untuk mencantumkan sesi yang terkait dengan pengguna atau pengunjung, lakukan hal berikut:
Jalankan perintah curl berikut:
curl -X GET \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /sessions?filter=userPseudoId=USER_PSEUDO_ID "
 Ganti kode berikut:
  PROJECT_ID APP_ID USER_PSEUDO_ID  
Contoh perintah dan hasil 
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json"
"https://discoveryengine.googleapis.com/v1/projects/123456/locations/global/collections/default_collection/engines/my-app/sessions?filter=userPseudoId=test_user"
     Dalam contoh ini, ada satu sesi yang terkait dengan test_user. Kueri dan jawaban dalam sesi tersebut akan dicantumkan.
 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
    
  
  
  
  
    
  
  
  
  
  
  
  
  
  
  
  
  
   
 
Mencantumkan sesi untuk pengguna dan status 
Perintah berikut menunjukkan cara memanggil metode list
  
  
  
  
  
    
  
  
  REST Untuk mencantumkan sesi pengguna yang terbuka atau tertutup dan terkait dengan pengguna atau pengunjung tertentu, lakukan hal berikut:
Jalankan perintah curl berikut:
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID /locations/global/collections/default_collection/engines/APP_ID /sessions?filter=userPseudoId=USER_PSEUDO_ID %20AND%20state=STATE "
 Ganti kode berikut:
  PROJECT_ID APP_ID USER_PSEUDO_ID STATE STATE_UNSPECIFIED (ditutup atau tidak diketahui) atau
  IN_PROGRESS (dibuka).
   
 Contoh perintah dan hasil 
 
 
curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)"
-H "Content-Type: application/json"
"https://discoveryengine.googleapis.com/v1/projects/123456/locations/global/collections/default_collection/engines/my-app/sessions?filter=userPseudoId=test_user%20AND%20state=IN_PROGRESS"