API de RAG
Configure la API de Generación Aumentada por Recuperación (RAG) para la indexación y recuperación de documentos utilizando Langchain y FastAPI. Esta API se integra con LibreChat para proporcionar respuestas basadas en el contexto a partir de archivos cargados por el usuario.
La API de RAG indexa los archivos subidos por el usuario y recupera pasajes relevantes para aumentar sus prompts, brindando a LibreChat respuestas con conciencia del contexto basadas en sus documentos. Se ejecuta como un servicio de FastAPI independiente respaldado por una base de datos PostgreSQL + pgvector.
¿Nuevo en RAG?
La Presentación de la API de RAG explica el concepto con más detalle y enlaza a un video útil. Esta página cubre la configuración y los ajustes.
Disponibilidad
RAG funciona con Agents, así como con Custom Endpoints, OpenAI, Azure OpenAI, Anthropic y Google.
Los Assistants de OpenAI tienen su propia implementación de RAG a través de la capacidad "Retrieval" (detalles aquí). El uso de la API de RAG con la Assistants API sigue valiendo la pena, ya que OpenAI cobra tanto por el almacenamiento de archivos como por Retrieval. Esta integración está planificada para una futura actualización.
Inicio rápido con Docker
Para Docker, la API de RAG ya está configurada tanto en los archivos docker-compose.yml como en deploy-compose.yml predeterminados, incluyendo el valor de RAG_API_URL. Solo necesitas asegurarte de estar ejecutando la imagen y los archivos compose más recientes. Consulta la guía de actualización de LibreChat para Docker si no estás seguro de cómo actualizar.
Archivo .env compartido
Con la configuración predeterminada de Docker, el archivo .env se comparte entre LibreChat y la RAG API. Define las variables de RAG en ese mismo archivo. La lista completa se encuentra en el RAG API README.
Elija el proveedor de embeddings que desea utilizar.
Usa RAG con embeddings de OpenAI. Esta es la configuración predeterminada.
Establezca la URL de la API de RAG. Añada lo siguiente a su archivo .env:
RAG_API_URL=http://host.docker.internal:8000Proporcione una clave de API de OpenAI (si es necesario). Si su clave de API de OpenAI está configurada como user_provided, añada una clave para las incrustaciones (embeddings). Omita este paso si ya suministró la clave de OpenAI en su archivo .env.
RAG_OPENAI_API_KEY=sk-your-openai-api-key-exampleInicia los contenedores.
docker compose up -dUsa RAG con embeddings de Hugging Face.
Configure el proveedor. Añada lo siguiente a su archivo .env:
RAG_API_URL=http://host.docker.internal:8000
EMBEDDINGS_PROVIDER=huggingface
HF_TOKEN=hf_xxxxxxxxxxxxxxxxxxxxxxxCambie a la imagen completa de la API de RAG. Actualice su archivo docker-compose.override.yml:
version: '3.4'
services:
rag_api:
image: registry.librechat.ai/danny-avila/librechat-rag-api-dev:latestInicia los contenedores.
docker compose up -dUsa RAG con embeddings locales de Ollama.
Requisito previo
Necesitas Ollama y el modelo de embedding nomic-embed-text. Descárgalo con ollama pull nomic-embed-text.
Configure el proveedor. Añada lo siguiente a su archivo .env:
RAG_API_URL=http://host.docker.internal:8000
EMBEDDINGS_PROVIDER=ollama
OLLAMA_BASE_URL=http://host.docker.internal:11434
EMBEDDINGS_MODEL=nomic-embed-textCambie a la imagen completa de la API de RAG. Actualice su archivo docker-compose.override.yml:
version: '3.4'
services:
rag_api:
image: registry.librechat.ai/danny-avila/librechat-rag-api-dev:latest
# If running on Linux
# extra_hosts:
# - "host.docker.internal:host-gateway"Inicia los contenedores.
docker compose up -dLite vs. full image
Docker utiliza la imagen "lite" de la RAG API de forma predeterminada (registry.librechat.ai/danny-avila/librechat-rag-api-dev-lite:latest), la cual solo admite embeddings remotos de OpenAI o de un servicio remoto de HuggingFace/Ollama que hayas configurado.
Para embeddings locales, cambie la imagen en el archivo compose a la compilación completa, registry.librechat.ai/danny-avila/librechat-rag-api-dev:latest. Realice este cambio en su Docker Compose Override File. Consulte docker-compose.override.yml.example en la raíz del proyecto para ver un ejemplo.
Si deseas un archivo compose que incluya solo la base de datos PostgreSQL + pgvector y la API de Python, consulta rag.yml en la raíz del proyecto.
Almacenamiento de base de datos
Los archivos compose predeterminados almacenan los datos de pgvector/PostgreSQL en el volumen pgdata2 gestionado por Docker. Esto es intencional: los archivos de la base de datos no necesitan ser editados directamente desde el host, y un volumen gestionado evita problemas comunes de propiedad y permisos. Los archivos editables orientados al usuario (cargas, registros, imágenes, datos de MongoDB y configuración de NGINX) están montados mediante bind-mount en las carpetas del proyecto donde el acceso directo desde el host es útil.
Configuración local
Una configuración sin contenedores requiere más intervención manual. Sigue las instrucciones en el RAG API repo.
Establezca RAG_API_URL en su archivo .env de LibreChat en la ubicación donde la API sea accesible desde su configuración. Esto difiere de Docker, donde el valor ya está establecido en el archivo docker-compose.yml predeterminado.
Configuración
Configure las opciones de la API de RAG a través de variables de entorno en un archivo .env accesible para la API. La mayoría son opcionales, aparte de las credenciales y rutas requeridas por el proveedor que elija. En la configuración predeterminada, solo se requiere RAG_OPENAI_API_KEY.
Variables de entorno
| Key | Type | Description | Example |
|---|---|---|---|
| RAG_API_URL | string | URL del servicio de API de RAG. | RAG_API_URL=http://host.docker.internal:8000 |
| RAG_OPENAI_API_KEY | string | Clave de API de OpenAI para embeddings. Sustituye a OPENAI_API_KEY para RAG. | # RAG_OPENAI_API_KEY=sk-your-key |
| RAG_OPENAI_BASEURL | string | URL base de OpenAI personalizada para incrustaciones RAG. | # RAG_OPENAI_BASEURL= |
| RAG_USE_FULL_CONTEXT | boolean | Obtener el contexto completo del archivo en lugar de los 4 mejores resultados. Predeterminado: false. | # RAG_USE_FULL_CONTEXT=true |
| EMBEDDINGS_PROVIDER | string | Proveedor de embeddings: openai, azure, huggingface, huggingfacetei o ollama. Predeterminado: openai. | # EMBEDDINGS_PROVIDER=openai |
| EMBEDDINGS_MODEL | string | Modelo de embeddings a utilizar. El valor predeterminado depende del proveedor. | # EMBEDDINGS_MODEL=text-embedding-3-small |
| RAG_PORT | number | Puerto donde se ejecuta la RAG API. Predeterminado: 8000. | # RAG_PORT=8000 |
| RAG_HOST | string | Nombre de host para la API de RAG. Predeterminado: 0.0.0.0. | # RAG_HOST=0.0.0.0 |
| COLLECTION_NAME | string | Nombre de la colección del almacén de vectores. Predeterminado: testcollection. | # COLLECTION_NAME=testcollection |
| CHUNK_SIZE | number | Tamaño de los fragmentos de texto. Predeterminado: 1500. | # CHUNK_SIZE=1500 |
| CHUNK_OVERLAP | number | Solapamiento entre fragmentos. Predeterminado: 100. | # CHUNK_OVERLAP=100 |
| OLLAMA_BASE_URL | string | URL base de Ollama al usar embeddings de Ollama. | # OLLAMA_BASE_URL=http://host.docker.internal:11434 |
Precedencia de credenciales
OPENAI_API_KEY funciona para las incrustaciones (embeddings) de RAG, pero RAG_OPENAI_API_KEY lo anula para evitar conflictos de credenciales.
Para obtener la lista completa de variables y sus descripciones, consulta el repositorio de la RAG API.
Uso
Una vez que la RAG API esté en funcionamiento, se integra con LibreChat automáticamente. Cuando un usuario sube archivos a una conversación, la API los indexa y los utiliza para obtener respuestas conscientes del contexto.
Sube archivos a la conversación. Si RAG_API_URL no está configurado o no es accesible, la carga fallará.
Chatea como de costumbre. A medida que el usuario interactúa con el modelo, la API de RAG recupera pasajes relevantes de los archivos indexados según la entrada y los utiliza para aumentar el prompt.
Controla cuándo se consultan los archivos. De forma predeterminada, el almacén de vectores se consulta en cada mensaje nuevo de una conversación que tenga un archivo adjunto. Elabora tus prompts en consecuencia.
Desactive Resend Files en la configuración de la conversación para consultar archivos solo cuando se adjunten explícitamente a un mensaje.
Reutiliza archivos indexados. Sube un archivo una vez y luego adjúntalo a cualquier mensaje o conversación nueva desde el Panel Lateral.
Los archivos deben estar en el almacenamiento "Host". Los archivos de "OpenAI" se tratan de manera diferente y son exclusivos para Assistants, por lo que no deben haberse subido mientras el endpoint de Assistants estaba seleccionado y activo. Vea y gestione sus archivos desde el Panel Lateral.
Solución de problemas
Si tienes problemas al configurar o utilizar la RAG API:
- Confirme que todas las variables de entorno requeridas estén configuradas correctamente en su archivo
.env. - Asegúrate de que la base de datos vectorial esté configurada y accesible.
- Verifique que la clave de API de OpenAI u otras credenciales de proveedor sean válidas.
- Revisa los registros de LibreChat y de la API de RAG en busca de errores o advertencias.
Si el problema persiste, consulta la documentación de la RAG API o pregunta a la comunidad de LibreChat en GitHub Discussions o Discord.
¿Qué te parece esta guía?
Uso de tokens
Esto cubre cómo realizar un seguimiento y controlar el uso de tokens en LibreChat. Aprenderá a ver el contexto y el costo, configurar transacciones, habilitar saldos de usuario y agregar créditos a una cuenta.
Descripción general
Explora las características de LibreChat, incluyendo agentes, integración MCP, ejecución de código, chat multimodal y más.