Mit weiterführenden Fragen suchen

Auf dieser Seite wird die Suche mit Nachfragen für die Vertex AI Search vorgestellt und gezeigt, wie Sie sie mit API-Aufrufen implementieren.

Wenn Sie dem Such-Widget eine Suche mit Folgefragen hinzufügen möchten, lesen Sie den Hilfeartikel Suchergebnisse für das Such-Widget konfigurieren.

Die Suche mit Nachfragen gilt für Such-Apps mit unstrukturierten Daten und Websites.

Die Suche mit Nachfragen gilt nicht für Vertex AI Agents-Apps. Vertex AI-Kundenservicemitarbeiter-Apps verwenden einen Kundenservicemitarbeiter, der Unterhaltungen über die Inhalte mit Ihren Endnutzern führen kann. Weitere Informationen zu Vertex AI-Agenten finden Sie unter Einführung in Vertex AI-Agenten.

Suche mit weiterführenden Fragen

Die Suche mit Nachfragen basiert auf generativen KI-Modellen. Die Suche mit Folgefragen unterscheidet sich von der regulären Suche nach unstrukturierten Daten, da bei der Suche mit Folgefragen vorherige Suchanfragen in derselben Suchsitzung berücksichtigt werden.

Die Suche mit weiterführenden Fragen unterstützt Folgendes:

  • Abfrageverarbeitung in natürlicher Sprache: Hier werden Eingaben in natürlicher Sprache verarbeitet und verstanden, die Absicht hinter einer Suchanfrage ermittelt und relevante Ergebnisse zurückgegeben.

  • Kontextsensitivität: Sie versteht den Kontext früherer Interaktionen und liefert kontextbezogene Antworten.

  • Mehrere Antworten:Nutzer können Folgefragen stellen und relevante Antworten erhalten.

Beispiel für eine Suche mit weiterführenden Fragen

Im folgenden Beispiel wird eine Suche mit weiterführenden Fragen veranschaulicht. Angenommen, Sie möchten mehr über einen Urlaub in Mexiko erfahren:

  • Sie:Wann ist die beste Reisezeit für Mexiko?

  • Suchanfragen mit Nachfragen: Die beste Reisezeit für Mexiko ist die Trockenzeit von November bis April.

  • Sie:Wie lautet der Wechselkurs?

  • Suche mit Folgefragen:1 $ entspricht ungefähr 17,65 mexikanischen Pesos.

  • Sie:Wie hoch ist die durchschnittliche Temperatur im Dezember?

  • Suchanfrage mit Nachfragen:Die durchschnittliche Temperatur liegt zwischen 21 und 26 °C. Die durchschnittliche Temperatur in Cancun liegt bei etwa 25 °C.

Bei der normalen Suche könnte Ihre Frage „Wie hoch ist der Wechselkurs?“ nicht beantwortet werden, da die normale Suche nicht weiß, dass Sie den mexikanischen Wechselkurs benötigen. Bei einer regulären Suche wird der Kontext nicht beibehalten, um Ihnen die Temperaturen für Mexiko anzugeben.

Über Konversationen

Bei der Suche mit Nachfragen besteht eine Unterhaltung aus Textabfragen, die von einem Nutzer gestellt werden, und Antworten, die von Vertex AI Search bereitgestellt werden.

Diese Anfrage- und Antwortpaare werden manchmal als Nachrichten bezeichnet. Im vorherigen Beispiel besteht die zweite Nachricht aus „Wie lautet der Wechselkurs?“ und „1 USD entspricht ungefähr 17, 65 mexikanischen Pesos“.

Die Unterhaltungen werden im selben Datenspeicher gespeichert, in dem sich die unstrukturierten Daten befinden. Im Datenspeicher wird eine Unterhaltung durch die Unterhaltungsressource dargestellt. Die Unterhaltungsressource enthält neben den Abfrage- und Antwortnachrichten Folgendes:

  • Einen eindeutigen Namen (die Unterhaltungs-ID).

  • Einen Status (in Bearbeitung oder abgeschlossen).

  • Eine Pseudo-Nutzer-ID, also eine Besucher-ID, mit der der Nutzer erfasst wird. Sie kann programmatisch zugewiesen werden.

  • Start- und Endzeit

