La gestión y recuperación de información en bases de datos ha evolucionado considerablemente en los últimos años, especialmente con la integración de tecnologías avanzadas de inteligencia artificial y aprendizaje automático. En este contexto, la extensión experimental de Postgres destinada a soportar procesos completos de Recuperación Aumentada por Generación, conocida como RAG, emerge como una herramienta innovadora que combina extracción, procesamiento y generación de texto para optimizar la manera en que se manejan grandes volúmenes de datos textuales. Postgres, reconocido por su robustez y flexibilidad como sistema de gestión de bases de datos relacional, amplía sus capacidades mediante esta extensión que facilita la creación de pipelines de RAG de extremo a extremo. Esta tecnología permite no solo almacenar y consultar datos, sino también integrar funcionalidades inteligentes que involucran la extracción de texto, la segmentación en fragmentos procesables, la generación de representaciones vectoriales (embeddings) y el reordenamiento de información relevante para responder consultas complejas. Uno de los aspectos fundamentales de esta extensión es su capacidad para extraer texto desde diversos formatos de archivo, ofreciendo soporte inicial para documentos PDF y archivos .
docx, además de la conversión de HTML a Markdown. Aunque actualmente no incluye soporte para OCR ni procesamiento de disposiciones complejas, la extracción nativa se realiza eficazmente utilizando bibliotecas especializadas como pdf-extract y docx-rs, lo que facilita la incorporación de contenido no estructurado dentro del propio entorno de la base de datos. El siguiente paso tras la extracción es la segmentación o chunking del texto para generar fragmentos manejables. Esta técnica es crucial para procesar información en modelos de inteligencia artificial, ya que divide textos largos en trozos con límite en cantidad de caracteres o tokens, además de permitir solapamientos entre fragmentos para preservar el contexto durante el procesamiento. La extensión ofrece métodos de chunking tanto por conteo de caracteres como por conteo de tokens, siendo este último más preciso para modelos que operan con secuencias de tokens en lugar de caracteres simples.
El corazón del sistema RAG basado en Postgres son las capacidades de creación y manipulación de embeddings y la reordenación (reranking) de resultados. La extensión proporciona modelos locales que se ejecutan directamente en el servidor de base de datos, ya sea en CPU o GPU, utilizando modelos compactos con aproximadamente 33 millones de parámetros. Estos modelos permiten tokenizar el texto, generar embeddings y calcular puntuaciones de relevancia para fragmentos de texto de manera eficiente, sin depender totalmente de servicios externos, lo que reduce latencias y protege la privacidad. Para expandir aún más las posibilidades, la extensión también integra llamadas a modelos remotos disponibles vía APIs REST sobre HTTPS. Esto incluye el acceso a modelos avanzados de OpenAI, Anthropic, Fireworks.
ai y Voyage AI para generación de embeddings y respuestas mediante chat. Así, es posible combinar la capacidad local con el poder de modelos más grandes y sofisticados alojados en la nube, logrando un balance entre rapidez, coste y precisión según el caso de uso. La integración de todas estas funcionalidades dentro de Postgres agiliza la creación de pipelines complejos en las que se almacenan documentos, se extrae y segmenta la información, se generan representaciones vectoriales, y finalmente, se realiza la consulta y generación de respuestas basadas en el contexto más relevante. Por medio de SQL y funciones nativas, los desarrolladores pueden implementar flujos de procesamiento inteligentes sin salir del entorno de base de datos, lo que simplifica considerablemente la infraestructura y optimiza la eficiencia. Uno de los puntos destacados es el diseño del sistema para manejar múltiples procesos y evitar el consumo desmedido de memoria en tareas de reranking o embedding.
Esto se consigue mediante un proceso o trabajador en segundo plano multihilo que se inicia con el lanzamiento de Postgres y carga los modelos bajo demanda. Esta arquitectura asegura estabilidad y escalabilidad en entornos empresariales donde la simultaneidad y el rendimiento son críticos. La documentación recomienda la instalación previa de pgvector, una extensión que añade soporte para vectores y operaciones de similitud, base para trabajar con embeddings en Postgres. Luego, la compilación y configuración de la extensión experimental requiere el uso de Rust y pgrx, una herramienta especializada para desarrollo de extensiones Postgres en Rust. Se destaca la compatibilidad actual con sistemas Linux y macOS, mientras que el soporte para Windows aún no está desarrollado.
En cuanto a la generación y uso de modelos, la extensión ofrece la posibilidad de incluir modelos .onnx de forma embebida en las extensiones o descargarlos de un repositorio controlado bajo demanda al momento del primer uso. Esto permite una mayor flexibilidad, especialmente en ambientes donde los recursos o políticas de red restringen la incorporación de modelos pesados. El uso práctico se ve reflejado en ejemplos donde documentos PDF son convertidos a texto dentro de la base de datos, segmentados y almacenados junto con sus embeddings. Al consultar, un texto de pregunta se convierte en embedding y se busca la mayor similitud en los fragmentos de texto almacenados, seguidamente se aplica reranking para seleccionar los fragmentos más relevantes.
Finalmente, se puede enviar esta información a un modelo de chat remoto para generar respuestas precisas y contextuales, conformando un pipeline RAG completo. El impacto de esta extensión es considerable para sectores que manejan grandes cantidades de textos, como legal, financiero, académico o de atención al cliente. La posibilidad de consultar información de manera semántica e integrada directamente en el motor de base de datos abre vías para construir aplicaciones inteligentes, sistemas de consulta avanzados y asistentes virtuales altamente especializados. Además, la licencia Apache 2.0 que cubre el proyecto permite la adopción y adaptación libre para desarrollos comerciales y comunitarios, facilitando la colaboración y el avance tecnológico en el ámbito de bases de datos inteligentes.