En esta página, se explica cómo puedes usar tu instancia de Elasticsearch para basarte en tus datos.
Fundamenta Gemini con Elasticsearch
La alineación implica usar conjuntos de datos públicos y privados para proporcionar contexto y hechos que fundamenten las respuestas del modelo de lenguaje grande (LLM). Si fundamentas con Elasticsearch, puedes aprovechar tus índices de Elasticsearch existentes para mejorar la calidad y confiabilidad de los resultados de Gemini, reducir las alucinaciones y ayudar a garantizar que las respuestas sean relevantes para tus datos. Esto te permite compilar aplicaciones de 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 fundamentar una respuesta en hasta 10 fuentes de datos a la vez. Puedes combinar la fundamentación con Elasticsearch con la Fundamentación con la Búsqueda de Google para conectar el modelo con el conocimiento mundial, una amplia variedad de temas o información actualizada en Internet.
Modelos compatibles
Los siguientes modelos admiten la fundamentación con Elasticsearch solo con entrada de texto:
Configura 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 de justificación, usa estos principios cuando crees una plantilla de búsqueda:
Incluye solo datos relevantes y útiles. Por ejemplo, en un catálogo de productos, especificar una URL de imagen podría no ayudar al LLM a responder instrucciones sobre las propiedades del producto, a menos que la instrucción solicite específicamente una URL. Del mismo modo, evita generar vectores de inserción.
La fundamentación quita los resultados de Elasticsearch con baja relevancia para tus instrucciones. Debes proporcionar una mayor cantidad de resultados de Elasticsearch para capturar todo el contexto relevante.
Los datos de los resultados pueden estar en un campo o distribuidos en varios.
Plantillas de muestra
Puedes usar tus plantillas de búsqueda. Sin embargo, te recomendamos que uses la plantilla de búsqueda genérica de kNN con la conexión a tierra de Elasticsearch. Para obtener plantillas de búsqueda adicionales, consulta el repositorio de GitHub.
Esta búsqueda semántica con Vertex AI es una búsqueda genérica de kNN.
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
}
]
}
}
}
Genera respuestas fundamentadas con Elasticsearch
Console
Para realizar la conexión con Elasticsearch en la consola de Google Cloud, haz lo siguiente:
Ve a Vertex AI Studio y, luego, a la página Create prompt.
En el panel Configuración, para conectar a tierra tus datos, haz clic en el botón de activación Conexión a tierra: Tus datos.
En el panel Personalizar puesta a tierra, selecciona Elasticsearch.
Ingresa el extremo en el campo Extremo de Elasticsearch.
Ingresa la clave de API en el campo Clave de API de Elasticsearch.
Ingresa el índice en el campo Índice de Elasticsearch.
Ingresa la plantilla de búsqueda en el campo Plantilla de búsqueda de Elasticsearch.
Para ajustar la cantidad de hits, mueve el control deslizante Cantidad de hits.
Haz clic en Guardar.
Ingresa tu instrucción.
Haz clic en Enviar.
Comprende tu respuesta
Si la instrucción de tu modelo se fundamenta correctamente en los almacenes de datos de Elasticsearch con Vertex AI Studio o la API, las respuestas del modelo incluirán metadatos con citas y contenido de origen. Si se produce una baja relevancia de la fuente o información incompleta en la respuesta del modelo, es posible que no se proporcionen metadatos, y la respuesta a la instrucción no se basará en ellos.
REST
En esta sección, se explica cómo usar la API de Vertex AI para fundamentar tus respuestas de LLM.
Requisitos previos
Antes de poder fundamentar las respuestas de LLM con Elasticsearch, debes completar lo siguiente:
Activa la API de Vertex AI: Asegúrate de que la API de Vertex AI esté habilitada para tu Google Cloud proyecto.
Instala la CLI de Google Cloud CLI y accede a ella: Instala y, luego, inicializa la herramienta de línea de comandos de gcloud CLI.
Configuración de Elasticsearch: Usa un clúster de Elasticsearch y un índice existentes que desees usar para la fundamentación. Obtén la siguiente información de tu configuración de Elasticsearch:
- Extremo: Es la URL de tu clúster de Elasticsearch.
- Nombre del índice: Es el nombre del índice que deseas buscar, como mi-índice-de-datos.
- Clave de API: Es una clave de API que permite el acceso a tu clúster de Elasticsearch. La clave de API debe comenzar con el prefijo ApiKey.
Crea una plantilla de búsqueda de Elasticsearch: Usa una fuente de datos de Elasticsearch que use una plantilla de referencia que devuelva datos de resultados para la puesta a tierra.
Acceso a la API
Sigue las siguientes instrucciones para fundamentar Gemini con tu fuente de datos de Elasticsearch con la API de Vertex AI.
Prepara una solicitud de generación con conexión a tierra
Para enviar una instrucción de texto y basarla en 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 realizar los siguientes reemplazos:
- QUERY: Es la instrucción de texto que se conectará a tierra.
- ELASTIC_SEARCH_ENDPOINT: Es la ruta de acceso absoluta del extremo que debe usar el recurso de Elasticsearch.
- ELASTIC_SEARCH_API_KEY: Es la clave de API del extremo de datos de Elasticsearch.
- INDEX_NAME: Es el nombre del índice de Elasticsearch que se usa para la puesta a tierra.
- SEARCH_TEMPLATE_NAME: Es la plantilla de búsqueda de Elasticsearch que se usa para la puesta a tierra.
- NUM_HITS: Es la cantidad de resultados que se muestran desde la fuente de datos de Elasticsearch y que se usan para la puesta a tierra.
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 los chats de varias vueltas, consulta la guía para principiantes de Generative AI.
Envía la solicitud a la API
Puedes guardar el cuerpo de la solicitud en un archivo llamado request.json
.
Luego, ejecuta la solicitud POST a la API y realiza los siguientes reemplazos:
- LOCATION: Es la región para procesar la solicitud. Para obtener más información sobre las ubicaciones disponibles, consulta IA generativa en ubicaciones de Vertex AI.
- PROJECT_ID: Es el ID de tu Google Cloud proyecto. Para obtener más información sobre los IDs de proyecto, consulta Cómo crear y administrar proyectos.
- MODEL_ID: El 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 que se muestra a continuación:
{
"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],
},
],
},
}
],
}
Comprende tu respuesta
La respuesta de ambas APIs incluye el texto generado por el LLM, que se denomina candidato. Si la instrucción de tu modelo se fundamenta 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 derivaron de tus datos de Elasticsearch. Sin embargo, existen varios motivos por los que es posible que no se proporcionen estos metadatos, y la respuesta a la instrucción no se basará en ellos. 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. Debido a que la respuesta siempre contiene texto basado en la realidad, el rol siempre es
model
. - Text: Es la respuesta fundamentada que genera el LLM.
- Metadatos de puesta a tierra: Información sobre la fuente de puesta a tierra, que contiene los siguientes elementos:
- Fragmentos de justificación: Es una lista de resultados de tu índice de Elasticsearch que apoyan la respuesta.
- Fundamentación: Es la información sobre una afirmación específica dentro de la respuesta que se puede usar para mostrar citas:
- Segmento: Es la parte de la respuesta del modelo que se justifica con un fragmento de justificación.
- Índice de fragmentos de conexión a tierra: Es el índice de los fragmentos de conexión a tierra en la lista de fragmentos de conexión a tierra que corresponde a esta declaración.
- Puntuaciones de confianza: Es un número entre 0 y 1 que indica qué tan fundamentado está el reclamo en el conjunto proporcionado de fragmentos de fundamentación.
¿Qué sigue?
- Para obtener información sobre cómo enviar solicitudes de instrucciones de chat, consulta Chat de varios turnos.
- Para obtener información sobre las prácticas recomendadas de IA responsable y los filtros de seguridad de Vertex AI, consulta Prácticas recomendadas de seguridad.