Navigation
Print Share Copy URL
Breadcrumb

RAG Distributed System

Una arquitectura distribuida para sistemas RAG que separa inferencia de indexación.

Introducción

En el desarrollo de sistemas de Retrieval-Augmented Generation (RAG), uno de los mayores desafíos es gestionar los recursos computacionales de manera eficiente. Ejecutar grandes modelos de lenguaje (LLMs) localmente a menudo satura la VRAM, lo que penaliza la velocidad de indexación y recuperación de documentos.

Para resolver esto, he diseñado una arquitectura distribuida que separa las responsabilidades en dos máquinas distintas, optimizando tanto la inferencia como el procesamiento de vectores.

Diagrama de Arquitectura RAG


Arquitectura del Sistema

El sistema se divide en dos componentes principales: la Máquina Cliente (Local) y la Máquina Servidor.

Máquina Cliente (Local)

Esta máquina se encarga de la orquestación, indexación y la interfaz con el usuario.

  • GPU 0 (Primaria): Compartida estratégicamente entre Ollama y Qdrant.
    • Ollama: Se utiliza exclusivamente para generar embeddings rápidos (modelos de 768 dimensiones), lo que permite un procesamiento ágil de los documentos.
    • Qdrant: Motor de base de datos vectorial que aprovecha la aceleración para la indexación HNSW.
  • Arize Phoenix: Una herramienta fundamental para la observabilidad. Recolecta trazas de ejecución de los servicios locales, permitiendo auditar y depurar la recuperación de contexto (retrieval) en tiempo real.
  • MCP Bridge & Indexer: El componente central de lógica de negocio. Se encarga de vigilar los archivos, orquestar los flujos de datos y servir la interfaz para las herramientas de IA.

Máquina Servidor (192.168.0.50)

Esta máquina está dedicada al trabajo pesado de la inferencia del modelo.

  • vLLM: Ejecuta el Modelo de Lenguaje de Gran Tamaño (LLM). Al mantener este proceso en un servidor separado mediante un motor de inferencia altamente optimizado como vLLM o TensorRT-LLM, evitamos saturar la VRAM de la máquina de trabajo principal. Esto garantiza que las inferencias pesadas no afecten el rendimiento del indexador local ni de las herramientas de desarrollo.

Beneficios del Enfoque Distribuido

  1. Eficiencia de VRAM: Al aislar el LLM grande en el servidor, la GPU local puede dedicarse completamente a generar embeddings y realizar búsquedas vectoriales veloces, sin competir por memoria.
  2. Escalabilidad: Se puede actualizar o cambiar el LLM en el servidor (ej. de un modelo de 8B a uno de 70B) sin alterar la lógica de indexación local.
  3. Observabilidad: La integración de Arize Phoenix en el nodo local asegura que cada “Retrieval” pueda ser traceado y evaluado para mitigar alucinaciones.

Puedes encontrar el código fuente, scripts de despliegue y configuraciones de Docker Compose en el repositorio: 87maxi/rag_distributed_system en GitHub.