Melakukan penelusuran dengan kueri lanjutan

Halaman ini memperkenalkan penelusuran dengan tindak lanjut untuk Vertex AI Search dan menunjukkan cara menerapkannya menggunakan panggilan API.

Jika Anda ingin menambahkan penelusuran dengan tindak lanjut ke widget penelusuran, lihat Mengonfigurasi hasil untuk widget penelusuran.

Penelusuran dengan tindak lanjut berlaku untuk aplikasi penelusuran dengan data tidak terstruktur dan situs.

Tentang penelusuran dengan kueri lanjutan

Penelusuran dengan tindak lanjut didasarkan pada model AI generatif. Penelusuran dengan tindak lanjut berbeda dengan penelusuran data tidak terstruktur reguler karena penelusuran dengan tindak lanjut mempertimbangkan kueri sebelumnya dalam sesi penelusuran yang sama.

Penelusuran dengan kueri lanjutan mendukung hal berikut:

  • Pemrosesan kueri natural language: Memproses dan memahami input bahasa manusia, mengidentifikasi maksud di balik kueri, dan menampilkan hasil yang relevan.

  • Kesadaran konteks: Model ini memahami konteks interaksi sebelumnya dan memberikan jawaban yang sesuai dengan konteks.

  • Multigiliran: Memungkinkan pengguna mengajukan pertanyaan lanjutan dan menerima respons yang relevan.

Contoh penelusuran dengan kueri lanjutan

Berikut adalah contoh penelusuran dengan kueri lanjutan. Misalkan Anda ingin mengetahui tentang berlibur di Meksiko:

  • Anda: Kapan waktu terbaik dalam setahun untuk berlibur di Meksiko?

  • Penelusuran dengan tindak lanjut: Waktu terbaik untuk berlibur di Meksiko adalah selama musim kemarau, yang berlangsung dari November hingga April.

  • Anda: Berapa nilai tukar yang berlaku?

  • Penelusuran dengan pertanyaan lanjutan: 1 USD setara dengan sekitar 17,65 peso Meksiko.

  • Anda: Berapa suhu rata-rata pada bulan Desember?

  • Penelusuran dengan tindak lanjut: Suhu rata-rata bervariasi dari 70-78 °F. Rata-rata suhu di Cancun adalah ~ 77°F.

Dengan penelusuran reguler, pertanyaan Anda "Berapa nilai tukar"? tidak akan dapat dijawab karena penelusuran reguler tidak akan tahu bahwa Anda menginginkan nilai tukar Meksiko. Demikian pula, penelusuran reguler tidak akan mempertahankan konteks untuk memberikan suhu di Meksiko kepada Anda.

Tentang percakapan

Dalam penelusuran dengan tindak lanjut, percakapan terdiri dari kueri teks yang diberikan oleh pengguna dan respons yang diberikan oleh Vertex AI Search.

Pasangan kueri dan respons ini terkadang disebut sebagai pesan. Dalam contoh sebelumnya, pesan kedua terdiri dari "Berapa nilai tukarnya?" dan "1 USD sama dengan sekitar 17,65 peso Meksiko".

Percakapan disimpan di penyimpanan data yang sama tempat data tidak terstruktur disimpan. Di penyimpanan data, percakapan direpresentasikan oleh resource Conversation. Selain berisi pesan kueri dan respons, resource percakapan memiliki:

  • Nama unik (ID percakapan).

  • Status (sedang berlangsung atau selesai).

  • ID pseudo pengguna, yang merupakan ID pengunjung yang melacak pengguna. Nilai ini dapat ditetapkan secara terprogram.

  • Waktu mulai dan waktu berakhir.

Sebelum memulai

Pastikan Anda memenuhi prasyarat berikut. Persyaratan bervariasi, bergantung pada jenis aplikasi yang Anda miliki.

Menyimpan percakapan dan mendapatkan respons

Anda dapat menggunakan command line atau library klien untuk membuat respons penelusuran dan menyimpan percakapan penelusuran dengan tindak lanjut.

REST

