En esta página se explica cómo puedes usar tu instancia de Elasticsearch para basarte en tus datos.
Fundamentar Gemini con Elasticsearch
La fundamentación consiste en usar conjuntos de datos públicos y privados para proporcionar contexto y datos que fundamenten las respuestas de los modelos de lenguaje extensos (LLMs). Al usar Elasticsearch como base, puedes aprovechar tus índices de Elasticsearch para mejorar la calidad y la fiabilidad de los resultados de Gemini, reducir las alucinaciones y asegurarte de que las respuestas sean relevantes para tus datos. De esta forma, puedes crear aplicaciones RAG potentes, como las siguientes:
- Resúmenes de búsqueda generativos
- Chatbots de preguntas y respuestas con datos empresariales
- Agentes basados en tus datos
Puedes basar una respuesta en un máximo de 10 fuentes de datos a la vez. Puedes combinar la fundamentación con la Búsqueda de Google con la fundamentación con Elasticsearch para conectar el modelo con el conocimiento mundial, una amplia gama de temas o información actualizada de Internet.
Modelos admitidos
Los siguientes modelos admiten la fundamentación con Elasticsearch solo con entrada de texto:
- Gemini 2.5 Flash-Lite
- Gemini 2.5 Flash con audio nativo de la API Live (versión preliminar)
- Gemini 2.0 Flash con la API Live (versión preliminar)
- Gemini 2.5 Pro
- Gemini 2.5 Flash
- Gemini 2.0 Flash
Configurar una plantilla de búsqueda en Elasticsearch
En esta sección se explica cómo puedes usar tu instancia de Elasticsearch para basarte en los datos almacenados en ella.
Prácticas recomendadas
Para obtener las mejores respuestas fundamentadas, sigue estos principios al crear una plantilla de búsqueda:
Incluya solo datos relevantes y útiles. Por ejemplo, en un catálogo de productos, especificar una URL de imagen puede no ayudar al LLM a responder a peticiones sobre las propiedades de los productos, a menos que la petición solicite específicamente una URL. Del mismo modo, no incluyas vectores de incrustación en la respuesta.
La fundamentación elimina los resultados de Elasticsearch que no son muy relevantes para tus peticiones. Debe proporcionar un número mayor de resultados de Elasticsearch para captar todo el contexto pertinente.
Los datos de los resultados pueden estar en un campo o repartidos en varios.
Plantillas de ejemplo
Puedes usar tus plantillas de búsqueda. Sin embargo, te recomendamos que utilices la plantilla de búsqueda kNN genérica con la base de Elasticsearch. Para ver más plantillas de búsqueda, consulta el repositorio de GitHub.
Esta búsqueda semántica con Vertex AI es una búsqueda kNN genérica.
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
}
]
}
}
}
Generar respuestas fundamentadas con Elasticsearch
Consola
Para usar Elasticsearch en la Google Cloud consola, haz lo siguiente:
Ve a la página Crear petición de Vertex AI Studio.
En el panel Configuración, para fundamentar tus datos, haz clic en el interruptor Fundamentación: tus datos.
En el panel Personalizar Grounding, selecciona Elasticsearch.
Introduce el endpoint en el campo Endpoint de Elasticsearch.
Introduce la clave de API en el campo Clave de API de Elasticsearch.
Introduce el índice en el campo Índice de Elasticsearch.
Introduce la plantilla de búsqueda en el campo Plantilla de búsqueda de Elasticsearch.
Ajusta el número de hits moviendo el control deslizante Número de hits.
Haz clic en Guardar.
Introduce tu petición.
Haz clic en Enviar.
Entender tu respuesta
Si la petición de tu modelo se basa correctamente en los almacenes de datos de Elasticsearch mediante Vertex AI Studio o la API, las respuestas del modelo incluirán metadatos con citas y contenido de origen. Si la relevancia de la fuente es baja o la información está incompleta en la respuesta del modelo, es posible que no se proporcionen metadatos y que la respuesta a la petición no esté fundamentada.
REST
En esta sección se explica cómo usar la API de Vertex AI para fundamentar las respuestas de tu LLM.
Requisitos previos
Para poder fundamentar las respuestas de los LLMs con Elasticsearch, debes completar lo siguiente:
Activa la API de Vertex AI: asegúrate de que la API de Vertex AI esté habilitada en tu Google Cloud proyecto.
Instala la CLI de Google Cloud e inicia sesión en ella: instala e inicializa la herramienta de línea de comandos gcloud CLI.
Configuración de Elasticsearch: usa un clúster y un índice de Elasticsearch que quieras usar para la fundamentación. Obtén la siguiente información de tu configuración de Elasticsearch:
- Endpoint: la URL de tu clúster de Elasticsearch.
- Nombre del índice: el nombre del índice que quieres buscar, como my-data-index.
- Clave de API: una clave de API que permite acceder a tu clúster de Elasticsearch. La clave de API debe empezar por el prefijo ApiKey.
Crea una plantilla de búsqueda de Elasticsearch: usa una fuente de datos de Elasticsearch que utilice una plantilla de referencia que devuelva datos de resultados para la fundamentación.
Acceso a la API
Sigue estas instrucciones para fundamentar Gemini con tu fuente de datos de Elasticsearch mediante la API de Vertex AI.
Preparar una solicitud de generación fundamentada
Para enviar una petición de texto y fundamentarla con Elasticsearch, envía una solicitud POST a la API de Vertex AI. Como mínimo, debes proporcionar el cuerpo de la solicitud. Asegúrate de hacer las siguientes sustituciones:
- QUERY: la petición de texto para fundamentar.
- ELASTIC_SEARCH_ENDPOINT: ruta absoluta del endpoint del recurso de Elasticsearch que se va a usar.
- ELASTIC_SEARCH_API_KEY: la clave de API del endpoint de datos de Elasticsearch.
- INDEX_NAME: nombre del índice de Elasticsearch que se usa para la fundamentación.
- SEARCH_TEMPLATE_NAME: la plantilla de búsqueda de Elasticsearch que se usa para la fundamentación.
- NUM_HITS: número de resultados devueltos de la fuente de datos de Elasticsearch y utilizados para la fundamentación.
Cuerpo JSON de la solicitud:
{
"contents": [
{
"role": "user",
"parts": [
{
"text": "QUERY"
}
]
}
],
"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",
}
}
}
}]
}
Para obtener más información sobre otros campos de la API, como las instrucciones del sistema y las conversaciones de varias interacciones, consulta la guía para principiantes de la IA generativa.
Enviar la solicitud a la API
Puedes guardar el cuerpo de la solicitud en un archivo llamado request.json
.
A continuación, ejecuta la solicitud a la API POST y haz las siguientes sustituciones:
- LOCATION: la región en la que se procesará la solicitud. Para obtener más información sobre las ubicaciones disponibles, consulta Ubicaciones de la IA generativa en Vertex AI.
- PROJECT_ID: tu ID de proyecto de Google Cloud . Para obtener más información sobre los IDs de proyecto, consulta el artículo Crea y gestiona proyectos.
- MODEL_ID: ID del modelo 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"
Deberías recibir una respuesta JSON similar a la siguiente:
{
"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],
},
],
},
}
],
}
Entender tu respuesta
La respuesta de ambas APIs incluye el texto generado por el LLM, que se denomina candidato. Si la petición de tu modelo se basa correctamente en tu fuente de datos de Elasticsearch, las respuestas incluirán metadatos de fundamentación, que identifican las partes de la respuesta que se han derivado de tus datos de Elasticsearch. Sin embargo, puede que estos metadatos no se proporcionen por varios motivos y que la respuesta a la petición no se base en información. Entre estos motivos se incluyen la baja relevancia de la fuente o la información incompleta en la respuesta del modelo.
A continuación, se muestra un desglose de los datos de salida:
- Rol: indica el remitente de la respuesta fundamentada. Como la respuesta siempre contiene texto fundamentado, el rol siempre es
model
. - Texto: la respuesta fundamentada generada por el LLM.
- Metadatos de fundamentación: información sobre la fuente de fundamentación, que contiene los siguientes elementos:
- Fragmentos de información de base: una lista de resultados de tu índice de Elasticsearch que respaldan la respuesta.
- Fuentes: información sobre una afirmación específica de la respuesta que se puede usar para mostrar citas:
- Segmento: parte de la respuesta del modelo que se basa en un fragmento de información.
- Índice del fragmento de información de base: índice de los fragmentos de información de base de la lista de fragmentos de información de base que corresponde a esta reclamación.
- Puntuaciones de confianza: número entre 0 y 1 que indica el grado de fundamentación de la afirmación en el conjunto de fragmentos de fundamentación proporcionado. No disponible en Gemini 2.5 Pro, Gemini 2.5 Flash ni versiones posteriores.
Siguientes pasos
- Para saber cómo enviar solicitudes de peticiones de chat, consulta Conversación de varios turnos.
- Para obtener información sobre las prácticas recomendadas de la IA responsable y los filtros de seguridad de Vertex AI, consulta el artículo Prácticas recomendadas de seguridad.