Antworten mit weiterführenden Fragen erhalten

Auf dieser Seite wird die Suche mit Antwort und weiterführenden Fragen für Agent Search vorgestellt und gezeigt, wie Sie sie mit Methodenaufrufen für benutzerdefinierte Suchanwendungen implementieren.

Die Suche mit Antwort und weiterführenden Fragen basiert auf der Antwortmethode. Die Antwortmethode ersetzt die Zusammenfassungsfunktionen der älteren search-Methode und alle Funktionen der eingestellten converse-Methode. Die Antwortmethode bietet auch einige wichtige Zusatzfunktionen wie die Verarbeitung komplexer Anfragen.

Funktionen der Antwortmethode

Die wichtigsten Merkmale der Antwortmethode sind:

  • Die Fähigkeit, Antworten auf komplexe Abfragen zu generieren. Die Antwortmethode kann beispielsweise zusammengesetzte Abfragen wie die folgende in mehrere kleinere Abfragen aufteilen, um bessere Ergebnisse und damit auch bessere Antworten zu liefern:

    • „Wie hoch ist der jeweilige Umsatz von Google Cloud und Google Ads im Jahr 2024?“
    • „Nach wie vielen Jahren seit der Gründung hat Google einen Umsatz von 1 Milliarde US-Dollar erreicht?“
  • Die Möglichkeit, Suche und Antwortgenerierung in einer Multi-Turn-Unterhaltung zu kombinieren, indem die Antwortmethode in jeder Runde aufgerufen wird.

  • Die Möglichkeit, die Antwortmethode mit der Suchmethode zu kombinieren, um die Suchlatenz zu verringern. Sie können die Suchmethode und die Antwortmethode separat aufrufen und die Suchergebnisse und Antworten in verschiedenen iFrames zu unterschiedlichen Zeiten rendern. Das bedeutet, dass Sie Ihren Nutzern Suchergebnisse (die 10 blauen Links) innerhalb von Millisekunden anzeigen können. Sie müssen vor der Anzeige von Suchergebnissen nicht warten, bis Antworten generiert wurden.

Die Funktionen für Antworten und weiterführende Fragen lassen sich in die drei Phasen Abfrage, Suche und Antwort unterteilen:

Wann sollte die Antwort- und wann die Suchmethode verwendet werden?

Agent Search bietet zwei Methoden zum Abfragen von Anwendungen. Sie haben unterschiedliche, aber sich überschneidende Funktionen.

Verwenden Sie die Antwortmethode in folgenden Fällen:

  • Sie möchten eine KI-generierte Antwort (oder Zusammenfassung) der Suchergebnisse erhalten.

  • Sie möchten die Multi-Turn-Suche nutzen, also eine Suche, bei der der Kontext beibehalten wird und so weiterführende Fragen möglich sind.

Verwenden Sie die Suchmethode in folgenden Fällen:

  • Sie benötigen nur Suchergebnisse, keine generierte Antwort.

  • Sie haben eines der folgenden Elemente:

    • Media- oder Gesundheitsdaten
    • Eigene Einbettungen
    • Synonym- oder Weiterleitungssteuerelemente
    • Facetten
    • Ländercodes für Nutzer
  • Sie müssen die Daten in Ihrem generischen Datenspeicher durchsuchen.

Verwenden Sie die Antwort- und Suchmethode in folgenden Fällen zusammen:

  • Es sollen mehr als zehn Suchergebnisse und eine generierte Antwort zurückgegeben werden.

  • Sie haben Latenzprobleme und möchten Suchergebnisse schnell zurückgeben und aufrufen, bevor die generierte Antwort zurückgegeben wird.

Funktionen der Abfragephase

Die Funktion für Antworten und weiterführende Fragen unterstützt die Verarbeitung von Abfragen in natürlicher Sprache.

In diesem Abschnitt werden die verschiedenen Optionen für die Umformulierung und Klassifizierung von Abfragen beschrieben und veranschaulicht.