Untuk menggunakan command line guna membuat percakapan dan menghasilkan respons dari input pengguna, ikuti langkah-langkah berikut:

  1. Tentukan penyimpanan data tempat Anda ingin menyimpan histori percakapan:

    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/dataStores/DATA_STORE_ID/conversations" \
    -d '{
      "user_pseudo_id": "USER_PSEUDO_ID"
    }'
    
    • PROJECT_ID: Nomor atau ID project Google Cloud project

    • DATA_STORE_ID: ID penyimpanan data yang terkait dengan aplikasi Anda.

    • USER_PSEUDO_ID: Ini adalah ID unik untuk melacak pengunjung penelusuran. Misalnya, Anda dapat menerapkan ini dengan cookie HTTP, yang mengidentifikasi pengunjung secara unik di satu perangkat.

    Klik untuk melihat contoh respons dari perintah POST.

    {
      "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687",
      "state": "IN_PROGRESS",
      "userPseudoId": "test_id",
      "startTime": "2023-08-15T20:08:12.094639Z"
    }
  2. Buat respons penelusuran dan tambahkan ke percakapan baru atau yang sudah ada di penyimpanan data 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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \
    -d '{
      "query": { "input": "FREE_TEXT"},
      "filter": "FILTER"
    }'
    
    • PROJECT_ID: Nomor atau ID project Google Cloud project

    • DATA_STORE_ID: ID penyimpanan data yang terkait dengan aplikasi Anda.

    • CONVERSATION_ID: ID unik untuk percakapan, misalnya, 123456. Untuk percakapan penelusuran dengan tindak lanjut, gunakan ID percakapan yang sama di setiap giliran.

    • FREE_TEXT: String teks bebas yang berisi pertanyaan pengguna—misalnya, what is bigquery?

    • FILTER: Kolom teks untuk memfilter penelusuran menggunakan ekspresi filter. Nilai defaultnya adalah string kosong. Cara Anda membuat filter bervariasi, bergantung pada apakah Anda memiliki data situs atau data tidak terstruktur dengan metadata. Untuk mengetahui informasi selengkapnya, lihat Memfilter penelusuran dengan tindak lanjut.

    Klik untuk melihat contoh respons dari perintah POST.

    {
    "reply": {
    "summary": {
      "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
    }
    },
    "conversation": {
    "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687",
    "state": "IN_PROGRESS",
    "userPseudoId": "test_id",
    "messages": [
      {
        "userInput": {
          "input": "what is bigquery?"
        }
      },
      {
        "reply": {
          "summary": {
            "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
          }
        }
      }
    ],
    "startTime": "2023-08-15T20:08:12.094639Z"
    },
    "searchResults": [
    {
      "id": "c86f19582746b56f71c9bb6929893835",
      "document": {
        "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/c86f19582746b56f71c9bb6929893835",
        "id": "c86f19582746b56f71c9bb6929893835",
        "derivedStructData": {
          "link": "gs://aquamuse-data-ucs-eval-dev/documents/94627ee0249dfdfda25b1b158c717bca.txt",
          "snippets": [
            {
              "snippet_status": "SUCCESS",
              "snippet": "For larger websites, talk to the IT team and/or utilize a big data solution such as Google \u003cb\u003eBigQuery\u003c/b\u003e to extract all URLs. It may also be necessary to ask the ..."
            }
          ],
          "extractive_answers": [
            {
              "content": "Alternatively, load the Server Log Files into Google BigQuery and use the Google BigQuery interface or the 360 Data Studio to analyze the data. To monitor the indexation numbers of the HTTP and the HTTPS version, keep an eye on all submitted XML Sitemaps."
            }
          ]
        }
      }
    },
    {
      "id": "774bd7ce2a3509ab4bbd1fc876f39dc2",
      "document": {
        "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/774bd7ce2a3509ab4bbd1fc876f39dc2",
        "id": "774bd7ce2a3509ab4bbd1fc876f39dc2",
        "derivedStructData": {
          "snippets": [
            {
              "snippet": "No snippet is available for this page.",
              "snippet_status": "NO_SNIPPET_AVAILABLE"
            }
          ],
          "extractive_answers": [
            {
              "content": "This consists of a collection of virtual tables. A virtual table exists for every queryable object type (content type if you prefer) in the repository. Each row in these virtual tables correspond to an instance of the corresponding object type (or of one of its subtypes)."
            }
          ],
          "link": "gs://aquamuse-data-ucs-eval-dev/documents/28841ef8590a105e9415f1390648a811.txt"
        }
      }
    },
    {
      "id": "3e1d306e49aefd9e23f2d5f7a66e6c76",
      "document": {
        "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/3e1d306e49aefd9e23f2d5f7a66e6c76",
        "id": "3e1d306e49aefd9e23f2d5f7a66e6c76",
        "derivedStructData": {
          "snippets": [
            {
              "snippet": "No snippet is available for this page.",
              "snippet_status": "NO_SNIPPET_AVAILABLE"
            }
          ],
          "extractive_answers": [
            {
              "content": "Other logo switches are based on search terms. For instance, if the term "ASCII art" is searched, an ASCII art version of the Google logo will appear next to the search box."
            }
          ],
          "link": "gs://aquamuse-data-ucs-eval-dev/documents/98008df3eef5d3ee1661c52f23189190.txt"
        }
      }
    },
    {
      "id": "cf94e24aacd47cd2c2f5effcbdeda832",
      "document": {
        "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/cf94e24aacd47cd2c2f5effcbdeda832",
        "id": "cf94e24aacd47cd2c2f5effcbdeda832",
        "derivedStructData": {
          "extractive_answers": [
            {
              "content": "The company is listed on the NASDAQ stock exchange under the ticker symbols GOOGL and GOOG, and on the Frankfurt Stock Exchange under the ticker symbol GGQ1. These ticker symbols now refer to Alphabet Inc., Google's holding company, since the fourth quarter of 2015."
            }
          ],
          "snippets": [
            {
              "snippet": "No snippet is available for this page.",
              "snippet_status": "NO_SNIPPET_AVAILABLE"
            }
          ],
          "link": "gs://aquamuse-data-ucs-eval-dev/documents/d80204083ef1096799fa4b7257548b33.txt"
        }
      }
    },
    {
      "id": "05bc6497a4e7e6ca36b2e495b354b764",
      "document": {
        "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/branches/0/documents/05bc6497a4e7e6ca36b2e495b354b764",
        "id": "05bc6497a4e7e6ca36b2e495b354b764",
        "derivedStructData": {
          "extractive_answers": [
            {
              "content": "SQL injection countermeasures are designed to utilize secure programming methods. By changing the variables used by the application code, weaknesses in applications can be greatly minimized. This report will detail how to perform a SQL injection and explore the best countermeasures to prevent the attack."
            }
          ],
          "link": "gs://aquamuse-data-ucs-eval-dev/documents/7cba75d646f5774a21d96801bec68bb3.txt",
          "snippets": [
            {
              "snippet_status": "NO_SNIPPET_AVAILABLE",
              "snippet": "No snippet is available for this page."
            }
          ]
        }
      }
    }
    ]
    }
  3. Ulangi langkah 2 untuk setiap pertanyaan baru dalam percakapan.

