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.

Penelusuran dengan tindak lanjut tidak berlaku untuk aplikasi Agen Vertex AI. Aplikasi Agen Vertex AI menggunakan agen yang dapat melakukan percakapan tentang konten dengan pengguna akhir Anda. Untuk mengetahui informasi selengkapnya tentang Agen Vertex AI, lihat Pengantar Agen Vertex AI.

Tentang penelusuran dengan kueri lanjutan

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

Penelusuran dengan kueri lanjutan mendukung hal berikut:

  • Pemrosesan kueri bahasa alami: Pemrosesan ini memproses dan memahami input bahasa manusia, mengidentifikasi intent di balik kueri, dan menampilkan hasil yang relevan.

  • Kesadaran konteks: Fitur ini memahami konteks interaksi sebelumnya dan memberikan jawaban yang kontekstual.

  • Multi-giliran: Fitur ini 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 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 tukarnya?

  • Penelusuran dengan tindak lanjut: 1 USD sama dengan sekitar 17,65 peso Meksiko.

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

  • Penelusuran dengan tindak lanjut: Suhu rata-rata bervariasi dari 21-26°C. Rata-rata suhu di Cancun adalah ~ 25°C.

Dengan penelusuran reguler, pertanyaan Anda "Berapa nilai tukarnya"? 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 untuk Meksiko.

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 dengan tempat data tidak terstruktur disimpan. Di penyimpanan data, percakapan direpresentasikan oleh Resource percakapan. 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 project Google Cloud Anda

    • 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 menerapkannya 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 project Google Cloud Anda

    • 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 Vertex AI Agent Builder.

Untuk melakukan autentikasi ke Vertex AI Agent Builder, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca 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 tempat respons berasal. Anda membuat filter menggunakan ekspresi filter. Ekspresi filter yang Anda gunakan bervariasi, bergantung pada apakah Anda memiliki data situs atau data tidak terstruktur dengan metadata.

Memfilter ekspresi untuk data situs

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

Memfilter ekspresi untuk data tidak terstruktur dengan metadata

Jika memiliki penyimpanan data dengan data tidak terstruktur dengan metadata, Anda dapat memfilter penelusuran dengan kueri tindak lanjut sehingga menampilkan dokumen berdasarkan kolom metadata yang dimuat 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 Anda membuat ekspresi filter, gunakan untuk nilai kolom filter di langkah 2 Menyimpan percakapan dan mendapatkan respons.

Mengonfigurasi ringkasan

Pesan respons dari penelusuran dengan tindak lanjut adalah ringkasan yang dibuat dan ditampilkan di 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 secara inline dalam ringkasan penelusuran. Angka ini menunjukkan dari hasil penelusuran mana kalimat tertentu dalam ringkasan diambil.

Untuk mendapatkan kutipan:

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

    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 mengacu pada hasil penelusuran yang ditampilkan dan diindeks 1. Misalnya, [1] berarti kalimat diatribusikan ke hasil penelusuran pertama. [2, 3] berarti kalimat diatribusikan ke hasil penelusuran kedua dan ketiga.

Mengabaikan kueri yang bersifat permusuhan

Kueri adversarial mencakup komentar negatif atau dirancang untuk menghasilkan output yang tidak aman dan melanggar kebijakan. Anda dapat menentukan bahwa tidak ada ringkasan penelusuran yang harus ditampilkan untuk kueri yang bersifat menyerang. Saat kueri adversarial diabaikan, properti summaryText berisi teks boilerplate yang menunjukkan bahwa tidak ada ringkasan penelusuran yang ditampilkan. Dokumen penelusuran ditampilkan untuk kueri yang bersifat permusuhan meskipun ringkasan penelusuran tidak ditampilkan.

Untuk menentukan bahwa tidak ada ringkasan penelusuran yang akan ditampilkan untuk kueri yang bersifat menyerang:

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

    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 melihat 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 penelusuran non-ringkasan

Kueri penelusuran non-ringkasan menampilkan hasil yang tidak cocok untuk ringkasan. Misalnya, "why is the sky blue" dan "Who is the best soccer player in the world?" adalah kueri yang mencari ringkasan, tetapi "SFO airport" dan "world cup 2026" bukan. Kueri tersebut kemungkinan besar adalah kueri navigasi. Anda dapat menentukan bahwa tidak ada ringkasan penelusuran yang akan ditampilkan untuk kueri penelusuran non-ringkasan. Dokumen penelusuran ditampilkan untuk kueri penelusuran non-ringkasan meskipun ringkasan penelusuran tidak ditampilkan.

Untuk menentukan bahwa tidak ada ringkasan penelusuran yang akan ditampilkan untuk kueri penelusuran non-ringkasan:

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

    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 melihat 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 akan digunakan untuk membuat ringkasan.

Untuk menetapkan jumlah hasil teratas yang akan digunakan untuk ringkasan:

  • Ikuti prosedur Menyimpan percakapan dan mendapatkan respons chat sebelumnya, kecuali pada langkah 2, jalankan perintah ini yang menyertakan 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 yang akan digunakan untuk membuat ringkasan penelusuran. Jika jumlah hasil yang ditampilkan kurang dari summaryResultCount, ringkasan akan dibuat dari semua hasil. Nilai maksimumnya adalah 5.

Mendapatkan ringkasan yang disesuaikan

Anda bisa mendapatkan ringkasan yang disesuaikan dengan memberikan petunjuk dalam 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, butir, 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 output yang 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 yang disimpan.

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 project Google Cloud Anda

    • 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 lebih lama dari 60 hari yang lalu akan otomatis dihapus. Namun, jika Anda ingin menghapus percakapan tertentu—misalnya, jika percakapan tersebut 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 project Google Cloud Anda

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

    • CONVERSATION_ID: ID percakapan

    Respons dari perintah DELETE akan terlihat 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 lainnya

  • Mengubah 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 project Google Cloud Anda

    • 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 project Google Cloud Anda

    • 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 di resource Percakapan.

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 project Google Cloud Anda

    • 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 dapat mencantumkan semua percakapan terbuka atau semua percakapan yang terkait dengan pengguna tertentu.

Misalnya, Anda dapat menampilkan penelusuran yang ditutup kepada pengguna dengan opsi untuk membuka kembali salah satunya.

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 project Google Cloud Anda

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

    • USER_PSEUDO_ID: ID pseudo pengguna yang percakapannya ingin Anda cantumkan.

    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 project Google Cloud Anda

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

    • USER_PSEUDO_ID: ID pseudo pengguna yang percakapannya ingin Anda cantumkan.

    • 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 Pratinjau dengan fitur daftar yang diizinkan yang dapat menampilkan pertanyaan terkait selain hasil penelusuran.

Misalnya, saat Anda bertanya "Kapan waktu terbaik 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 menampilkan pertanyaan terkait, hubungi tim akun Google Anda dan beri tahu mereka project dan aplikasi mana yang ingin Anda aktifkan untuk pertanyaan terkait. Jika tidak menggunakan konfigurasi penayangan default, Anda juga harus memberikan nama konfigurasi penayangan.

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

Informasi selengkapnya

  • Untuk informasi selengkapnya tentang kolom summaryResultCount, includeCitations, ignoreAdversarialQuery, ignoreNonSummarySeekingQuery, lihat SummarySpec dalam dokumentasi Vertex AI Agent Builder API.

  • Untuk contoh lain mendapatkan ringkasan penelusuran, lihat Mendapatkan ringkasan.