Fundierung mit Elasticsearch

Auf dieser Seite wird erläutert, wie Sie Ihre Elasticsearch-Instanz verwenden können, um Antworten auf Ihre Daten zu stützen.

Gemini mit Elasticsearch fundieren

Fundierung beinhaltet die Verwendung öffentlicher und privater Datensätze, um Kontext und Fakten bereitzustellen, auf die sich die Antworten von Large Language Models (LLMs) stützen. Durch die Fundierung mit Elasticsearch können Sie Ihre vorhandenen Elasticsearch-Indizes nutzen, um die Qualität und Zuverlässigkeit der Ausgabe von Gemini zu verbessern, Halluzinationen zu reduzieren und dafür zu sorgen, dass die Antworten für Ihre Daten relevant sind. So können Sie leistungsstarke RAG-Anwendungen erstellen, z. B.:

  • Generative Zusammenfassungen
  • Chatbots für Fragen und Antworten mit Unternehmensdaten
  • Auf Ihren Daten basierende Agents

Sie können eine Antwort gleichzeitig auf bis zu 10 Datenquellen stützen. Sie können die Fundierung mit Elasticsearch mit der Fundierung mit der Google Suche kombinieren, um das Modell mit dem Wissen der ganzen Welt, einer Vielzahl von Themen oder aktuellen Informationen im Internet zu verbinden.

Unterstützte Modelle

Die folgenden Modelle unterstützen die Fundierung mit Elasticsearch nur mit Texteingabe:

Klicken Sie, um die unterstützten Modelle zu maximieren.

Suchvorlage in Elasticsearch einrichten

In diesem Abschnitt wird erläutert, wie Sie Ihre Elasticsearch-Instanz verwenden können, um Antworten auf Ihre in der Instanz gespeicherten Daten zu stützen.

Best Practices

Verwenden Sie beim Erstellen einer Suchvorlage die folgenden Prinzipien, um die besten Fundierungsantworten zu erhalten:

  • Fügen Sie nur relevante und nützliche Daten ein. In einem Produktkatalog kann beispielsweise die Angabe einer Bild-URL dem LLM nicht helfen, Prompts zu Produkteigenschaften zu beantworten, es sei denn, der Prompt fordert ausdrücklich eine URL an. Vermeiden Sie auch die Ausgabe von Einbettungsvektoren.

  • Durch die Fundierung werden Elasticsearch-Ergebnisse mit geringer Relevanz für Ihre Prompts entfernt. Sie sollten eine höhere Anzahl von Elasticsearch-Ergebnissen angeben, um den gesamten relevanten Kontext zu erfassen.

  • Die Ergebnisdaten können sich in einem Feld befinden oder auf mehrere Felder verteilt sein.

Beispielvorlagen

Sie können Ihre Suchvorlagen verwenden. Wir empfehlen jedoch, die generische kNN-Suchvorlage mit Elasticsearch-Fundierung zu verwenden. Weitere Such vorlagen finden Sie im GitHub-Repository.

Diese semantische Suche mit der Gemini Enterprise Agent Platform ist eine generische kNN-Suche.

    PUT _scripts/google-template-knn-multioutput
    {
      "script": {
        "lang": "mustache",
        "source": {
          "_source": {
            "excludes": [ "title_embedding", "description_embedding", "images"]
          },
            "size": "num_hits",
              "knn" : [
              {
                "field": "description_embedding",
                "k": 5,
                "num_candidates": 10,
                "query_vector_builder": {
                  "text_embedding": {
                    "model_id": "googlevertexai_embeddings_004",
                    "model_text": "query"
                  }
                },
                "boost": 0.4
              },
              {
                "field": "title_embedding",
                "k": 5,
                "num_candidates": 10,
                "query_vector_builder": {
                  "text_embedding": {
                    "model_id": "googlevertexai_embeddings_004",
                    "model_text": "query"
                }
              },
              "boost": 0.6
              }
              ]
        }
      }
    }

Fundierte Antworten mit Elasticsearch generieren

In diesem Abschnitt wird erläutert, wie Sie die Agent Platform API verwenden, um Ihre LLM-Antworten zu stützen.

Vorbereitung

Bevor Sie LLM-Antworten mit Elasticsearch fundieren können, müssen Sie Folgendes tun:

  1. Agent Platform API aktivieren: Achten Sie darauf, dass die Agent Platform API für Ihr Cloud de Confiance by S3NS Projekt aktiviert ist.

  2. Google Cloud CLI installieren und anmelden: Installieren und initialisieren Sie das Befehlszeilentool gcloud CLI.

  3. Elasticsearch-Einrichtung: Verwenden Sie einen vorhandenen Elasticsearch-Cluster und -Index, die Sie für die Fundierung verwenden möchten. Rufen Sie die folgenden Informationen aus Ihrer Elasticsearch-Einrichtung ab:

    • Endpunkt: Die URL Ihres Elasticsearch-Clusters.
    • Indexname: Der Name des Index, in dem Sie suchen möchten, z. B. my-data-index.
    • API-Schlüssel: Ein API-Schlüssel, der den Zugriff auf Ihren Elasticsearch-Cluster ermöglicht. Der API-Schlüssel muss mit dem Präfix ApiKey beginnen.
  4. Elasticsearch-Suchvorlage erstellen: Verwenden Sie eine Elasticsearch-Datenquelle die eine Referenz Vorlage verwendet, die Ergebnisdaten für die Fundierung zurückgibt.