Python

Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Aplikasi AI.

Untuk melakukan autentikasi ke Aplikasi AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

from typing import List

from google.api_core.client_options import ClientOptions
from google.cloud import discoveryengine_v1 as discoveryengine

# TODO(developer): Uncomment these variables before running the sample.
# project_id = "YOUR_PROJECT_ID"
# location = "YOUR_LOCATION"                    # Values: "global", "us", "eu"
# data_store_id = "YOUR_DATA_STORE_ID"
# search_queries = ["YOUR_FIRST_SEARCH_QUERY", "YOUR_SECOND_SEARCH_QUERY"]


def multi_turn_search_sample(
    project_id: str,
    location: str,
    data_store_id: str,
    search_queries: List[str],
) -> List[discoveryengine.ConverseConversationResponse]:
    #  For more information, refer to:
    # https://cloud.google.com/generative-ai-app-builder/docs/locations#specify_a_multi-region_for_your_data_store
    client_options = (
        ClientOptions(api_endpoint=f"{location}-discoveryengine.googleapis.com")
        if location != "global"
        else None
    )

    # Create a client
    client = discoveryengine.ConversationalSearchServiceClient(
        client_options=client_options
    )

    # Initialize Multi-Turn Session
    conversation = client.create_conversation(
        # The full resource name of the data store
        # e.g. projects/{project_id}/locations/{location}/dataStores/{data_store_id}
        parent=client.data_store_path(
            project=project_id, location=location, data_store=data_store_id
        ),
        conversation=discoveryengine.Conversation(),
    )


    for search_query in search_queries:
        # Add new message to session
        request = discoveryengine.ConverseConversationRequest(
            name=conversation.name,
            query=discoveryengine.TextInput(input=search_query),
            serving_config=client.serving_config_path(
                project=project_id,
                location=location,
                data_store=data_store_id,
                serving_config="default_config",
            ),
            # Options for the returned summary
            summary_spec=discoveryengine.SearchRequest.ContentSearchSpec.SummarySpec(
                # Number of results to include in summary
                summary_result_count=3,
                include_citations=True,
            ),
        )
        response = client.converse_conversation(request)

        print(f"Reply: {response.reply.summary.summary_text}\n")

        for i, result in enumerate(response.search_results, 1):
            result_data = result.document.derived_struct_data
            print(f"[{i}]")
            print(f"Link: {result_data['link']}")
            print(f"First Snippet: {result_data['snippets'][0]['snippet']}")
            print(
                "First Extractive Answer: \n"
                f"\tPage: {result_data['extractive_answers'][0]['pageNumber']}\n"
                f"\tContent: {result_data['extractive_answers'][0]['content']}\n\n"
            )
        print("\n\n")

