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).
Transferencia de datos: Transferencia de datos de diferentes fuentes. Por ejemplo, archivos locales, Cloud Storage y Google Drive.
Transformación de datos: Es la conversión de los datos para prepararlos para el indexado. Por ejemplo, los datos se dividen en fragmentos.
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.
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.
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.
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:
- Vete a la página IAM de tu proyecto de Google Cloud.
- Selecciona Incluir asignación de rol proporcionada por Google.
- Busca la cuenta de servicio del agente de servicio de datos de Vertex AI RAG.
- Haz clic en compartir en la carpeta de la unidad, y compartir con la cuenta de servicio.
- 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 |
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?
- Para obtener información sobre los límites de tamaño de los archivos, consulta Tipos de documentos admitidos.
- Para obtener información sobre las cuotas relacionadas con RAG Engine, consulta Cuotas de RAG Engine.
- Para obtener información sobre la personalización de parámetros, consulta Parámetros de recuperación.
- Para obtener más información sobre la API de RAG, consulta API de RAG Engine.
- Para obtener más información sobre la fundamentación, consulta Descripción general de la puesta a tierra.
- Para obtener más información sobre la diferencia entre la fundamentación y la RAG, consulta Cómo fundamentar respuestas con RAG.
- Para obtener más información sobre la IA generativa en Vertex AI, consulta la Descripción general de la IA generativa en Vertex AI.
- Para obtener más información sobre la arquitectura de RAG, consulta Infraestructura para una aplicación de IA generativa compatible con RAG mediante Vertex AI.