Hinweise

Sie müssen die folgenden Voraussetzungen erfüllen. Die Anforderungen variieren je nach Art der App.

Unterhaltungen speichern und Antworten erhalten

Sie können die Befehlszeile oder Clientbibliotheken verwenden, um Suchantworten zu generieren und die Unterhaltung mit Suchanfragen und Nachfragen zu speichern.

REST

So erstellen Sie über die Befehlszeile eine Unterhaltung und generieren Antworten aus der Eingabe des Nutzers:

  1. Geben Sie den Datenspeicher an, in dem Sie den Unterhaltungsverlauf speichern möchten:

    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: Die Projektnummer oder -ID Ihres Google Cloud-Projekts

    • DATA_STORE_ID: Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    • USER_PSEUDO_ID: Eine eindeutige Kennung für das Tracking eines Suchmaschinenbesuchers. Sie können dies beispielsweise mit einem HTTP-Cookie implementieren, mit dem ein Besucher auf einem einzelnen Gerät eindeutig identifiziert wird.

    Klicken Sie, um eine Beispielantwort vom Befehl POST zu sehen.

    {
      "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. So generieren Sie eine Suchantwort und fügen sie einer neuen oder vorhandenen Unterhaltung in Ihrem Datenspeicher hinzu:

    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: Die Projektnummer oder -ID Ihres Google Cloud-Projekts

    • DATA_STORE_ID: Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    • CONVERSATION_ID: Eine eindeutige ID für die Unterhaltung, z. B. 123456. Verwenden Sie für eine Unterhaltung mit Nachfragen bei jeder Antwort dieselbe Unterhaltungs-ID.

    • FREE_TEXT: Ein Freitextstring, der die Frage des Nutzers enthält, z. B. what is bigquery?

    • FILTER: Ein Textfeld zum Filtern der Suche mit einem Filterausdruck. Der Standardwert ist ein leerer String. Die Filtererstellung hängt davon ab, ob Sie Websitedaten oder unstrukturierte Daten mit Metadaten haben. Weitere Informationen finden Sie unter Suche mit Folgefragen filtern.

    Klicken Sie, um eine Beispielantwort für den Befehl POST zu sehen.

    {
    "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. Wiederholen Sie Schritt 2 für jede neue Frage in der Unterhaltung.

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Vertex AI Agent Builder Python API.

Richten Sie zur Authentifizierung bei Vertex AI Agent Builder Standardanmeldedaten für Anwendungen ein. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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")

Suche mit weiterführenden Fragen filtern

Wenn Sie eine Abfrage mit der Funktion „Suche mit Nachfragen“ stellen, können Sie das Feld filter angeben, um den Pool der Dokumente einzugrenzen, aus denen eine Antwort abgeleitet wird. Sie erstellen den Filter mithilfe von Filterausdrücken. Die verwendeten Filterausdrücke variieren je nachdem, ob Sie Websitedaten oder unstrukturierte Daten mit Metadaten haben.

Filterausdrücke für Websitedaten

Wenn Sie einen Datenspeicher mit Websitedaten haben, können Sie Ihre Suche mithilfe der Filterausdrücke unter Filterausdrücke mit erweiterter Websiteindexierung mit einer Folgeabfrage filtern. Nachdem Sie den Filterausdruck erstellt haben, verwenden Sie ihn in Schritt 2 unter Unterhaltungen speichern und Antworten abrufen als Wert für das Feld filter.

Filterausdrücke für unstrukturierte Daten mit Metadaten

Wenn Sie einen Datenspeicher mit unstrukturierten Daten mit Metadaten haben, können Sie Ihre Suche mit einer Folgeabfrage filtern, damit Dokumente basierend auf den Metadatenfeldern zurückgegeben werden, die sie enthalten. Unter Suche nach strukturierten oder unstrukturierten Daten filtern erfahren Sie, wie Sie Metadaten verwenden, um die normale Suche (ohne Nachfragen) zu filtern. Mit denselben Prinzipien können Sie Metadaten verwenden, um die Suche mit Folgefragen zu filtern. Nachdem Sie den Filterausdruck erstellt haben, verwenden Sie ihn in Schritt 2 von Unterhaltungen speichern und Antworten abrufen als Wert für das Feld filter.

Zusammenfassung konfigurieren

Die Antwortnachricht der Suche mit Weiterleitungen ist eine generierte Zusammenfassung, die in summaryText zurückgegeben wird. Es gibt verschiedene Möglichkeiten, die generierte Zusammenfassung zu konfigurieren. Diese werden in den folgenden Abschnitten beschrieben:

Verweise in Suchergebnissen abrufen

Wenn angegeben, sind Zitate Zahlen, die in einer Suchzusammenfassung inline eingefügt werden. Diese Zahlen geben an, aus welchen Suchergebnissen bestimmte Sätze in der Zusammenfassung stammen.

So erhalten Sie Zitate:

  • Führen Sie die Schritte unter Unterhaltungen im Store ansehen und Chatantworten abrufen aus, mit der Ausnahme, dass Sie in Schritt 2 diesen Befehl mit dem Feld summarySpec ausführen, in dem includeCitations auf „wahr“ gesetzt wird.

    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 }
    }'
    

    Klicken Sie, um einen Teil der Antwort eines Beispielbefehls zu sehen.

    {
    "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"
        ]