Memfilter penelusuran dengan kueri lanjutan

Saat membuat kueri dengan penelusuran dengan tindak lanjut, Anda dapat menyertakan kolom filter untuk membatasi kumpulan dokumen yang digunakan untuk menghasilkan respons. Anda membuat filter menggunakan ekspresi filter. Ekspresi filter yang Anda gunakan akan bervariasi, bergantung pada apakah Anda memiliki data situs atau data tidak terstruktur dengan metadata.

Ekspresi filter untuk data situs

Jika memiliki penyimpanan data dengan data situs, Anda dapat memfilter penelusuran dengan kueri lanjutan menggunakan ekspresi filter di Ekspresi filter dengan pengindeksan situs lanjutan. Setelah Anda menyusun ekspresi filter, gunakan untuk nilai kolom filter di langkah 2 Menyimpan percakapan dan mendapatkan respons.

Ekspresi filter untuk data tidak terstruktur dengan metadata

Jika memiliki penyimpanan data dengan data tidak terstruktur yang berisi metadata, Anda dapat memfilter penelusuran dengan kueri lanjutan sehingga menampilkan dokumen berdasarkan kolom metadata yang ada dalam dokumen. Lihat Memfilter penelusuran untuk data terstruktur atau tidak terstruktur untuk memahami cara menggunakan metadata guna memfilter penelusuran biasa (tanpa tindak lanjut). Anda dapat menggunakan prinsip yang sama ini untuk menggunakan metadata guna memfilter penelusuran dengan tindak lanjut. Setelah membuat ekspresi filter, gunakan ekspresi tersebut untuk nilai kolom filter di langkah 2 Menyimpan percakapan dan mendapatkan respons.

Mengonfigurasi ringkasan

Pesan respons dari penelusuran dengan tindak lanjut adalah ringkasan yang dihasilkan dan ditampilkan dalam summaryText. Ada berbagai cara untuk mengonfigurasi ringkasan yang dihasilkan. Hal ini dijelaskan di bagian berikut:

Mendapatkan kutipan dengan hasil penelusuran

Kutipan, jika ditentukan, adalah angka yang ditempatkan sebaris dalam ringkasan penelusuran. Angka-angka ini menunjukkan dari hasil penelusuran mana kalimat tertentu dalam ringkasan diambil.

