Descripción general de RAG Engine

Anteriormente llamado LlamaIndex en Vertex AI y, más recientemente, Knowledge Engine, RAG Engine es un framework de datos para desarrollar aplicaciones de modelos de lenguaje grandes (LLM) adaptados al contexto. El aumento del contexto se produce cuando se aplica un LLM a tus datos. Esto implemente generación aumentada y de recuperación (RAG).

Un problema común con los LLM es que no comprenden el conocimiento privado, es decir, los datos de tu organización. Con RAG Engine, puedes enriquecer el contexto del LLM con información privada adicional, ya que el modelo puede reducir las alucinaciones y responder preguntas con mayor precisión.

Cuando se combinan fuentes de conocimiento adicionales con el conocimiento existente que tienen los LLM, se proporciona un mejor contexto. El contexto mejorado junto con la consulta mejoran la calidad de la respuesta del LLM.

Los siguientes conceptos son clave para comprender RAG Engine. Estos conceptos se enumeran en el orden del proceso de generación aumentada y de recuperación (RAG).

  1. Transferencia de datos: Transferencia de datos de diferentes fuentes. Por ejemplo, archivos locales, Cloud Storage y Google Drive.

  2. Transformación de datos: Es la conversión de los datos para prepararlos para el indexado. Por ejemplo, los datos se dividen en fragmentos.

  3. Embedding: Representaciones numéricas de palabras o fragmentos de texto. Estos números capturan el significado semántico y el contexto del texto. Las palabras o textos similares o relacionados tienden a tener incrustaciones similares, lo que significa que están más cerca unas de otras en el espacio vectorial de alta dimensión.

  4. Indexación de datos: RAG Engine crea un índice llamado corpus. El índice estructura la base de conocimientos para optimizar la búsqueda. Por ejemplo, el índice es como el índice detallado de un libro de consulta masiva.

  5. Recuperación: Cuando un usuario hace una pregunta o proporciona una instrucción, el componente de recuperación en el motor de RAG busca en su base de conocimiento la información relevante para la consulta.

  6. Generación: La información recuperada se convierte en el contexto que se agrega a la consulta original del usuario como guía para que el modelo de IA generativa genere respuestas relevantes y fundamentadas en los hechos.

Modelos de IA generativa que admiten RAG

En esta sección, se enumeran los modelos que admiten RAG.

Modelos de Gemini

En la siguiente tabla, se enumeran los modelos de Gemini y sus versiones que admiten el motor de RAG:

Modelo Versión
Gemini 1.5 Flash gemini-1.5-flash-002
gemini-1.5-flash-001
Gemini 1.5 Pro gemini-1.5-pro-002
gemini-1.5-pro-001
Gemini 1.0 Pro gemini-1.0-pro-001
gemini-1.0-pro-002
Gemini 1.0 Pro Vision gemini-1.0-pro-vision-001
Gemini gemini-experimental

Modelos implementados automáticamente

RAG Engine admite todos los modelos de Model Garden.

Usa RAG Engine con los extremos de modelos abiertos que implementaste por tu cuenta.

  # Create a model instance with your self-deployed open model endpoint
  rag_model = GenerativeModel(
      "projects/PROJECT_ID/locations/REGION/endpoints/ENDPOINT_ID",
      tools=[rag_retrieval_tool]
  )

Modelos con APIs administradas en Vertex AI

Los modelos con APIs administradas en Vertex AI que admiten el motor de RAG incluyen los siguientes:

En la siguiente muestra de código, se muestra cómo usar la API de GenerateContent de Gemini para crear una instancia de modelo generativo. El ID del modelo, /publisher/meta/models/llama-3.1-405B-instruct-maas, se encuentra en la tarjeta de modelo.

  # Create a model instance with Llama 3.1 MaaS endpoint
  rag_model = GenerativeModel(
      "projects/PROJECT_ID/locations/REGION/publisher/meta/models/llama-3.1-405B-instruct-maas",
      tools=[rag_retrieval_tool]
  )