Die Ziffern der Quellenangaben sind im Text der Zusammenfassung enthalten. Die Ziffern beziehen sich auf die zurückgegebenen Suchergebnisse und beginnen mit 1. [1] bedeutet beispielsweise, dass der Satz dem ersten Suchergebnis zugeordnet ist. [2, 3] bedeutet, dass der Satz sowohl dem zweiten als auch dem dritten Suchergebnis zugeordnet ist.

Feindselige Anfragen ignorieren

Adversarial Queries enthalten negative Kommentare oder sind darauf ausgelegt, unsichere, gegen Richtlinien verstoßende Ausgaben zu generieren. Sie können angeben, dass für schädliche Suchanfragen keine Suchzusammenfassungen zurückgegeben werden sollen. Wenn eine schädliche Suchanfrage ignoriert wird, enthält das Attribut summaryText einen Textbaustein, der angibt, dass keine Suchübersicht zurückgegeben wird. Suchdokumente werden für schädliche Suchanfragen zurückgegeben, Suchzusammenfassungen jedoch nicht.

So geben Sie an, dass für schädliche Suchanfragen keine Suchzusammenfassungen zurückgegeben werden sollen:

  • Führen Sie die Schritte unter Unterhaltungen im Store ansehen und Chatantworten abrufen aus, mit der Ausnahme, dass Sie in Schritt 2 diesen Befehl mit dem Feld summarySpec ausführen, in dem ignoreAdversarialQuery auf „wahr“ gesetzt wird.

    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 }
    }'
    

    Klicken Sie, um einen Teil der Antwort auf eine schädliche Suchanfrage zu sehen.

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

Anfragen ignorieren, bei denen keine Zusammenfassung gesucht wird

Bei Abfragen, bei denen keine Zusammenfassung gesucht wird, werden Ergebnisse zurückgegeben, die nicht für die Zusammenfassung geeignet sind. „Warum ist der Himmel blau?“ und „Wer ist der beste Fußballspieler der Welt?“ sind beispielsweise Suchanfragen, bei denen eine Zusammenfassung gesucht wird. „SFO airport“ und „weltmeisterschaft 2026“ sind das nicht. Es handelt sich höchstwahrscheinlich um Navigationsanfragen. Sie können angeben, dass für Suchanfragen, bei denen keine Zusammenfassungen zurückgegeben werden sollen, keine Suchzusammenfassungen zurückgegeben werden sollen. Suchdokumente werden für Suchanfragen zurückgegeben, bei denen keine Zusammenfassungen gesucht werden, Suchzusammenfassungen jedoch nicht.