Untuk mendapatkan kutipan:

  • Ikuti prosedur Menyimpan percakapan dan mendapatkan respons chat di atas, kecuali pada langkah 2, jalankan perintah ini yang menyertakan kolom summarySpec yang menetapkan includeCitations ke benar (true).

    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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \
    -d '{
      "query": { "input": "FREE_TEXT"},
      "summarySpec": { "include_citations": true }
    }'
    

    Klik untuk melihat bagian respons dari contoh perintah.

    {
    "reply": {
    "summary": {
    }
    "reply": {
    "summary": {
      "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly [1]. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data [2, 3].",
      "safetyAttributes": {
        "categories": [
          "Finance",
          "Legal"
        ]

Nomor kutipan disertakan dalam teks ringkasan. Nomor kutipan merujuk pada hasil penelusuran yang ditampilkan dan diindeks 1. Misalnya, [1] berarti bahwa kalimat tersebut diatribusikan ke hasil penelusuran pertama. [2, 3] berarti bahwa kalimat tersebut diatribusikan ke hasil penelusuran kedua dan ketiga.

Mengabaikan kueri yang bertentangan

Kueri yang bersifat melawan mencakup komentar negatif atau dirancang untuk menghasilkan output yang tidak aman dan melanggar kebijakan. Anda dapat menentukan bahwa tidak ada ringkasan penelusuran yang akan ditampilkan untuk kueri yang bersifat merugikan. Jika kueri yang merugikan diabaikan, properti summaryText berisi teks boilerplate yang menunjukkan bahwa tidak ada ringkasan penelusuran yang ditampilkan. Dokumen penelusuran ditampilkan untuk kueri yang bertentangan meskipun ringkasan penelusuran tidak ditampilkan.

Untuk menentukan bahwa tidak ada ringkasan penelusuran yang harus ditampilkan untuk kueri yang bertentangan:

  • Ikuti prosedur Menyimpan percakapan dan mendapatkan respons chat di atas, kecuali pada langkah 2, jalankan perintah ini yang menyertakan kolom summarySpec yang menetapkan ignoreAdversarialQuery ke benar (true).

    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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \
    -d '{
      "query": { "input": "FREE_TEXT"},
      "summarySpec": { "ignoreAdversarialQuery": true }
    }'
    

    Klik untuk bagian respons dari kueri adversarial.

    "reply": {
    "summary": {
      "summaryText": "A summary could not be generated for your search query. Here are some search results.",
      "summarySkippedReasons": [
        "ADVERSARIAL_QUERY_IGNORED"
      ]

Mengabaikan kueri yang tidak mencari ringkasan

Kueri yang tidak mencari ringkasan akan menampilkan hasil yang tidak sesuai untuk diringkas. Misalnya, "mengapa langit berwarna biru" dan "Siapa pemain sepak bola terbaik di dunia?" adalah kueri yang mencari ringkasan, tetapi "bandara SFO" dan "piala dunia 2026" bukan. Kueri tersebut kemungkinan besar adalah kueri navigasi. Anda dapat menentukan bahwa tidak ada ringkasan penelusuran yang harus ditampilkan untuk kueri yang tidak mencari ringkasan. Dokumen penelusuran ditampilkan untuk kueri yang tidak mencari ringkasan meskipun ringkasan penelusuran tidak ditampilkan.

Untuk menentukan bahwa tidak ada ringkasan penelusuran yang harus ditampilkan untuk kueri yang tidak mencari ringkasan:

  • Ikuti prosedur Menyimpan percakapan dan mendapatkan respons chat di atas, kecuali pada langkah 2, jalankan perintah ini yang menyertakan kolom summarySpec yang menetapkan ignoreNonSummarySeekingQuery ke benar (true).

    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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \
    -d '{
      "query": { "input": "FREE_TEXT"},
      "summarySpec": { "ignore_non_summary_seeking_query": true }
    }'
    

    Klik untuk bagian respons dari kueri adversarial.

     "reply": {
    "summary": {
      "summaryText": "A summary could not be generated for your search query. Here are some search results.",
      "summarySkippedReasons": [
        "NON_SUMMARY_SEEKING_QUERY_IGNORED"
      ]

Menetapkan jumlah hasil yang akan digunakan dalam ringkasan

Anda dapat menentukan jumlah hasil yang akan digunakan dalam membuat ringkasan. Secara default, jika kolom summaryResultCount tidak ditetapkan, semua hasil yang ditampilkan digunakan untuk membuat ringkasan.

Untuk menyetel jumlah hasil teratas yang akan digunakan untuk ringkasan:

  • Ikuti prosedur Menyimpan percakapan dan mendapatkan respons chat di atas, kecuali pada langkah 2, jalankan perintah ini yang mencakup kolom summarySpec yang menetapkan summaryResultCount.

    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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \
    -d '{
      "query": { "input": "FREE_TEXT"},
      "summarySpec": { "summary_result_count": NUMBER_OF_RESULTS }
    }'
    

    NUMBER_OF_RESULTS: Jumlah hasil teratas untuk membuat ringkasan penelusuran. Jika jumlah hasil yang ditampilkan kurang dari summaryResultCount, ringkasan dibuat dari semua hasil. Nilai maksimumnya adalah 5.

Mendapatkan ringkasan yang disesuaikan

Anda bisa mendapatkan ringkasan yang disesuaikan dengan memberikan petunjuk bahasa alami di kolom modelPromptSpec.preamble saat meminta ringkasan.

Anda dapat meminta penyesuaian seperti panjang dan tingkat detail, gaya output (seperti "sederhana"), bahasa output, fokus jawaban, dan format (seperti tabel, poin-poin, dan XML).

Misalnya, untuk kueri "Apa manfaat BigQuery?", Anda dapat memasukkan petunjuk penyesuaian seperti contoh berikut:

  • Contoh petunjuk: "please show the answer format in an ordered list"

    Contoh jawaban:

    The benefits of BigQuery are:
    
    1. Increased business productivity
    2. IT staff productivity
    3. Reduced infrastructure costs
    4. Loading and exporting data are free
    
  • Contoh petunjuk: give a very detailed answer

    Contoh jawaban:

    BigQuery is a serverless, highly scalable, and cost-effective cloud data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that takes care of provisioning, scaling, and managing the underlying infrastructure, so you can focus on analyzing your data. BigQuery is also integrated with other Google Cloud services, such as Google Kubernetes Engine, Cloud Data Fusion, and Cloud Dataproc, making it easy to build and deploy data pipelines.
    
    Here are some of the benefits of using BigQuery:
    
    * **Fast and scalable:** BigQuery can process petabytes of data very quickly, and it can scale to handle even the most demanding workloads. * **Cost-effective:** BigQuery is a very cost-effective way to store and analyze data. You only pay for the data that you use, and there are no upfront costs or commitments. * **Secure:** BigQuery is a secure platform that meets the needs of even the most security-conscious organizations. * **Easy to use:** BigQuery is easy to use, even for non-technical users. It has a simple and intuitive user interface, and it supports a variety of data sources. * **Integrated with other Google Cloud services:** BigQuery is integrated with other Google Cloud services, making it easy to build and deploy data pipelines.
    
    If you are looking for a fast, scalable, and cost-effective way to analyze your data, then BigQuery is a great option.
    

Untuk mendapatkan ringkasan yang disesuaikan:

  • Ikuti prosedur Menyimpan percakapan dan mendapatkan respons chat sebelumnya, kecuali pada langkah 2, jalankan perintah ini yang menyertakan kolom summarySpec yang menentukan petunjuk penyesuaian di modelPromptSpec.preamble.

      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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \
      -d '{
        "query": { "input": "FREE_TEXT"},
        "summarySpec": {
          "modelPromptSpec": {
            "preamble": "CUSTOMIZATION_INSTRUCTIONS"
          }
        }
      }'
    
    • CUSTOMIZATION_INSTRUCTIONS: Petunjuk untuk penyesuaian, sebagai string.

SafeSearch dapat digunakan untuk memfilter konten vulgar, tidak aman, dan melanggar kebijakan dari respons ringkasan. Untuk mengetahui informasi selengkapnya tentang SafeSearch, lihat Setelan keamanan untuk Vertex AI Search.

Untuk menerapkan penelusuran aman ke respons chat:

  • Ikuti prosedur Menyimpan percakapan dan mendapatkan respons chat sebelumnya, kecuali pada langkah 2, di bagian kueri, tentukan safe_search.

    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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID:converse" \
    -d '{
      "query": { "input": "FREE_TEXT"},
      "safe_search": true
    }'
    

Melihat dan mengubah percakapan yang tersimpan

Anda dapat menggunakan command line untuk mendapatkan, menghapus, memperbarui, dan mencantumkan percakapan tersimpan.

Mendapatkan percakapan dari penyimpanan data

Untuk mendapatkan semua detail tentang percakapan tertentu dari penyimpanan data:

  • 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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID"
    
    • PROJECT_ID: Nomor atau ID project Google Cloud project

    • DATA_STORE_ID:ID penyimpanan data yang terkait dengan aplikasi Anda.

    • CONVERSATION_ID: ID percakapan

    Klik untuk melihat contoh respons dari perintah GET.

    {
    "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/2040473575290303058",
    "state": "IN_PROGRESS",
    "userPseudoId": "2040473575290303058",
    "messages": [
    {
      "userInput": {
        "input": "what is bigquery?"
      }
    },
    {
      "reply": {
        "summary": {
          "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
        }
      }
    }
    ],
    "startTime": "2023-08-15T20:11:24.046735Z"
    }

Menghapus percakapan dari penyimpanan data

Secara default, percakapan yang terjadi lebih dari 60 hari yang lalu akan otomatis dihapus. Namun, jika Anda ingin menghapus percakapan tertentu—misalnya, jika percakapan tersebut secara tidak sengaja berisi konten sensitif, gunakan panggilan API ini untuk menghapusnya.

Untuk menghapus percakapan dari penyimpanan data:

  • 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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID"
    
    • PROJECT_ID: Nomor atau ID project Google Cloud project

    • DATA_STORE_ID: ID penyimpanan data yang terkait dengan aplikasi Anda.

    • CONVERSATION_ID: ID percakapan

    Respons dari perintah DELETE akan seperti ini:

    {}
    

Memperbarui percakapan

Ada berbagai alasan mengapa Anda mungkin ingin memperbarui percakapan. Misalnya, untuk melakukan salah satu hal berikut:

  • Menandai percakapan sebagai selesai

  • Menggabungkan pesan dari satu percakapan ke percakapan lain

  • Ubah user_pseudo_id

Untuk memperbarui state dalam percakapan:

  • 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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID?updateMask=state" \
    -d '{
      "state": "NEW_STATE"
    }'
    
    • PROJECT_ID: Nomor atau ID project Google Cloud project

    • DATA_STORE_ID: ID penyimpanan data yang terkait dengan aplikasi Anda.

    • CONVERSATION_ID: ID percakapan yang ingin Anda perbarui

    • NEW_STATE: Nilai baru untuk status—misalnya, COMPLETED

    Klik untuk melihat contoh respons dari perintah PATCH.

    {
    "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687",
    "state": "COMPLETED",
    "userPseudoId": "test_id1",
    "messages": [
    {
      "userInput": {
        "input": "what is bigquery?"
      }
    },
    {
      "reply": {
        "summary": {
          "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
        }
      }
    }
    ],
    "startTime": "2023-08-15T20:08:12.094639Z"
    }

Untuk memperbarui user_pseudo_id dalam percakapan:

  • 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/dataStores/DATA_STORE_ID/conversations/CONVERSATION_ID?updateMask=user_pseudo_id" \
    -d '{
      "user_pseudo_id": "NEW_USER_PSEUDO_ID"
    }'
    
    • PROJECT_ID: Nomor atau ID project Google Cloud project

    • DATA_STORE_ID: ID penyimpanan data yang terkait dengan aplikasi Anda.

    • CONVERSATION_ID: ID percakapan yang ingin Anda perbarui

    • NEW_USER_PSEUDO_ID: Nilai baru untuk ID pseudo pengguna

    Klik untuk melihat contoh respons dari perintah PATCH.

    {
    "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687",
    "state": "IN_PROGRESS",
    "userPseudoId": "test_id1",
    "messages": [
    {
      "userInput": {
        "input": "what is bigquery?"
      }
    },
    {
      "reply": {
        "summary": {
          "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
        }
      }
    }
    ],
    "startTime": "2023-08-15T20:08:12.094639Z"
    }

Perintah sebelumnya menunjukkan cara mengubah user_pseudo_id. Namun, Anda dapat memperbarui kolom lain dalam percakapan dengan mengganti user_pseudo_id dengan kolom lain dalam Conversation resource.

Mencantumkan semua percakapan

Untuk mencantumkan semua percakapan di penyimpanan data:

  • 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/dataStores/DATA_STORE_ID/conversations"
    
    • PROJECT_ID: Nomor atau ID project Google Cloud project

    • DATA_STORE_ID: ID penyimpanan data yang terkait dengan aplikasi Anda.

    Klik untuk melihat contoh respons dari perintah GET.

    {
    "conversations": [
    {
      "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687",
      "state": "IN_PROGRESS",
      "userPseudoId": "test_id",
      "messages": [
        {
          "userInput": {
            "input": "what is bigquery?"
          }
        },
        {
          "reply": {
            "summary": {
              "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
            }
          }
        }
      ],
      "startTime": "2023-08-15T20:08:12.094639Z"
    },
    {
      "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/2040473575290303058",
      "state": "IN_PROGRESS",
      "userPseudoId": "2040473575290303058",
      "messages": [
        {
          "userInput": {
            "input": "what is bigquery?"
          }
        },
        {
          "reply": {
            "summary": {
              "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
            }
          }
        }
      ]
    }
    ]
    }

Respons berisi daftar percakapan dan next_page_token. Jika tidak ada next_page_token yang ditampilkan, tidak ada lagi percakapan yang akan dicantumkan.

Ukuran halaman default adalah 50.

Mencantumkan percakapan menurut filter

Daripada mencantumkan semua percakapan di penyimpanan data, Anda mungkin ingin mencantumkan semua percakapan yang terbuka atau semua percakapan yang terkait dengan pengguna tertentu.

Misalnya, Anda dapat menampilkan penelusuran yang ditutup kepada pengguna dengan opsi untuk membukanya kembali.

Untuk melakukannya, Anda mencantumkan percakapan yang cocok dengan filter tertentu: user_pseudo_id atau state (IN_PROGRESS atau COMPLETED).

Mencantumkan percakapan untuk pengguna

Untuk mencantumkan percakapan yang terkait dengan pengguna atau pengunjung:

  • 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/dataStores/DATA_STORE_ID/conversations?filter=user_pseudo_id=USER_PSEUDO_ID"
    
    • PROJECT_ID: Nomor atau ID project Google Cloud project

    • DATA_STORE_ID: ID penyimpanan data yang terkait dengan aplikasi Anda.

    • USER_PSEUDO_ID: ID semu pengguna yang percakapannya ingin Anda daftarkan.

    Respons dari perintah GET akan terlihat seperti ini:

    Klik untuk melihat contoh respons dari perintah GET.

    {
    "conversations": [
    {
      "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687",
      "state": "IN_PROGRESS",
      "userPseudoId": "test_id",
      "messages": [
        {
          "userInput": {
            "input": "what is bigquery?"
          }
        },
        {
          "reply": {
            "summary": {
              "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
            }
          }
        }
      ],
      "startTime": "2023-08-15T20:08:12.094639Z"
    }
    ]
    }

Mencantumkan percakapan untuk pengguna dan status

Untuk mencantumkan percakapan dalam status tertentu (terbuka atau tertutup) dan yang terkait dengan pengguna atau pengunjung:

  • 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/dataStores/DATA_STORE_ID/conversations?filter=user_pseudo_id=USER_PSEUDO_ID%20AND%20state=STATE"
    
    • PROJECT_ID: Nomor atau ID project Google Cloud project

    • DATA_STORE_ID: ID penyimpanan data yang terkait dengan aplikasi Anda.

    • USER_PSEUDO_ID: ID semu pengguna yang percakapannya ingin Anda daftarkan.

    • STATE: Apakah percakapan terbuka atau tertutup (IN_PROGRESS atau COMPLETED)

    Respons dari perintah GET akan terlihat seperti ini:

    Klik untuk melihat contoh respons dari perintah GET.

    {
    "conversations": [
    {
      "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/conversations/11078281986791420687",
      "state": "IN_PROGRESS",
      "userPseudoId": "test_id",
      "messages": [
        {
          "userInput": {
            "input": "what is bigquery?"
          }
        },
        {
          "reply": {
            "summary": {
              "summaryText": "BigQuery is a cloud-based data warehouse that enables businesses to analyze all their data very quickly. It is a fully managed service that provides a simple and cost-effective way to store and analyze large amounts of data."
            }
          }
        }
      ],
      "startTime": "2023-08-15T20:08:12.094639Z"
    }
    ]
    }

Untuk informasi umum tentang sintaksis pemfilteran, lihat Pemfilteran AIP-160.

Pertanyaan terkait adalah fitur Pratinjau dengan daftar yang diizinkan yang dapat menampilkan pertanyaan terkait selain hasil penelusuran.

Misalnya, saat Anda bertanya "Kapan waktu terbaik dalam setahun untuk berlibur di Meksiko?", selain menjawab pertanyaan Anda, penelusuran akan 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?".

Jika Anda ingin aplikasi penelusuran Anda menampilkan pertanyaan terkait, hubungi tim akun Google Anda dan beri tahu mereka project dan aplikasi mana yang Anda inginkan agar pertanyaan terkait diaktifkan. Jika Anda tidak menggunakan konfigurasi penayangan default, Anda juga perlu memberikan nama konfigurasi penayangan.

Setelah fitur pertanyaan terkait diaktifkan, pertanyaan akan ditampilkan sebagai string di ConverseConversationResponse.

Informasi selengkapnya

  • Untuk mengetahui informasi selengkapnya tentang kolom summaryResultCount, includeCitations, ignoreAdversarialQuery, ignoreNonSummarySeekingQuery, lihat SummarySpec di dokumentasi AI Applications API.

  • Untuk contoh lainnya tentang cara mendapatkan ringkasan penelusuran, lihat Mendapatkan ringkasan.