Cette page explique comment utiliser votre instance Elasticsearch pour ancrer des réponses sur vos données.
Ancrer Gemini avec Elasticsearch
L'ancrage consiste à utiliser des ensembles de données publics et privés pour fournir un contexte et des faits afin d'ancrer les réponses du grand modèle de langage (LLM) . En ancrant avec Elasticsearch, vous pouvez tirer parti de vos index Elasticsearch existants pour améliorer la qualité et la fiabilité de la sortie de Gemini, réduire les hallucinations et vous assurer que les réponses sont pertinentes pour vos données. Vous pouvez ainsi créer des applications RAG puissantes, telles que :
- des résumés de recherche génératifs ;
- des chatbots de questions-réponses avec des données d'entreprise ;
- des agents ancrés dans vos données.
Vous pouvez ancrer une réponse sur un maximum de 10 sources de données à la fois. Vous pouvez combiner l'ancrage avec Elasticsearch et l'ancrage avec la recherche Google pour associer le modèle à des connaissances provenant du monde entier, à un large éventail de sujets ou à des informations à jour disponibles sur Internet.
Modèles compatibles
Les modèles suivants sont compatibles avec l'ancrage avec Elasticsearch avec une entrée de texte uniquement :
Cliquer pour développer les modèles compatibles
- Gemini Nano Banana 2.1
- Gemini 4 Argon Cyber Permissive
- Gemini 4 Argon
- Gemini 3.8 Live
- Gemini 3.8 Flash
- Gemini 3.7 Flash
- Gemini 3.6 Flash
- Gemini 3.5 Flash-Lite
- Gemini 3.5 Flash
- Gemini 3.1 Pro
- Gemini 3.1 Flash-Lite
- Gemini 3.1 Flash Image
- Gemini 3 Pro Image
- Gemini 3 Flash
- Gemini 2.5 Pro
- Gemini 2.5 Flash-Lite
- Gemini 2.5 Flash with Gemini Live API native audio
- Gemini 2.5 Flash
Configurer un modèle de recherche dans Elasticsearch
Cette section explique comment utiliser votre instance Elasticsearch pour ancrer des données stockées dans l'instance.
Bonnes pratiques
Pour obtenir les meilleures réponses d'ancrage, suivez ces principes lorsque vous créez un modèle de recherche :
N'incluez que des données pertinentes et utiles. Par exemple, dans un catalogue de produits, spécifier une URL d'image peut ne pas aider le LLM à répondre aux requêtes concernant les propriétés du produit, sauf si la requête demande spécifiquement une URL. De même, évitez de générer des vecteurs d'embedding.
L'ancrage supprime les résultats Elasticsearch peu pertinents pour vos requêtes. Vous devez fournir un nombre plus élevé de résultats Elasticsearch pour capturer tout le contexte pertinent.
Les données de résultat peuvent se trouver dans un seul champ ou être réparties sur plusieurs champs.
Exemples de modèles
Vous pouvez utiliser vos modèles de recherche. Toutefois, nous vous recommandons d'utiliser le modèle de recherche kNN générique avec l'ancrage Elasticsearch. Pour obtenir d'autres modèles de recherche, consultez le dépôt GitHub.
Cette recherche sémantique avec Gemini Enterprise Agent Platform est une recherche kNN générique.
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
}
]
}
}
}
Générer des réponses ancrées avec Elasticsearch
Cette section explique comment utiliser l'API Agent Platform pour ancrer les réponses de votre LLM.
Prérequis
Avant de pouvoir ancrer les réponses du LLM avec Elasticsearch, vous devez effectuer les opérations suivantes :
Activer l'API Agent Platform : assurez-vous que l' API Agent Platform est activée pour votre Cloud de Confiance by S3NS projet.
Installer et se connecter à Google Cloud CLI : installez et initialisez l'outil de ligne de commande gcloud CLI .
Configuration d'Elasticsearch : utilisez un cluster et un index Elasticsearch existants que vous souhaitez utiliser pour l'ancrage. Obtenez les informations suivantes à partir de votre configuration Elasticsearch :
- Point de terminaison : URL de votre cluster Elasticsearch.
- Nom de l'index : nom de l'index que vous souhaitez rechercher, tel que my-data-index.
- Clé API : clé API qui permet d'accéder à votre cluster Elasticsearch. La clé API doit commencer par le préfixe ApiKey.
Créer un modèle de recherche Elasticsearch : utilisez une source de données Elasticsearch qui utilise un modèle de référence qui renvoie des données de résultat pour l’ancrage.
Générer des réponses ancrées
Console
Pour ancrer avec Elasticsearch dans la Cloud de Confiance console, procédez comme suit :
Accédez à la page Agent Studio.
Dans le panneau latéral, sous Paramètres du modèle, accédez à la section Ancrage, puis activez le bouton Vos données.
Dans le volet de configuration, sélectionnez Elasticsearch.
Saisissez le point de terminaison dans le champ Point de terminaison Elasticsearch.
Saisissez
ApiKey YOUR_API_KEYdans le champ Clé API Elasticsearch.Saisissez l'index dans le champ Index Elasticsearch.
Saisissez le modèle de recherche dans le champ Modèle de recherche Elasticsearch.
Ajustez le nombre de résultats en faisant glisser le curseur Nombre de résultats.
Cliquez sur Enregistrer.
Saisissez votre prompt.
Cliquez sur Envoyer.
Comprendre votre réponse
Si le prompt de votre modèle est correctement ancré sur les datastores Elasticsearch à l'aide d'Agent Studio ou de l'API, les réponses du modèle incluent des métadonnées avec des citations et du contenu source. Si la pertinence de la source est faible ou si des informations sont incomplètes dans la réponse du modèle, il est possible que les métadonnées ne soient pas fournies et que la réponse du prompt ne soit pas ancrée.
Python
Installer
pip install --upgrade google-genai
Pour en savoir plus, consultez la documentation de référence du SDK.
Définissez des variables d'environnement pour utiliser le SDK Google Gen AI avec Vertex AI :
# 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
Pour envoyer un prompt textuel et l'ancrer avec Elasticsearch, envoyez une requête POST à l'API Agent Platform. Vous devez au minimum fournir le corps de la requête. Veillez à effectuer les remplacements suivants :
- PROMPT : prompt textuel à ancrer.
- ELASTIC_SEARCH_ENDPOINT : chemin d'accès absolu au point de terminaison de la ressource Elasticsearch à utiliser pour.
- ELASTIC_SEARCH_API_KEY : clé API pour le point de terminaison des données Elasticsearch.
- INDEX_NAME : nom de l'index Elasticsearch utilisé pour l'ancrage.
- SEARCH_TEMPLATE_NAME : modèle de recherche Elasticsearch utilisé pour l'ancrage.
NUM_HITS : nombre de résultats renvoyés par la source de données Elasticsearch et utilisés pour l'ancrage.
Méthode HTTP et URL :
POST https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:generateContentCorps JSON de la requête :
{ "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", } } } }] }
Pour en savoir plus sur les autres champs d'API, tels que les instructions système et les chats multitours, consultez le guide du débutant sur l'IA générative.
Envoyer la requête API
Vous pouvez enregistrer le corps de la requête dans un fichier nommé request.json.
Exécutez ensuite la requête API POST et effectuez les remplacements suivants :
- LOCATION : région dans laquelle traiter la requête. Pour utiliser le point de terminaison global, excluez l'emplacement du nom du point de terminaison et configurez l'emplacement de la ressource sur
global. - PROJECT_ID: ID du projet Cloud de Confiance by S3NS . Pour en savoir plus sur les ID de projet, consultez Créer et gérer des projets.
- MODEL_ID: ID du modèle multimodal.
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"
Vous devriez recevoir une réponse JSON de ce type :
{
"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],
},
],
},
}
],
}
Comprendre votre réponse
La réponse des deux API inclut le texte généré par le LLM, appelé candidat. Si le prompt de votre modèle est correctement ancré sur votre source de données Elasticsearch, les réponses incluent des métadonnées d'ancrage, qui identifient les parties de la réponse provenant de vos données Elasticsearch. Toutefois, il existe plusieurs raisons pour lesquelles ces métadonnées peuvent ne pas être fournies et la réponse du prompt ne sera pas ancrée. Ces raisons peuvent être une faible pertinence de la source ou des informations incomplètes dans la réponse du modèle.
Voici une répartition des données de sortie :
- Rôle : indique l'expéditeur de la réponse ancrée. Étant donné que la réponse contient toujours du texte ancré, le rôle est toujours
model. - Texte : réponse ancrée générée par le LLM.
- Métadonnées d'ancrage : informations sur la source d'ancrage, qui contient les éléments suivants :
- Segments d'ancrage : liste des résultats de votre index Elasticsearch qui correspondent à la réponse.
- Supports d'ancrage : informations sur une affirmation spécifique dans la réponse qui peuvent être utilisées pour afficher des citations :
- Segment : partie de la réponse du modèle qui est étayée par un segment d'ancrage.
- Index de segment d'ancrage : index des segments d'ancrage dans la liste des segments d'ancrage correspondant à cette affirmation.
- Scores de confiance : nombre compris entre 0 et 1 qui indique le niveau d'ancrage de l'affirmation dans l'ensemble fourni de segments d'ancrage. Non disponible pour Gemini 2.5 Pro, Gemini 2.5 Flash et versions ultérieures.
Étape suivante
- Pour en savoir plus sur l'envoi de requêtes de chat, consultez la section Chat multitour.
- Pour en savoir plus sur les bonnes pratiques de l'IA responsable et les filtres de sécurité d'Agent Platform, consultez Bonnes pratiques concernant la sécurité.