So geben Sie an, dass für Suchanfragen, bei denen keine Zusammenfassung gesucht wird, keine Suchzusammenfassungen zurückgegeben werden sollen:

  • Führen Sie die Schritte unter Unterhaltungen im Store starten und Chatantworten erhalten aus, mit der Ausnahme, dass Sie in Schritt 2 diesen Befehl mit dem Feld summarySpec ausführen, in dem ignoreNonSummarySeekingQuery auf „wahr“ gesetzt wird.

    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 }
    }'
    

    Klicken Sie, um einen Teil der Antwort auf eine schädliche Suchanfrage zu sehen.

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

Anzahl der Ergebnisse festlegen, die in der Zusammenfassung verwendet werden sollen

Sie können die Anzahl der Ergebnisse angeben, die für die Erstellung der Zusammenfassung verwendet werden sollen. Wenn das Feld summaryResultCount nicht festgelegt ist, werden standardmäßig alle zurückgegebenen Ergebnisse verwendet, um die Zusammenfassung zu generieren.

So legen Sie die Anzahl der Top-Ergebnisse fest, die für die Zusammenfassung verwendet werden sollen:

  • Führen Sie die Schritte unter Unterhaltungen speichern und Chatantworten abrufen aus, mit der Ausnahme, dass Sie in Schritt 2 diesen Befehl mit dem Feld summarySpec ausführen, das summaryResultCount festlegt.

    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: Die Anzahl der Top-Ergebnisse, aus denen die Suchübersicht generiert werden soll. Wenn die Anzahl der zurückgegebenen Ergebnisse unter summaryResultCount liegt, wird die Zusammenfassung aus allen Ergebnissen generiert. Der Maximalwert ist 5.

Benutzerdefinierte Zusammenfassungen erhalten

Sie können benutzerdefinierte Zusammenfassungen erhalten, indem Sie beim Anfordern einer Zusammenfassung im Feld modelPromptSpec.preamble Anweisungen in natürlicher Sprache angeben.

Sie können Anpassungen wie Länge und Detaillierungsgrad, Ausgabestil (z. B. „einfach“), Ausgabesprache, Schwerpunkt der Antwort und Format (z. B. Tabellen, Aufzählungslisten und XML) anfordern.

Für die Suchanfrage „Was sind die Vorteile von BigQuery?“ könnten Sie beispielsweise Anpassungsanweisungen wie die folgenden eingeben:

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

    Beispielantwort:

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

    Beispielantwort:

    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.
    

So rufen Sie eine benutzerdefinierte Zusammenfassung auf:

  • Führen Sie die Schritte unter Unterhaltungen speichern und Chatantworten abrufen aus, mit der Ausnahme, dass Sie in Schritt 2 diesen Befehl mit dem Feld summarySpec ausführen, in dem die Anpassungsanleitung in modelPromptSpec.preamble angegeben ist.

      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: Die Anleitung zur Anpassung als String.

Mit SafeSearch können anstößige, unsichere und gegen Richtlinien verstoßende Ausgabeinhalte aus Zusammenfassungsantworten herausgefiltert werden. Weitere Informationen zu SafeSearch finden Sie unter Sicherheitseinstellungen für Vertex AI Search.

So wenden Sie die SafeSearch-Funktion auf eine Chatantwort an:

  • Führen Sie die Schritte unter Unterhaltungen im Geschäft ansehen und Chatantworten abrufen aus, mit der Ausnahme, dass Sie in Schritt 2 unter „Abfrage“ safe_search angeben.

    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
    }'
    