En la siguiente muestra de código, se muestra cómo usar la API de ChatCompletions compatible con OpenAI para generar una respuesta del modelo.

  # Generate a response with Llama 3.1 MaaS endpoint
  response = client.chat.completions.create(
      model="meta/llama-3.1-405b-instruct-maas",
      messages=[{"role": "user", "content": "your-query"}],
      extra_body={
          "extra_body": {
              "google": {
                  "vertex_rag_store": {
                      "rag_resources": {
                          "rag_corpus": rag_corpus_resource
                      },
                      "similarity_top_k": 10
                  }
              }
          }
      },
  )

Modelos de incorporación

Los modelos de incorporación se usan para crear un corpus y para la búsqueda y recuperación durante la generación de respuestas. En esta sección, se enumeran los modelos de incorporación compatibles.

  • textembedding-gecko@003
  • textembedding-gecko-multilingual@001
  • text-embedding-004 (predeterminada)
  • text-multilingual-embedding-002
  • textembedding-gecko@002 (solo versiones optimizadas)
  • textembedding-gecko@001 (solo versiones optimizadas)

Para obtener más información sobre el ajuste de modelos de incorporación, consulta Ajusta los modelos de texto.

También se admiten los siguientes modelos de incorporación abiertos. Puedes encontrarlos en Model Garden.

  • e5-base-v2
  • e5-large-v2
  • e5-small-v2
  • multilingual-e5-large
  • multilingual-e5-small

Tipos de documentos compatibles con RAG

Solo se admiten documentos de texto. En la siguiente tabla, se muestran los tipos de archivos y sus límites de tamaño:

Tipo de archivo Límite de tamaño de archivo
Documentos de Google 10 MB cuando se exporta desde Google Workspace
Dibujos de Google 10 MB cuando se exporta desde Google Workspace
Presentaciones de Google 10 MB cuando se exporta desde Google Workspace
Archivo HTML 10 MB
Archivo JSON 1 MB
Markdown File 10 MB
Presentaciones de Microsoft PowerPoint (archivo PPTX) 10 MB
Documentos de Microsoft Word (archivo DOCX) 50 MB
Archivo PDF 50 MB
Archivo de texto 10 MB

Es posible usar RAG Engine con otros tipos de documentos, pero puede generar respuestas de menor calidad.

Fuentes de datos compatibles con RAG

Se admiten las siguientes fuentes de datos:

  • Sube un archivo local: Es una carga de un solo archivo con upload_file (hasta 25 MB), que es una llamada síncrona.
  • Cloud Storage: Importa archivos desde Cloud Storage.
  • Google Drive: Importa un directorio desde Google Drive.

    Se deben otorgar los permisos correctos a la cuenta de servicio para importar archivos. De lo contrario, no se importarán archivos ni se mostrará ningún mensaje de error. Para obtener más información sobre los límites de tamaño de los archivos, consulta Tipos de documentos admitidos.

    Para autenticar y conceder permisos, haz lo siguiente:

    1. Vete a la página IAM de tu proyecto de Google Cloud.
    2. Selecciona Incluir asignación de rol proporcionada por Google.
    3. Busca la cuenta de servicio del agente de servicio de datos de Vertex AI RAG.
    4. Haz clic en compartir en la carpeta de la unidad, y compartir con la cuenta de servicio.
    5. Otorga permiso Viewer a la cuenta de servicio en tu carpeta o archivo de Google Drive. El ID del recurso de Google Drive se encuentra en la URL web.
  • Slack: Importa archivos de Slack con un conector de datos.

  • Jira: Importa archivos de Jira con un conector de datos.

Para obtener más información, consulta la referencia de la API de RAG.

Ajusta tus transformaciones de RAG

Después de transferir un documento, RAG Engine ejecuta un conjunto de transformaciones para preparar los datos para la indexación. Puedes controlar tus casos de uso con los siguientes parámetros:

Parámetro Descripción
chunk_size Cuando los documentos se transfieren a un índice, se dividen en fragmentos. El parámetro chunk_size (en tokens) especifica el tamaño del fragmento. El tamaño de fragmento predeterminado es de 1,024 tokens.
chunk_overlap De forma predeterminada, los documentos se dividen en fragmentos con una cierta cantidad de superposición para mejorar la relevancia y la calidad de la recuperación. La superposición de fragmentos predeterminada es de 200 tokens.

