¿Un sistema RAG confiable, de baja latencia y rentable en una tabla SQL que almacena documentos grandes en campos de texto largos, sin cambiar el esquema existente?
Este no es un problema teórico.
En la mayoría de las empresas, el conocimiento empresarial crítico ya se encuentra dentro de las bases de datos relacionales tradicionales. Propuestas, informes, contratos y artículos, todos almacenados en columnas de TEXTO o TEXTO LARGO, diseñados para agregaciones y concordancia de palabras clave, no para recuperación semántica.
Con la llegada de los LLM, las demandas empresariales han evolucionado hacia la computación estructurada, una comprensión semántica profunda y conocimientos contextuales de una manera conversacional natural.
Por ejemplo:
¿Cuántos proyectos de más de 1 millón de dólares se aprobaron entre 2023 y 2025? Resuma las principales tendencias observadas en tecnología durante los últimos 6 meses. ¿Cuáles han sido los diferenciadores de las propuestas ganadoras en 2025?
Requieren una estrategia de recuperación que pueda decidir cuándo calcular, cuándo buscar semánticamente y cuándo combinar ambos. En este artículo, demostraré una arquitectura Agentic RAG que opera directamente sobre una base de datos SQL tradicional (sin cambios de esquema) y analizaré los principios de diseño necesarios para que sea confiable en producción.
Configuración del sistema
Para esta ilustración, he utilizado un subconjunto del conjunto de datos Social Animal 10K Articles with NLP, que tiene una gran cantidad de artículos de noticias y publicaciones de blog junto con metadatos. La base de datos SQL creada tiene las siguientes columnas: URL, título, autores, fecha de publicación, categoría_artículo, recuento de palabras y contenido completo.
El título puede considerarse como un identificador único (clave principal) del contenido. Las categorías de artículos son tecnología, negocios, deportes, viajes, salud, entretenimiento, política y moda. Los artículos se distribuyen aproximadamente uniformemente entre las categorías. El LLM utilizado es gemini-2.5-flash y FAISS para indexar y almacenar las incrustaciones de vectores. El diseño es aplicable para cualquier elección de LLM o base de datos vectorial.
Arquitectura
Además de incrustar el texto sin formato, reflejamos los metadatos del almacén de vectores con los mismos campos presentes en SQL (excepto el contenido completo). Esto permite el Filtrado, como veremos en los resultados. Para documentos largos, se puede adoptar una estrategia de incrustación y fragmentación de ventanas deslizantes con los metadatos adjuntos a cada incrustación.
El fragmento de código de metadatos se adjunta para idx, fila en df_sql.iterrows(): content = str(row['full_content']).strip() si no es contenido: continuar metadata = { "source": row.get('url', ''), "title": row.get('title', ''), "authors": str(row.get('authors', '')), "article_category": str(row.get('categoría_artículo', 'desconocido')), "fecha_publicada": str(row.get('fecha_publicada', '')), "recuento_palabras": int(row.get('content_word_count', 0)) } doc = Documento(página_contenido=contenido, metadatos=metadatos) documentos.append(doc)
Creamos dos herramientas inteligentes y especializadas que el agente ReAct puede invocar utilizando la siguiente arquitectura. El agente ReAct (enrutador) organiza todo el proceso de consulta al decidir de manera inteligente qué herramienta invocar en función de la naturaleza de la consulta. Utiliza los metadatos y el contexto de consulta para determinar si la herramienta SQL, la herramienta vectorial o un enfoque híbrido es el más apropiado. La siguiente figura muestra el flujo de decisión de la consulta:
Las herramientas son las siguientes:
search_database (herramienta SQL): maneja preguntas que requieren cálculo, agregación o lógica compleja. Ejecuta consultas SQL search_articles (herramienta Vector): Maneja preguntas sobre contenido, tema o entidades específicas. Acepta una consulta en lenguaje natural y, opcionalmente, filtros de metadatos para ejecutar una búsqueda semántica global (por ejemplo: "artículos sobre niños") o buscar un subconjunto de datos (por ejemplo: "filter_authors='XYZ', "query"="artículos").
Como se puede ver en la figura anterior, una consulta puede seguir los siguientes caminos:
Para cálculos (p. ej., cuántos artículos…), desigualdades/rango (p. ej.: artículos publicados entre enero y abril de 2023) o agregaciones (p. ej., cuál es el recuento promedio de palabras…), utilice únicamente la herramienta SQL. La búsqueda semántica, con o sin filtros, utiliza la herramienta Vector como se explicó anteriormente. Consulta híbrida: las consultas híbridas son esenciales cuando se necesitan datos estructurados (por ejemplo, filtrado por fecha) y contenido no estructurado (por ejemplo, búsqueda semántica de artículos). La consulta tiene un criterio de filtro de metadatos (normalmente una categoría o un rango de fechas), para lo cual se utiliza la herramienta SQL para buscar artículos. Luego, la lista de títulos se pasa a la herramienta Vector para realizar una búsqueda semántica solo en esos artículos. Un ejemplo sería “entre marzo y mayo de 2023 hay algún artículo sobre el día de la madre en la moda“
Resultados
A continuación se muestran los resultados de algunas consultas de cada tipo. Sería interesante observar el camino de herramientas seguido en cada caso.
1. “¿Cuáles son los artículos por año y categoría?” — Esta es una consulta de cálculo compleja, por lo que solo se utilizará la herramienta SQL.
El resultado está aquí CONSULTA: ¿cuáles son los artículos por año y categoría? SELECCIÓN DE HERRAMIENTA: – base de datos de búsqueda: {'consulta': "SELECT strftime('%Y', fecha_de_publicación) AS año, categoría_artículo, COUNTDE artículos GRUPO POR año, categoría_artículo"} DOCUMENTOS SELECCIONADOS: – Salida de la herramienta: [('1970', 'negocios', 1), ('2001', 'política', 1), ('2013', 'política', 1), ('2018', 'entretenimiento', 1), ('2020', 'entretenimiento', 1), ('2020', 'deportes', 1), ('2022', 'moda', 1), ('2023', 'negocios', 19), ('2023', 'entretenimiento', 16), ('2023', 'moda', 16), ('2023', 'salud', 18), ('2023', 'política', 16), ('2023', 'deportes', 16), ('2023', 'tecnología', 18), ('2023', 'viajes', 18)] RESULTADO: Aquí está el número de artículos por año y categoría: * 1970: negocios (1) * 2001: política (1) * 2013: política (1) * 2018: entretenimiento (1) * 2020: entretenimiento (1), deportes (1) * 2022: moda (1) * 2023: negocios (19), entretenimiento (16), moda (16), salud (18), política (16), deportes (16), tecnología (18), viajes (18)
2. “¿Qué artículos sobre niños tienes?” — Esto no coincide con ninguna de las categorías de metadatos que componen el esquema, por lo que el agente decide utilizar la herramienta Vector con una búsqueda semántica global.
El resultado está aquí CONSULTA: qué artículos sobre niños tienes SELECCIÓN DE HERRAMIENTA: – artículos_búsqueda: {'query': 'niños'} DOCUMENTOS SELECCIONADOS: – Salida de herramienta: — Documento 1 — Fuente: https://www.filmcompanion.in/features/in Depth-stories/streaming/best-childrens-movies-on-amazon-prime-video-netflix-hotstar-klaus-kung-fu-panda-jagga-jasoos-childrens-day-2020 Título: 10 películas que los niños deberían ver Categoría: entretenimiento Fecha: 2020-11-14 02:30:36 Contenido: En este Día del niño, aquí hay una lista de cuentos diseñados para ayudar a los más pequeños a comprender el mundo que los rodea, aprender lecciones de vida y dejarse deslumbrar por la colorida imaginación. Es un buen momento para ser… – https://www.filmcompanion.in/features/in Depth-stories/streaming/best-childrens-movies-on-amazon-prime-video-netflix-hotstar-klaus-kung-fu-panda-jagga-jasoos-childrens-day-2020 – https://africabusiness.com/2023/04/07/save-the-children-and-thinkmd-expand-partnership-to-improve-the-lives-of-children-globally/ – https://www.tcpalm.com/story/news/education/st-lucie-county-schools/2023/04/11/books-stay-in-st-lucie-county-schools-but-most-move-to-high-school/70098338007/ RESULTADO: Aquí hay algunos artículos sobre niños: 1. 10 películas que los niños deberían ver (entretenimiento) 2. Guardar the Children y THINKMD amplían su asociación para mejorar las vidas de los niños a nivel mundial (salud) 3. La Junta Escolar del Condado de St. Lucie decide mantener los libros cuestionados en las bibliotecas escolares (salud)
3. “¿Cuáles son las tendencias en moda?” — El agente encuentra la categoría = moda y ejecuta la coincidencia semántica utilizando la herramienta Vector con este criterio de filtro.
El resultado está aquí CONSULTA: cuáles son las tendencias en moda SELECCIÓN DE HERRAMIENTA: – search_articles: {'query': 'trends', 'filter_category': 'fashion'} DOCUMENTOS SELECCIONADOS: – Herramienta Salida: — Documento 1 — Fuente: https://www.sightunseen.com/2023/04/the-best-thing-we-saw-in-milan-today-india-mahdavi-for-gebruder-thonet-vienna/ Título: Lo mejor que vimos hoy en Milán: India Mahdavi para Gebrüder Thonet Vienna – Sight Unseen Categoría: moda Fecha: 2023-04-18 12:00:00 Contenido: Cómo vivir con Objetos Lo mejor que vimos hoy en Milán: India Mahdavi para Gebrüder Thonet Vienna Sight Unseen ya está presente en la Feria del Mueble de Milán y os traemos carga… – https://www.sightunseen.com/2023/04/lo-mejor-que-vimos-en-milan-today-india-mahdavi-para-gebruder-thonet-vienna/ – https://themoderndaygirlfriend.com/clean-make-up-skincare-brand-in-2023/ – https://poprazzi.com/the-80s-inspired-jewelry-trend-im-absolutely-fawning-over/ RESULTADO: Los resultados de la búsqueda mencionan las siguientes tendencias en moda: India Mahdavi para Gebrüder Thonet Vienna, maquillaje y cuidado de la piel limpios, y joyas inspiradas en los 80.
4. “cuénteme artículos de tecnología sobre criptografía en 2023”: esta es una consulta híbrida en la que se utilizará la herramienta SQL para obtener los títulos en 2023 para la categoría = tecnología, luego se invocará la herramienta Vector con la consulta = criptografía y la lista de títulos. El resultado se encontrará dentro de ese subconjunto.
El resultado está aquí CONSULTA: cuéntame artículos de tecnología sobre criptografía en 2023 SELECCIÓN DE HERRAMIENTAS: – search_database: {'query': "SELECCIONA el título DE los artículos DONDE artículo_categoría = 'tecnología' Y fecha_de_publicación COMO '2023%'"} – search_articles: {'filter_titles': ['NPR abandona Twitter, dice que la plataforma liderada por Musk está "socavando nuestra credibilidad"', 'Crypto.com arena considera un cambio de marca después de que las consecuencias de FTX reaviven la ira de los inversores', "El mayor fabricante de baterías para vehículos eléctricos del mundo presenta S", '¿Qué comprobaciones debe realizar antes de comprar un automóvil usado? – Free Car Mag', 'Informe de análisis general del mercado de diagnóstico de preeclampsia 2023-2030 | Fortune Business Insights', 'Startup española en 'la misión de salvar la cerveza del planeta' de la crisis climática', 'Las mejores aplicaciones de terceros para Reddit (2023)', "Cómo funciona el sistema BlueCruise 'sin conductor' de Ford", "Ahorre $100 en el iPad Air con tecnología M1 de Apple", 'Comunicado de prensa: Ventas de casetes de música más altas en casi dos décadas – allmediascotland…trabajos en medios, servicio de comunicados de prensa y recursos de medios para todos', 'Ingeniero de software, plataforma de servicios en Raya | echojobs.io', 'Impulsando datos para lograr cero emisiones netas con evaluaciones del ciclo de vida', 'El futuro del trabajo: tendencias y predicciones para la próxima década', 'Riesgos de subcontratar el desarrollo de software en Uruguay', 'Se abordan las noticias sobre el arresto de Kochie, afectadas por una estafa', 'Prestar atención a la retención de empleados | IRIS', '¿Podría esta bicicleta de pista de £7,250 rellena de espuma rivalizar con la Team GB Hope HB.T?', 'Aave, Chainlink y Binance se están concentrando en mejorar la Shapella, mientras que Big Eyes Coin apunta a un impulso final significativo'], 'query': 'crypto'} DOCUMENTOS SELECCIONADOS: – Resultado de la herramienta: [('NPR abandona Twitter, dice que la plataforma liderada por Musk está "socavando nuestra credibilidad"',), ('Crypto.com arena considera un cambio de marca después de que las consecuencias de FTX reaviven la ira de los inversores',), ("El mayor fabricante de baterías para vehículos eléctricos del mundo presenta S",), ('¿Qué comprobaciones debe realizar antes de comprar un automóvil usado? – Free Car Mag',), ('Informe de análisis general del mercado de diagnóstico de preeclampsia 2023-2030 | Fortune Business Insights',), ('Startup española en la 'misión para salvar la cerveza del planeta' de la crisis climática',), ('Mejor aplicaciones de terceros para Re… – Resultado de la herramienta: — Documento 1 — Fuente: https://www.analyticsinsight.net/crypto-com-arena-considers-rebrand-after-ftx-fallout-reignites-investor-anger/ Título: Crypto.com arena considera un cambio de marca después de que las consecuencias de FTX reaviven la ira de los inversores Categoría: tecnología Fecha: 2023-04-19 01:15:52 Contenido: The Crypto.com Se informa que Arena, anteriormente conocido como Staples Center, está considerando un cambio de marca después de la reciente controversia en torno a FTX, un intercambio de criptomonedas. Las consecuencias de FTX reavivaron la ira entre los inversores, que… – https://www.analyticsinsight.net/crypto-com-arena-considers-rebrand-after-ftx-fallout-reignites-investor-anger/ – https://theprint.in/ani-press-releases/aave-chainlink-and-binance-are-concentrating-on-enhancing-the-shapella- while-big-eyes-coin-is-aiming-for-a-significant-final-push/1527613/ – https://echojobs.io/job/stripe-software-engineer-service-platform-wndr6 RESULTADO: Aquí hay algunos artículos de tecnología de 2023 que mencionan las criptomonedas: 1. **Crypto.com Arena considera un cambio de marca después de que las consecuencias de FTX reaviven la ira de los inversores**: este artículo analiza la posibilidad de un cambio de marca de Crypto.com Arena debido a la controversia que rodea al intercambio de criptomonedas FTX. 2. **Aave, Chainlink y Binance se están concentrando en mejorar Shapella, mientras que Big Eyes Coin apunta a un impulso final significativo**: este artículo menciona la actualización de Shapella y sus implicaciones para las criptomonedas en la red Ethereum. incluidos Binance, Aave y Chainlink. **Ingeniero de software, plataforma de servicios en Stripe | echojobs.io**: este artículo menciona Stripe, una plataforma de infraestructura financiera que permite a las empresas aceptar pagos.
Consideraciones clave
Como ocurre con cualquier arquitectura, existen principios de diseño que se deben considerar para una aplicación sólida. Éstos son algunos de ellos:
Cadenas de documentación de herramientas frente a avisos del sistema: estos son dos tipos de instrucciones que guían el comportamiento del agente de diferentes maneras. Es importante utilizarlos para los fines previstos sin superposiciones ni conflictos para un desempeño confiable del agente. La cadena de documentación de la herramienta, ubicada dentro del decorador @tool, describe qué hace la herramienta y cómo usarla. Además del nombre de la herramienta, define los parámetros, tipos y descripciones. Este es el ejemplo de la cadena de documentación de la herramienta search_articles. @tool def search_articles(query: str, filter_category: Opcional[str] = Ninguno, …): """Útil para encontrar información sobre temas específicos, resúmenes o detalles dentro de los artículos. Puede filtrar por metadatos para mayor precisión: – `filter_category`: 'salud', 'tecnología', etc. – `filter_titles`: lista de títulos exactos para recuperar (MODO POR LOTES). – `filter_date`: fecha de publicación (AAAA-MM-DD) solo para coincidencia EXACTA o PARCIAL. … """ Por otro lado, el indicador del sistema guía de manera inteligente la estrategia de enrutamiento para el agente, permitiéndole decidir cuándo usar la herramienta SQL, la herramienta Vector o una combinación. También es el componente más complejo y frágil de la aplicación. Define cómo se combinan las herramientas en flujos de trabajo híbridos, proporciona ejemplos de uso correcto de las herramientas y especifica reglas y restricciones obligatorias. Para diseñar adecuadamente el indicador del sistema, es crucial comenzar con un repositorio de casos de prueba de las consultas esperadas de los usuarios, proporcionar ejemplos en el indicador del sistema y continuar enriqueciéndolo para las desviaciones que surgen en los casos extremos durante las operaciones. A continuación se muestra un ejemplo del mensaje del sistema system_prompt = ( "1. **CONSULTAS DE LISTA/NAVEGACIÓN** (p. ej., 'qué artículos hay en política'):n" " – **SIEMPRE use [base de datos de búsqueda] para enumerar títulosn" " – NO use [artículos de búsqueda] sin una consulta semántican" … "### REGLAS OBLIGATORIASn" "1. **RANGOS DE FECHAS Y DESIGUALDADES**: Use SQL primero, luego pase los títulos a la herramienta de vectoresn" … ) Bases de datos de vectores de filtrado previo y posterior: este es un punto sutil que puede tener resultados no deseados y difíciles de explicar para consultas específicas. Considere las dos consultas siguientes donde la única diferencia es el nombre mal escrito: "resumir artículos sobre Doo ley en la política el 17 de abril de 2023" y "resumir artículos sobre Dooley en la política el 17 de abril de 2023". Ambas consultas siguen rutas idénticas, por lo que la herramienta SQL selecciona con éxito los títulos para esta categoría y fecha (solo hay 1 artículo que menciona al juez Dooley), luego se llama a la herramienta Vector en esta lista de títulos con la consulta. Curiosamente, para la primera consulta, la herramienta Vector devuelve "Resultado de la herramienta: no se encontraron documentos que coincidan con los criterios". para este pequeño error ortográfico incluso cuando la lista tiene solo 1 artículo para seleccionar, mientras que para la segunda consulta devuelve el artículo correcto. Aquí está el resultado de la primera consulta CONSULTA: CONSULTA: resumen de artículos sobre Doo ley en política el 17 de abril de 2023 SELECCIÓN DE HERRAMIENTAS: – search_database: {'query': "SELECCIONE el título DE los artículos DONDE fecha_de_publicación COMO '2023-04-17%' Y artículo_categoría = 'política'"} – search_articles: {'query': 'Doo ley', 'filter_category': 'politics', 'filter_titles': ['El juez Dooley pone fin al decreto de consentimiento de la policía de Hartford a pesar de las preocupaciones']} DOCUMENTOS SELECCIONADOS: – Resultado de la herramienta: [('El juez Dooley pone fin al decreto de consentimiento de la policía de Hartford a pesar de las preocupaciones',)] – Resultado de la herramienta: No se encontraron documentos que coincidan con los criterios. Y la segunda consulta CONSULTA: resumir artículos sobre Dooley en política el 17 de abril de 2023 SELECCIÓN DE HERRAMIENTA: – search_database: {'query': "SELECCIONE el título DE los artículos DONDE fecha_de_publicación COMO '2023-04-17%' Y artículo_categoría = 'política'"} – search_articles: {'query': 'Dooley', 'filter_category': 'politics', 'filter_titles': ['El juez Dooley pone fin al decreto de consentimiento de la policía de Hartford a pesar de las preocupaciones']} DOCUMENTOS SELECCIONADOS: – Resultado de la herramienta: [('El juez Dooley pone fin al decreto de consentimiento de la policía de Hartford a pesar de las preocupaciones',)] – Resultado de la herramienta: — Documento 1 — Fuente: https://www.nbcconnecticut.com/news/local/judge-ends-hartford-police-consent-decree-despite-concerns/3015203/ Título: El juez Dooley pone fin al decreto de consentimiento de la policía de Hartford a pesar de las preocupaciones Categoría: política Fecha: 2023-04-17 05:36:24 Contenido: El juez Dooley ha puesto fin a los casi 50 años de supervisión federal de la policía en Hartford, a pesar de las continuas preocupaciones de que el departamento todavía no ha contratado suficientes agentes de minorías para reflejar las grandes poblaciones negras e hispanas de la ciudad.
Y la razón no es sólo una incrustación más débil debido a una ortografía incorrecta. Esto se debe a que FAISS (y Chroma, etc.) realizan un filtrado posterior: primero realice una búsqueda global de la consulta y luego filtre los resultados para los metadatos (= la lista de títulos). En este caso, el artículo correcto no aparece en top_k = 3 artículos después de la búsqueda semántica. Por otro lado, una base de datos con filtrado previo habría realizado la búsqueda semántica sólo en los artículos de la lista de títulos y habría encontrado el artículo correcto incluso con la ortografía incorrecta.
¿Se pueden eliminar todos los filtros de metadatos de la herramienta Vector?: Sí, es posible, pero es una opción de mayor costo, ya que las consultas semánticas simples con un filtro de metadatos (como categoría o autor) se convertirán en una consulta híbrida, que requerirá dos llamadas a la herramienta, lo que aumentará el uso de tokens y la latencia. Un término medio pragmático sería mantener las fechas (y posiblemente otros metadatos numéricos, como el recuento de palabras en este caso) únicamente en SQL y reflejar todo el texto y los metadatos categóricos en la base de datos vectorial.
Conclusión
Construir RAG sobre SQL no se trata de agregar incrustaciones. Se trata de diseñar la estrategia de recuperación adecuada.
Cuando los metadatos estructurados y el contenido de formato largo se encuentran en la misma tabla, el verdadero desafío es la orquestación: decidir cuándo calcular con SQL, cuándo buscar semánticamente y cuándo combinar ambos. Detalles sutiles como el filtrado de metadatos y el enrutamiento de herramientas pueden marcar la diferencia entre un sistema confiable y uno que falla silenciosamente.
Con una capa Agentic RAG bien diseñada, las bases de datos SQL heredadas pueden impulsar aplicaciones semánticas sin cambios de esquema, migraciones costosas ni compensaciones de rendimiento.
Conéctese conmigo y comparta sus comentarios en www.linkedin.com/in/partha-sarkar-lets-talk-AI
Referencia
Artículos de Social Animal 10K con PNL: conjunto de datos de Alex P (propietario) (CC BY-SA 4.0)
Las imágenes utilizadas en este artículo se generan con Google Gemini. Conjunto de datos utilizado bajo licencia CC-BY-SA 4.0. Figuras y código subyacente creado por mí.