Gespeicherte Unterhaltungen ansehen und ändern

Über die Befehlszeile können Sie gespeicherte Unterhaltungen abrufen, löschen, aktualisieren und auflisten.

Unterhaltungen aus dem Datenspeicher abrufen

So rufen Sie alle Details zu einer bestimmten Unterhaltung aus einem Datenspeicher ab:

  • Führen Sie den folgenden curl-Befehl aus:

    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: Die Projektnummer oder -ID Ihres Google Cloud-Projekts

    • DATA_STORE_ID:Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    • CONVERSATION_ID: Die ID der Unterhaltung

    Klicken Sie, um eine Beispielantwort vom Befehl GET zu sehen.

    {
    "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"
    }

Unterhaltungen aus dem Datenspeicher löschen

Standardmäßig werden Unterhaltungen, die älter als 60 Tage sind, automatisch gelöscht. Wenn Sie jedoch eine bestimmte Unterhaltung löschen möchten, z. B. weil sie versehentlich vertrauliche Inhalte enthält, können Sie dies mit diesem API-Aufruf tun.

So löschen Sie eine Unterhaltung aus einem Datenspeicher:

  • Führen Sie den folgenden curl-Befehl aus:

    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: Die Projektnummer oder -ID Ihres Google Cloud-Projekts

    • DATA_STORE_ID: Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    • CONVERSATION_ID: Die ID der Unterhaltung

    Die Antwort des Befehls DELETE sieht in etwa so aus:

    {}
    

Unterhaltung aktualisieren

Es kann aus verschiedenen Gründen notwendig werden, eine Unterhaltung zu aktualisieren. Sie haben folgende Möglichkeiten:

  • Unterhaltungen als abgeschlossen markieren

  • Nachrichten aus einer Unterhaltung in eine andere zusammenführen

  • user_pseudo_id ändern

So aktualisieren Sie die state in einer Unterhaltung:

  • Führen Sie den folgenden curl-Befehl aus:

    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: Die Projektnummer oder -ID Ihres Google Cloud-Projekts

    • DATA_STORE_ID: Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    • CONVERSATION_ID: Die ID der Unterhaltung, die Sie aktualisieren möchten

    • NEW_STATE: Der neue Wert für den Status, z. B. COMPLETED

    Klicken Sie, um eine Beispielantwort für den Befehl PATCH zu sehen.

    {
    "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"
    }

So aktualisieren Sie die user_pseudo_id in einer Unterhaltung:

  • Führen Sie den folgenden curl-Befehl aus:

    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: Die Projektnummer oder -ID Ihres Google Cloud-Projekts

    • DATA_STORE_ID: Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    • CONVERSATION_ID: Die ID der Unterhaltung, die Sie aktualisieren möchten

    • NEW_USER_PSEUDO_ID: Der neue Wert für die Pseudo-ID des Nutzers

    Klicken Sie, um eine Beispielantwort vom Befehl PATCH zu sehen.

    {
    "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"
    }

Mit dem vorangehenden Befehl können Sie das Feld user_pseudo_id. ändern. Sie können aber auch andere Felder in der Unterhaltung aktualisieren, indem Sie user_pseudo_id durch andere Felder in der Unterhaltungsressource ersetzen.

Alle Unterhaltungen auflisten

So listen Sie alle Unterhaltungen in einem Datenspeicher auf:

  • Führen Sie den folgenden curl-Befehl aus:

    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: Die Projektnummer oder -ID Ihres Google Cloud-Projekts

    • DATA_STORE_ID: Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    Klicken Sie, um eine Beispielantwort vom Befehl GET zu sehen.

    {
    "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."
            }
          }
        }
      ]
    }
    ]
    }

Die Antwort enthält eine Liste der Unterhaltungen und die next_page_token. Wenn kein next_page_token zurückgegeben wird, gibt es keine weiteren Unterhaltungen, die aufgeführt werden können.