Un tamaño de fragmento más pequeño significa que las incorporaciones son más precisas. Un tamaño de fragmento más grande significa que las incorporaciones pueden ser más generales, pero pueden pasar por alto detalles específicos.

Por ejemplo, si conviertes 200 palabras en lugar de 1,000 palabras en un array de incorporaciones de la misma dimensión, puedes perder detalles. Este también es un buen ejemplo de cuándo consideras el límite de longitud del contexto del modelo. Es posible que un gran fragmento de texto no se ajuste a un modelo de ventana pequeña.

Cuotas de RAG

Para que cada servicio realice la generación de aumento de recuperación (RAG) con el motor de RAG, se aplican las siguientes cuotas, que se miden como solicitudes por minuto (RPM).
Servicio Cuota Métrica
APIs de administración de datos de RAG Engine 60 rpm VertexRagDataService requests per minute per region
API RetrievalContexts 1,500 RPM VertexRagService retrieve requests per minute per region
base_model: textembedding-gecko 1,500 RPM Online prediction requests per base model per minute per region per base_model

Un filtro adicional que puedes especificar es base_model: textembedding-gecko
Se aplican los siguientes límites:
Servicio Límite Métrica
Solicitudes ImportRagFiles simultáneas 3 rpm VertexRagService concurrent import requests per region
Cantidad máxima de archivos por solicitud ImportRagFiles 10,000 VertexRagService import rag files requests per region

Para obtener más información sobre los límites de frecuencia y las cuotas, consulta Límites de frecuencia de la IA generativa en Vertex AI.

Parámetros de recuperación

La siguiente tabla incluye los parámetros de recuperación:

Parámetro Descripción
similarity_top_k Controla la cantidad máxima de contextos que se recuperan.
vector_distance_threshold Solo se consideran los contextos con una distancia menor que el umbral.

Administra tu base de conocimiento (corpus) de RAG

En esta sección, se describe cómo puedes administrar tu corpus para las tareas de RAG mediante la administración de índices y archivos.

Administración de corpus

Un corpus, también conocido como índice, es una colección de documentos o fuente de información. Se puede consultar el corpus para recuperar contextos relevantes para la generación de respuestas. Cuando se crea un corpus por primera vez, el proceso puede tardar un minuto más.

Se admiten las siguientes operaciones de corpus:

Operación Descripción Parámetros Ejemplos
Crea un corpus de RAG. Crea un índice para importar o subir documentos. Cómo crear parámetros Crear ejemplo
Actualiza un corpus de RAG. Actualiza un índice creado anteriormente para importar o subir documentos. Actualiza los parámetros Ejemplo de actualización
Enumera un corpus de RAG. Enumera todos los índices. Lista de parámetros Ejemplo de lista
Obtén un corpus de RAG. Obtén los metadatos que describen el índice. Obtén los parámetros Obtener ejemplo
Borra un corpus de RAG. Borra el índice. Cómo borrar parámetros Ejemplo de eliminación

No se admiten operaciones simultáneas en los corpus. Para obtener más información, consulta la referencia de la API de RAG.

Administración de archivos

Se admiten las siguientes operaciones de archivos:

Operación Descripción Parámetros Ejemplos
Sube un archivo RAG. Sube un archivo del almacenamiento local con información adicional que proporcione contexto para al LLM para generar respuestas más precisas. Parámetros de carga Ejemplo de carga
Importa archivos RAG. Importa un conjunto de archivos desde otro almacenamiento a una ubicación de almacenamiento. Parámetros de importación Ejemplo de importación
Obtén un archivo RAG. Obtén detalles sobre un archivo RAG para que lo use el LLM. Obtén los parámetros Obtener ejemplo
Borra un archivo RAG. Sube un archivo del almacenamiento local con información adicional que proporcione contexto para al LLM para generar respuestas más precisas. Cómo borrar parámetros Ejemplo de eliminación

Para obtener más información, consulta la referencia de la API de RAG.

¿Qué sigue?