Fundierte Antworten generieren

Console

So stützen Sie Antworten mit Elasticsearch in der Cloud de Confiance Console:

  1. Rufen Sie die Seite Agent Studio auf.

    Zu Agent Studio

  2. Gehen Sie in der Seitenleiste unter Modelleinstellungen zum Abschnitt Fundierung und aktivieren Sie die Option Ihre Daten.

  3. Wählen Sie im Konfigurationsbereich Elasticsearch aus.

  4. Geben Sie den Endpunkt in das Feld Elasticsearch-Endpunkt ein.

  5. Geben Sie ApiKey YOUR_API_KEY in das Feld Elasticsearch-API-Schlüssel ein.

  6. Geben Sie den Index in das Feld Elasticsearch-Index ein.

  7. Geben Sie die Suchvorlage in das Feld Elasticsearch-Suchvorlage ein.

  8. Passen Sie die Anzahl der Treffer an, indem Sie den Schieberegler Anzahl der Treffer verschieben.

  9. Klicken Sie auf Speichern.

  10. Geben Sie Ihren Prompt ein.

  11. Klicken Sie auf Senden.

Ihre Antwort verstehen

Wenn Ihr Modell-Prompt von Agent Studio oder der API erfolgreich bei Elasticsearch-Datenspeichern fundiert wird, enthalten die Antworten des Modells Metadaten mit Quellenangaben und Quellinhalten. Wenn die Quellenrelevanz gering ist oder unvollständige Informationen in der Antwort des Modells enthalten sind, werden möglicherweise keine Metadaten bereitgestellt und die Prompt-Antwort wird nicht fundiert.

Python

Installieren

pip install --upgrade google-genai

Weitere Informationen finden Sie in der SDK-Referenzdokumentation.

Legen Sie Umgebungsvariablen fest, um das Google Gen AI SDK mit Vertex AI zu verwenden:

# Replace the `GOOGLE_CLOUD_PROJECT` and `GOOGLE_CLOUD_LOCATION` values
# with appropriate values for your project.
export GOOGLE_CLOUD_PROJECT=GOOGLE_CLOUD_PROJECT
export GOOGLE_CLOUD_LOCATION=global
export GOOGLE_GENAI_USE_ENTERPRISE=True

from google import genai
from google.genai.types import (
    GenerateContentConfig,
    Elasticsearch,
    Retrieval,
    Tool,
    HttpOptions,
)

client = genai.Client(http_options=HttpOptions(api_version="v1"))

# Replace with your Elasticsearch details
ELASTIC_SEARCH_ENDPOINT = "YOUR_ELASTICSEARCH_ENDPOINT"
ELASTIC_SEARCH_API_KEY = "YOUR_ELASTICSEARCH_API_KEY"
INDEX_NAME = "YOUR_INDEX_NAME"
SEARCH_TEMPLATE_NAME = "YOUR_SEARCH_TEMPLATE_NAME"
NUM_HITS = 5

tool = Tool(
    retrieval=Retrieval(
        external_api=Elasticsearch(
            api_spec="ELASTIC_SEARCH",
            endpoint=ELASTIC_SEARCH_ENDPOINT,
            api_auth={
                "apiKeyConfig": {
                    "apiKeyString": f"ApiKey {ELASTIC_SEARCH_API_KEY}"
                }
            },
            elastic_search_params={
                "index": INDEX_NAME,
                "searchTemplate": SEARCH_TEMPLATE_NAME,
                "numHits": NUM_HITS,
            },
        )
    )
)

response = client.models.generate_content(
    model="gemini-2.5-flash",  # Or another supported model
    contents="What are the main features of product X?", # Your query
    config=GenerateContentConfig(
        tools=[tool],
    ),
)

print(response.text)

REST

