PocketRAG: motor RAG híbrido serverless en PHP puro
RAGPHPSQLiteBM25EmbeddingsServerless
Motor de Retrieval-Augmented Generation híbrido, construido desde cero en PHP puro — sin Composer, sin extensiones C personalizadas ni demonios en segundo plano — pensado para hosting compartido restrictivo (cPanel) con bajo costo y bajo consumo de recursos.
Reto
Las soluciones RAG modernas suelen exigir bases vectoriales pesadas (Pinecone, Weaviate) y frameworks en Python o Node que el hosting compartido no permite.
Los límites de memoria y max_execution_time en PHP compartido descartan workers largos e índices grandes en memoria.
Objetivo: búsqueda semántica + léxica, agnóstica de proveedor y económica para producción de bajo presupuesto.
Persistencia vectorial ligera — SQLite (knowledge.sqlite) guarda embeddings como blobs binarios con pack('f*'); sin servicio vectorial externo.
Magnitudes precálculadas — las normas vectoriales se calculan en la ingesta asíncrona para evitar miles de operaciones matemáticas en cada chat.
Pool y failover de APIs — cliente con Gemini, Cohere, Groq y OpenAI, rotación de claves en tiempo real y reintento transparente ante HTTP 429.
Sincronización idempotente y freshness check — el corpus Markdown se sincroniza a SQLite; si los archivos cambian y la base vectorial está desfasada, hay fallback a BM25 en memoria para que el LLM no responda con embeddings viejos.
Expansión de sinónimos — expansor de consultas inglés/español que cierra brechas de vocabulario léxico.
Resultado
PocketRAG demuestra que se puede desplegar IA generativa avanzada en infraestructuras legacy: generación de respuestas en latencia sub-segundo, consumo mínimo de CPU/RAM y un mecanismo de migración inmutable entre modelos de embeddings — un diseño resiliente para presupuestos ajustados.