Die Standardseitengröße ist 50.

Unterhaltungen nach Filter auflisten

Anstatt alle Unterhaltungen in einem Datenspeicher aufzulisten, können Sie alle offenen Unterhaltungen oder alle Unterhaltungen auflisten, die mit einem bestimmten Nutzer verknüpft sind.

Sie könnten den Nutzern beispielsweise ihre geschlossenen Suchanfragen mit der Option anzeigen, eine davon wieder zu öffnen.

Dazu listen Sie Konversationen auf, die mit einem bestimmten Filter übereinstimmen: user_pseudo_id oder state (IN_PROGRESS oder COMPLETED).

Konversationen für einen Nutzer auflisten

So rufen Sie Konversationen auf, die mit einem Nutzer oder Besucher verknüpft sind:

  • Führen Sie den folgenden curl-Befehl aus:

    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: Die Projektnummer oder -ID Ihres Google Cloud-Projekts

    • DATA_STORE_ID: Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    • USER_PSEUDO_ID: Die Pseudo-ID des Nutzers, dessen Unterhaltungen Sie auflisten möchten.

    Die Antwort des Befehls GET sieht in etwa so aus:

    Klicken Sie, um eine Beispielantwort für den Befehl GET zu sehen.

    {
    "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"
    }
    ]
    }

Unterhaltungen für einen Nutzer und einen Status auflisten

So listen Sie Unterhaltungen auf, die sich in einem bestimmten Status (offen oder geschlossen) befinden und mit einem Nutzer oder Besucher verknüpft sind:

  • Führen Sie den folgenden curl-Befehl aus:

    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: Die Projektnummer oder -ID Ihres Google Cloud-Projekts

    • DATA_STORE_ID: Die ID des Datenspeichers, der mit Ihrer App verknüpft ist.

    • USER_PSEUDO_ID: Die Pseudo-ID des Nutzers, dessen Unterhaltungen Sie auflisten möchten.

    • STATE: Ob die Unterhaltung offen oder geschlossen ist (IN_PROGRESS oder COMPLETED)

    Die Antwort des Befehls GET sieht in etwa so aus:

    Klicken Sie, um eine Beispielantwort für den Befehl GET zu sehen.

    {
    "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"
    }
    ]
    }

Allgemeine Informationen zur Filtersyntax finden Sie unter AIP-160 – Filtern.

„Ähnliche Fragen“ ist eine Vorabversion mit Zulassungsliste, mit der neben Suchergebnissen auch ähnliche Fragen zurückgegeben werden können.

Wenn Sie beispielsweise fragen: „Wann ist die beste Reisezeit für Mexiko?“, werden Ihnen nicht nur Antworten auf Ihre Frage angezeigt, sondern auch andere Fragen, die Sie stellen könnten, z. B. „Wann ist der günstigste Monat für einen Urlaub in Mexiko?“ und „Welche Monate sind die Hauptreisemonate in Mexiko?“.

Wenn Sie möchten, dass Ihre Such-App ähnliche Fragen zurückgibt, wenden Sie sich an Ihr Google Konten-Team und teilen Sie ihm mit, für welche Projekte und Apps ähnliche Fragen aktiviert werden sollen. Wenn Sie nicht die Standardbereitstellungskonfiguration verwenden, müssen Sie auch den Namen der Bereitstellungskonfiguration angeben.

Nachdem die Funktion „Ähnliche Fragen“ aktiviert wurde, werden Fragen als Strings in ConverseConversationResponse zurückgegeben.

Weitere Informationen

  • Weitere Informationen zu den Feldern summaryResultCount, includeCitations, ignoreAdversarialQuery und ignoreNonSummarySeekingQuery finden Sie unter SummarySpec in der Dokumentation zur Vertex AI Agent Builder API.

  • Weitere Beispiele zum Abrufen von Suchzusammenfassungen finden Sie unter Zusammenfassungen abrufen.