Abfrage umformulieren

Die Umformulierung von Abfragen ist standardmäßig aktiviert. Diese Funktion wählt automatisch die beste Möglichkeit zur Umformulierung von Abfragen aus, um die Suchergebnisse zu verbessern. Sie kann auch Abfragen bearbeiten, die nicht umformuliert werden müssen.

  • Komplexe Abfragen in mehrere Abfragen aufteilen und synchrone Unterabfragen ausführen.

    Beispiel: Eine komplexe Abfrage wird in vier kleinere, einfachere Abfragen unterteilt.

    Nutzereingabe Aus der komplexen Abfrage erstellte Unterabfragen
    Welche gemeinsamen Jobs und Hobbys haben Andie Ram und Arnaud Clément?
    • Andie Ram Beruf
    • Arnaud Clément Beruf
    • Andie Ram Hobby
    • Arnaud Clément Hobby
  • Multi-Turn-Abfragen synthetisieren, damit weiterführende Fragen kontextsensitiv und zustandsorientiert sind.

    Beispiel: Abfragen, die aus der Nutzereingabe in jeder Runde synthetisiert werden, könnten so aussehen:

    Nutzereingabe Synthetisierte Abfrage
    Runde 1: Laptops für die Schule Laptops für die Schule
    Runde 2: keine Macs Laptops für die Schule, keine Macs
    Runde 3: größerer Bildschirm und ich benötige außerdem eine kabellose Tastatur und Maus Laptops mit größerem Bildschirm für die Schule, keine Macs, mit kabelloser Tastatur und Maus
    Runde 4: und einen Rucksack dafür Laptops mit größerem Bildschirm für die Schule, keine Macs, mit kabelloser Tastatur und Maus und einem Rucksack dafür
  • Lange Anfragen vereinfachen, um den Abruf zu verbessern (erfordert die Option Generative Antworten).

    Beispiel: Eine lange Abfrage wird zu einer typischen Abfrage verkürzt.

    Nutzereingabe Vereinfachte Abfrage
    Ich möchte herausfinden, warum der Button „In den Einkaufswagen“ auf unserer Website nicht richtig funktioniert. Wenn ein Nutzer auf den Button klickt, wird der Artikel nicht in den Einkaufswagen gelegt und eine Fehlermeldung angezeigt. Ich habe den Code geprüft und er scheint korrekt zu sein. Daher bin ich mir nicht sicher, wo das Problem liegen könnte. Kannst du mir helfen, das Problem zu beheben? Der Button „In den Einkaufswagen“ funktioniert auf der Website nicht.
  • Mehrstufige Problemlösung ausführen

    Die mehrstufige Problemlösung basiert auf dem ReAct-Paradigma (Reason + Act), das es LLMs ermöglicht, komplexe Aufgaben mithilfe des Schlussfolgerns in natürlicher Sprache zu lösen. Standardmäßig sind maximal fünf Schritte möglich.

    Beispiel:

    Nutzereingabe Zwei Schritte zum Generieren der Antwort
    Nach wie vielen Jahren seit der Gründung hat Google einen Umsatz von 1 Milliarde US-Dollar erreicht? Schritt 1:
    [Gedanke]: Ich muss wissen, wann Google gegründet wurde, um dann den Umsatz seitdem abzufragen.
    [Aktion] Suche: Wann wurde Google gegründet? [Suchergebnisse beachten]: „1998“

    Schritt 2:
    [Gedanke]: Jetzt muss ich den Jahresumsatz von Google seit 1998 recherchieren und herausfinden, wann er zum ersten Mal die Milliardengrenze überschritten hat.
    [Aktion] Suche: Umsatz von Google seit 1998
    [Suchergebnisse beachten] Google-Umsatz 1998, Google-Umsatz 1999…
    [Antwort]: Google hat 2003 einen Umsatz von mehr als 1 Milliarde US-Dollar erzielt [1], fünf Jahre nach der Gründung im Jahr 1998 [2].

    Für mehrstufige Problemlösungen muss die Option Generative Antworten aktiviert sein.