Wenn Sie einen Text-Prompt senden und ihn mit Elasticsearch fundieren möchten, senden Sie eine POST-Anfrage an die Agent Platform API. Sie müssen mindestens den Anfragetext angeben. Ersetzen Sie dabei Folgendes:

  • PROMPT: Der Text-Prompt, der fundiert werden soll.
  • ELASTIC_SEARCH_ENDPOINT: Der absolute Endpunktpfad für die zu verwendende Elasticsearch-Ressource.
  • ELASTIC_SEARCH_API_KEY: Der API-Schlüssel für den Elasticsearch Datenendpunkt.
  • INDEX_NAME: Der Name des Elasticsearch-Index, der für die Fundierung verwendet wird.
  • SEARCH_TEMPLATE_NAME: Die Elasticsearch-Suchvorlage die für die Fundierung verwendet wird.
  • NUM_HITS: Die Anzahl der Ergebnisse, die von der Elasticsearch-Datenquelle zurückgegeben und für die Fundierung verwendet werden.

    HTTP-Methode und URL:

    POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent
    

    JSON-Text der Anfrage:

      {
        "contents": [
          {
            "role": "user",
            "parts": [
              {
                "text": "PROMPT"
              }
            ]
          }
        ],
        "tools": [{
          "retrieval": {
            "externalApi": {
              "api_spec": "ELASTIC_SEARCH",
              "endpoint": "ELASTIC_SEARCH_ENDPOINT",
              "apiAuth": {
                "apiKeyConfig": {
                  "apiKeyString": "ApiKey ELASTIC_SEARCH_API_KEY"
                }
              },
              "elasticSearchParams": {
                "index": "INDEX_NAME",
                "searchTemplate": "SEARCH_TEMPLATE_NAME",
                "numHits": "NUM_HITS",
              }
            }
          }
        }]
      }
    

Weitere Informationen zu anderen API-Feldern wie Systemanweisungen und Unterhaltungen in mehreren Runden finden Sie im Leitfaden für Einsteiger in generative KI.

API-Anfrage senden

Sie können den Anfragetext in einer Datei mit dem Namen request.json speichern. Führen Sie dann die POST-API-Anfrage aus und ersetzen Sie Folgendes:

  • LOCATION: Die Region, in der die Anfrage verarbeitet werden soll. Wenn Sie den globalen Endpunkt verwenden möchten, schließen Sie den Standort aus dem Endpunktnamen aus und konfigurieren Sie den Standort der Ressource auf global.
  • PROJECT_ID: Ihre Cloud de Confiance by S3NS Projekt-ID. Weitere Informationen zu Projekt-IDs finden Sie unter Projekte erstellen und verwalten.
  • MODEL_ID: Die Modell-ID des multimodalen Modells.
  curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
  "https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContent"

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

  {
    "candidates": [
      {
        "content": {
          "role": "model",
          "parts": [
            {
              "text": "Based on the information ..."
            }
          ]
        },
        "finishReason": "STOP",
        "safetyRatings": [ "..." ],
        "groundingMetadata": {
          "groundingChunks": [
            {
              "retrievedContext": {
                "text": "ipsum lorem ..."
              }
            },
            {...},
            {...},
          ],
          "groundingSupports": [
            {
              "segment": {
                "startIndex": 25,
                "endIndex": 147,
                "text": "ipsum lorem ..."
              },
              "groundingChunkIndices": [1,2],
              "confidenceScores": [0.6626542, 0.82018316],
            },
          ],
        },
      }
    ],
  }

Ihre Antwort verstehen

Die Antwort beider APIs enthält den vom LLM generierten Text, der als Kandidat bezeichnet wird. Wenn Ihr Modell-Prompt erfolgreich bei Ihrer Elasticsearch-Datenquelle fundiert wird, enthalten die Antworten Fundierungsmetadaten, die die Teile der Antwort identifizieren, die aus Ihren Elasticsearch-Daten abgeleitet wurden. Es gibt jedoch mehrere Gründe, warum diese Metadaten möglicherweise nicht bereitgestellt werden und die Prompt-Antwort nicht fundiert wird. Dazu gehören eine geringe Quellenrelevanz oder unvollständige Informationen in der Antwort des Modells.

Im Folgenden finden Sie eine Aufschlüsselung der Ausgabedaten:

  • Rolle: Gibt den Absender der fundierten Antwort an. Da die Antwort immer fundierten Text enthält, ist die Rolle immer model.
  • Text: Die vom LLM generierte fundierte Antwort.
  • Fundierungsmetadaten: Informationen zur Fundierungsquelle, die die folgenden Elemente enthalten:
    • Fundierungs-Chunks: Eine Liste von Ergebnissen aus Ihrem Elasticsearch-Index, die die Antwort unterstützen.
    • Fundierungsunterstützung: Informationen zu einer bestimmten Behauptung in der Antwort mit denen Quellenangaben angezeigt werden können:
    • Segment: Der Teil der Antwort des Modells, der durch einen Fundierungs-Chunk belegt wird.
    • Index des Fundierungs-Chunks: Der Index der Fundierungs-Chunks in der Liste der Fundierungs-Chunks, der dieser Behauptung entspricht.
    • Konfidenzwerte: Eine Zahl zwischen 0 und 1, die angibt, wie fundiert die Behauptung in der bereitgestellten Menge von Fundierungs-Chunks ist. Nicht für Gemini 2.5 Pro und Gemini 2.5 Flash und höher verfügbar.

Nächste Schritte