Abfrageklassifizierung

Mit Optionen zur Abfrageklassifizierung lassen sich schädliche Abfragen und Abfragen, die nicht auf eine Antwort abzielen, identifizieren. Optionen zur Abfrageklassifizierung sind standardmäßig deaktiviert.

Weitere Informationen zu schädlichen Abfragen und Abfragen, die nicht auf eine Antwort abzielen, finden Sie unter Schädliche Abfragen ignorieren und Abfragen ignorieren, die nicht auf eine Zusammenfassung abzielen.

Funktionen der Suchphase

Für die Suche bietet die Antwortmethode dieselben Optionen wie die Suchmethode. Beispiel:

Funktionen der Antwortphase

Während der Antwortphase, wenn Antworten aus den Suchergebnissen generiert werden, können Sie dieselben Funktionen wie bei der Suchmethode aktivieren. Beispiel:

Zusätzliche Funktionen der Antwortphase, die in der Suchmethode nicht verfügbar sind:

  • Fundierungsbewertung für jede Behauptung (jeden Satz in der generierten Antwort) abrufen. Die Fundierungsbewertung ist ein Gleitkommawert im Bereich [0,1], der angibt, wie gut die Behauptung durch die Daten im Datenspeicher gestützt wird. Weitere Informationen finden Sie unter Fundierungsbewertungen zurückgeben.

  • Aggregierte Fundierungsbewertung für die Antwort abrufen. Die Fundierungsbewertung gibt an, wie gut die Antwort durch die Daten im Datenspeicher gestützt wird. Weitere Informationen finden Sie unter Fundierungsbewertungen zurückgeben.

  • Nur gut fundierte Antworten zurückgeben. Sie können festlegen, dass nur Antworten zurückgegeben werden, die einen bestimmten Schwellenwert für die Fundierungsbewertung erreichen. Weitere Informationen finden Sie unter Nur gut fundierte Antworten anzeigen.

  • Wählen Sie aus, ob ähnliche Fragen zurückgegeben werden sollen. Ähnliche Fragen sind Vorschläge, die Ihre Nutzer auswählen können, anstatt eigene Fragen einzugeben.

  • Personalisierungsinformationen in Abfragen aufnehmen, damit die Antworten für einzelne Nutzer angepasst werden können. Weitere Informationen finden Sie unter Antworten personalisieren.

Wenn Sie multimodale Antworten mit Diagrammen oder Bildern zusätzlich zum Text erhalten möchten, haben Sie folgende Möglichkeiten:

  • Antworten mit Diagrammen und Grafiken abrufen, in denen die in den Antworten enthaltenen Daten dargestellt werden. Weitere Informationen finden Sie unter Diagramme für Antworten generieren.

  • Bilder aus dem Datenspeicher abrufen. Wenn der Datenspeicher Bilder enthält, kann die Antwortmethode ein Bild in der Antwort zurückgeben. Bilder aus dem Datenspeicher können auch in Verweisen zurückgegeben werden, wenn Quellennachweise angefordert werden. Weitere Informationen finden Sie unter Vorhandene Bilder aus dem Datenspeicher abrufen.

Hinweis

Je nach Art der App müssen Sie die folgenden Anforderungen erfüllen:

  • Wenn Sie eine Suchanwendung für strukturierte Daten, unstrukturierte Daten oder Websites haben, aktivieren Sie die folgenden Optionen:

    • Features der Enterprise-Version: Damit erhalten Sie Zugriff auf die wichtigsten Funktionen für generative Antworten. Dazu gehören alle Funktionen zur Antwortgenerierung mit Ausnahme von erweiterten generativen Antwortfunktionen wie ähnliche Fragen, Vereinfachung von Anfragen, Anfragen mit mehreren Schritten und multimodale Antworten, die Bilder und Diagramme zurückgeben.
    • Generative Antworten: Damit erhalten Sie Zugriff auf die erweiterten Funktionen für generative Antworten, die mehrstufige Problemlösung, die Vereinfachung von Anfragen, Anfragen mit mehreren Schritten, ähnliche Fragen und multimodale Antworten mit Bildern und Diagrammen erfordern.
  • Wenn Sie einen Datenspeicher für die Website-Suche haben, aktivieren Sie außerdem die erweiterte Websiteindexierung.

Suchen und beantworten (einfach)

Der folgende Befehl zeigt, wie Sie die Antwortmethode aufrufen und eine generierte Antwort sowie eine Liste von Suchergebnissen mit Links zu den Quellen zurückgeben.

Dieser einfache Befehl zeigt nur die erforderliche Eingabe. Die Optionen bleiben auf ihren Standardeinstellungen.

REST

So führen Sie eine Suche aus und rufen Ergebnisse mit einer generierten Antwort ab:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \
      -d '{
            "query": { "text": "QUERY"}
          }'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Projekts in Google Cloud .
    • APP_ID: die ID der Agent Search App, die Sie abfragen möchten.
    • QUERY: Ein Freitextstring mit der Frage oder Suchanfrage. Beispiel: „Vergleiche die BigQuery- und Spanner-Datenbanken.“

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Agent Search Python API.

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

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"
# engine_id = "YOUR_APP_ID"


def answer_query_sample(
    project_id: str,
    location: str,
    engine_id: str,
) -> discoveryengine.AnswerQueryResponse:
    #  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
    )

    # The full resource name of the Search serving config
    serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_serving_config"

    # Optional: Options for query phase
    # The `query_understanding_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/QueryUnderstandingSpec
    query_understanding_spec = discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec(
        query_rephraser_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryRephraserSpec(
            disable=False,  # Optional: Disable query rephraser
            max_rephrase_steps=1,  # Optional: Number of rephrase steps
        ),
        # Optional: Classify query types
        query_classification_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec(
            types=[
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.ADVERSARIAL_QUERY,
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.NON_ANSWER_SEEKING_QUERY,
            ]  # Options: ADVERSARIAL_QUERY, NON_ANSWER_SEEKING_QUERY or both
        ),
    )

    # Optional: Options for answer phase
    # The `answer_generation_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/AnswerGenerationSpec
    answer_generation_spec = discoveryengine.AnswerQueryRequest.AnswerGenerationSpec(
        ignore_adversarial_query=False,  # Optional: Ignore adversarial query
        ignore_non_answer_seeking_query=False,  # Optional: Ignore non-answer seeking query
        ignore_low_relevant_content=False,  # Optional: Return fallback answer when content is not relevant
        model_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.ModelSpec(
        # Use the 2026 stable production model for answer generation
        model_version="gemini-2.5-flash/answer_gen/stable",
        ),
        prompt_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.PromptSpec(
            preamble="Give a detailed answer.",  # Optional: Natural language instructions for customizing the answer.
        ),
        include_citations=True,  # Optional: Include citations in the response
        answer_language_code="en",  # Optional: Language code of the answer
    )

    # Initialize request argument(s)
    request = discoveryengine.AnswerQueryRequest(
        serving_config=serving_config,
        query=discoveryengine.Query(text="What is Vertex AI Search?"),
        session=None,  # Optional: include previous session ID to continue a conversation
        query_understanding_spec=query_understanding_spec,
        answer_generation_spec=answer_generation_spec,
        user_pseudo_id="user-pseudo-id",  # Optional: Add user pseudo-identifier for queries.
    )

    # Make the request
    response = client.answer_query(request)

    # Handle the response
    print(response)

    return response

Befehle für die Abfragephase

In diesem Abschnitt wird gezeigt, wie Sie Optionen für die Abfragephase des Antwortmethodenaufrufs angeben.

Suchen und antworten (Umformulierung deaktiviert)

Der folgende Befehl zeigt, wie Sie die Antwortmethode aufrufen und eine generierte Antwort sowie eine Liste von Suchergebnissen zurückgeben. Die Antwort kann sich von der vorherigen Antwort unterscheiden, da die Option zum Umformulieren deaktiviert ist.

REST

So führen Sie eine Suche aus und rufen Ergebnisse mit einer generierten Antwort ab, ohne dass die Abfrage umformuliert wird:

  1. Führen Sie den folgenden curl-Befehl aus:

    curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:answer" \
      -d '{
            "query": { "text": "QUERY"},
            "queryUnderstandingSpec": {
               "queryRephraserSpec": {
                  "disable": true
            }
        }
          }'
    
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: die ID Ihres Projekts in Google Cloud .
    • APP_ID: Die ID der Agent Search App.
    • QUERY: Ein Freitextstring mit der Frage oder Suchanfrage. Beispiel: „Vergleiche die BigQuery- und Spanner-Datenbanken.“

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Agent Search Python API.

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

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"
# engine_id = "YOUR_APP_ID"


def answer_query_sample(
    project_id: str,
    location: str,
    engine_id: str,
) -> discoveryengine.AnswerQueryResponse:
    #  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
    )

    # The full resource name of the Search serving config
    serving_config = f"projects/{project_id}/locations/{location}/collections/default_collection/engines/{engine_id}/servingConfigs/default_serving_config"

    # Optional: Options for query phase
    # The `query_understanding_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/QueryUnderstandingSpec
    query_understanding_spec = discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec(
        query_rephraser_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryRephraserSpec(
            disable=False,  # Optional: Disable query rephraser
            max_rephrase_steps=1,  # Optional: Number of rephrase steps
        ),
        # Optional: Classify query types
        query_classification_spec=discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec(
            types=[
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.ADVERSARIAL_QUERY,
                discoveryengine.AnswerQueryRequest.QueryUnderstandingSpec.QueryClassificationSpec.Type.NON_ANSWER_SEEKING_QUERY,
            ]  # Options: ADVERSARIAL_QUERY, NON_ANSWER_SEEKING_QUERY or both
        ),
    )

    # Optional: Options for answer phase
    # The `answer_generation_spec` below includes all available query phase options.
    # For more details, refer to https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1/AnswerGenerationSpec
    answer_generation_spec = discoveryengine.AnswerQueryRequest.AnswerGenerationSpec(
        ignore_adversarial_query=False,  # Optional: Ignore adversarial query
        ignore_non_answer_seeking_query=False,  # Optional: Ignore non-answer seeking query
        ignore_low_relevant_content=False,  # Optional: Return fallback answer when content is not relevant
        model_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.ModelSpec(
        # Use the 2026 stable production model for answer generation
        model_version="gemini-2.5-flash/answer_gen/stable",
        ),
        prompt_spec=discoveryengine.AnswerQueryRequest.AnswerGenerationSpec.PromptSpec(
            preamble="Give a detailed answer.",  # Optional: Natural language instructions for customizing the answer.
        ),
        include_citations=True,  # Optional: Include citations in the response
        answer_language_code="en",  # Optional: Language code of the answer
    )

    # Initialize request argument(s)
    request = discoveryengine.AnswerQueryRequest(
        serving_config=serving_config,
        query=discoveryengine.Query(text="What is Vertex AI Search?"),
        session=None,  # Optional: include previous session ID to continue a conversation
        query_understanding_spec=query_understanding_spec,
        answer_generation_spec=answer_generation_spec,
        user_pseudo_id="user-pseudo-id",  # Optional: Add user pseudo-identifier for queries.
    )

    # Make the request
    response = client.answer_query(request)

    # Handle the response