¿Un sistema RAG confiable, rentable y de baja latencia 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 reside en las bases de datos relacionales tradicionales. Propuestas, informes, contratos, artículos, todos almacenados en TEXT o LONGTEXT columnas: diseñadas 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 informática estructurada, una comprensión semántica profunda y conocimientos contextuales de una manera natural y conversacional.

Por ejemplo:

  • ¿Cuántos proyectos superiores a US$1 millón se aprobaron entre 2023 y 2025?
  • Resumir las principales tendencias observadas en tecnología durante los últimos 6 meses
  • ¿Cuáles fueron las diferencias entre 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, utilicé un subconjunto del conjunto de datos de artículos de Social Animal 10K con PNL, que contiene 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_publicación, categoría_artículo, recuento_palabras y contenido_completo.

El título puede considerarse un identificador único (clave primaria) 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 de almacenamiento vectorial con los mismos campos presentes en SQL (excepto el contenido completo). Esto permite Filtracióncomo veremos en los resultados. Para documentos largos, se puede adoptar una estrategia de incrustación y agrupación de ventanas deslizantes con metadatos adjuntos a cada incrustación.

Se adjunta un fragmento de código de metadatos
for idx, row in df_sql.iterrows():
    content = str(row['full_content']).strip()
    if not content:
        continue
        
    metadata = {
        "source": row.get('url', ''),
        "title": row.get('title', ''),
        "authors": str(row.get('authors', '')),
        "article_category": str(row.get('article_category', 'unknown')),
        "published_date": str(row.get('published_date', '')),
        "word_count": int(row.get('content_word_count', 0))
    }
    
    doc = Document(page_content=content, metadata=metadata)
    documents.append(doc)

Hemos construido dos herramientas especializadas e inteligentes que Agente reaccionar Puede invocar utilizando la siguiente arquitectura. El agente ReAct (enrutador) organiza todo el proceso de consulta y decide de manera inteligente qué herramienta invocar en función de la naturaleza de la consulta. Utiliza metadatos y contexto de consulta para determinar si la herramienta SQL, la herramienta vectorial o un enfoque híbrido es más apropiado. La siguiente figura describe el flujo de decisión de la consulta:

Flujo de decisión de consulta

Las herramientas son las siguientes:

  1. base de datos de búsqueda (herramienta SQL): Aborda problemas que requieren computación, agregación o lógica compleja. Ejecuta consultas SQL.
  2. search_articles (herramienta vectorial): Responde preguntas sobre contenido, tema o entidades específicas. Acepta una consulta en lenguaje natural y, opcionalmente, filtros de metadatos para realizar 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 las siguientes rutas:

  1. A cálculos (por ejemplo, cuántos artículos…), desigualdades/variación (por ejemplo: Artículos publicados entre enero y abril de 2023) o agregaciones (por ejemplo; ¿Cuál es el recuento promedio de palabras?), utilice únicamente la herramienta SQL.
  2. búsqueda semánticacon o sin filtros, utilice la herramienta Vector como se explicó anteriormente.
  3. 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 criterios de filtro de metadatos (normalmente categoría o rango de fechas), para los cuales 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 recorrido de la herramienta seguido en cada caso.

1. “¿Cuáles son los artículos por año y categoría?”: Esta es una consulta computacionalmente compleja, por lo que solo se utilizará la herramienta SQL.

El resultado está aquí
QUERY: what are the articles by year and category ?
TOOL SELECTION:
  - search_database: {'query': "SELECT strftime('%Y', published_date) AS year, article_category, COUNT(*) FROM articles GROUP BY year, article_category"}
DOCUMENTS SELECTED:
  - Tool Output: [('1970', 'business', 1), ('2001', 'politics', 1), ('2013', 'politics', 1), ('2018', 'entertainment', 1), ('2020', 'entertainment', 1), ('2020', 'sports', 1), ('2022', 'fashion', 1), ('2023', 'business', 19), ('2023', 'entertainment', 16), ('2023', 'fashion', 16), ('2023', 'health', 18), ('2023', 'politics', 16), ('2023', 'sports', 16), ('2023', 'technology', 18), ('2023', 'travel', 18)]
RESULT:
Here are the number of articles by year and category:
* 1970: business (1)
* 2001: politics (1)
* 2013: politics (1)
* 2018: entertainment (1)
* 2020: entertainment (1), sports (1)
* 2022: fashion (1)
* 2023: business (19), entertainment (16), fashion (16), health (18), politics (16), sports (16), technology (18), travel (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í
QUERY: what articles about children do you have
TOOL SELECTION:
  - search_articles: {'query': 'children'}
DOCUMENTS SELECTED:
  - Tool Output: --- Document 1 ---
Source: https://www.filmcompanion.in/features/indepth-stories/streaming/best-childrens-movies-on-amazon-prime-video-netflix-hotstar-klaus-kung-fu-panda-jagga-jasoos-childrens-day-2020
Title: 10 Films That Children Should Watch
Category: entertainment
Date: 2020-11-14 02:30:36
Content: On this children's day, here's a list of stories designed to help young ones understand the world around them, gain life lessons and be dazzled by colourful imagination. It's a great time to be a...
  - https://www.filmcompanion.in/features/indepth-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/
RESULT:
Here are some articles about children:

1.  10 Films That Children Should Watch (entertainment)
2.  Save the Children and THINKMD Expand Partnership to Improve the Lives of Children Globally (health)
3.  St. Lucie County School Board decides to keep challenged books in school libraries (health)

3. “¿Cuáles son las tendencias de la moda?”: el agente encuentra la categoría = moda y realiza una comparación semántica utilizando la herramienta Vector con este criterio de filtro.

El resultado está aquí
QUERY: what are the trends in fashion
TOOL SELECTION:
  - search_articles: {'query': 'trends', 'filter_category': 'fashion'}
DOCUMENTS SELECTED:
  - Tool Output: --- Document 1 ---
Source: https://www.sightunseen.com/2023/04/the-best-thing-we-saw-in-milan-today-india-mahdavi-for-gebruder-thonet-vienna/
Title: The Best Thing We Saw in Milan Today: India Mahdavi for Gebrüder Thonet Vienna - Sight Unseen
Category: fashion
Date: 2023-04-18 12:00:00
Content: How to Live With Objects

The Best Thing We Saw in Milan Today: India Mahdavi for Gebrüder Thonet Vienna

Sight Unseen is on the ground at the Milan Furniture Fair right now and we’ll be bringing you load...
  - https://www.sightunseen.com/2023/04/the-best-thing-we-saw-in-milan-today-india-mahdavi-for-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/
RESULT:
The search results mention the following trends in fashion: India Mahdavi for Gebrüder Thonet Vienna, clean make up & skincare, and 80's-inspired jewelry.

4. “cuéntame artículos de tecnología sobre criptografía en 2023“- Esta es una consulta híbrida donde se utilizará la herramienta SQL para obtener los títulos en 2023 para categoría=tecnología, luego se invocará la herramienta Vector con la consulta=cripto y la lista de títulos. El resultado se encontrará dentro de ese subconjunto.

El resultado está aquí
QUERY: tell me technology articles about crypto in 2023
TOOL SELECTION:
  - search_database: {'query': "SELECT title FROM articles WHERE article_category = 'technology' AND published_date LIKE '2023%'"}
  - search_articles: {'filter_titles': ['NPR quits Twitter, says Musk-led platform is “undermining our credibility”', 'Crypto.com arena considers rebrand after FTX fallout reignites investor anger', "World's Biggest EV Battery Maker Unveils S", 'What Checks Should You Perform Before Buying a Used Car? - Free Car Mag', 'Preeclampsia Diagnostics Market 2023-2030 Overall Analysis Report | Fortune Business Insights', 'Spanish startup on ‘mission to save planet’s beer’ from climate crisis', 'Best third-party apps for Reddit (2023)', "How Ford's 'driverless' BlueCruise system works", "Save $100 on Apple's M1-Powered iPad Air", 'Media release: Music cassette sales highest in nearly two decades - allmediascotland…media jobs, media release service and media resources for all', 'Software Engineer, Service Platform at Stripe | echojobs.io', 'Driving data to deliver net zero with life cycle assessments', 'The Future of Work: Trends and Predictions for the Next Decade', 'Risks of Outsourcing Software Development to Uruguay', 'Kochie Arrest News Addressed, Affected By Scam', 'Paying attention to employee retention | IRIS', 'Could this foam-filled £7,250 track bike rival the Team GB Hope HB.T?', 'Aave, Chainlink, and Binance are concentrating on enhancing the Shapella, while Big Eyes Coin is aiming for a significant final push'], 'query': 'crypto'}
DOCUMENTS SELECTED:
  - Tool Output: [('NPR quits Twitter, says Musk-led platform is “undermining our credibility”',), ('Crypto.com arena considers rebrand after FTX fallout reignites investor anger',), ("World's Biggest EV Battery Maker Unveils S",), ('What Checks Should You Perform Before Buying a Used Car? - Free Car Mag',), ('Preeclampsia Diagnostics Market 2023-2030 Overall Analysis Report | Fortune Business Insights',), ('Spanish startup on ‘mission to save planet’s beer’ from climate crisis',), ('Best third-party apps for Re...
  - Tool Output: --- Document 1 ---
Source: https://www.analyticsinsight.net/crypto-com-arena-considers-rebrand-after-ftx-fallout-reignites-investor-anger/
Title: Crypto.com arena considers rebrand after FTX fallout reignites investor anger
Category: technology
Date: 2023-04-19 01:15:52
Content: The Crypto.com Arena, formerly known as the Staples Center, is reportedly considering a rebrand after the recent controversy surrounding FTX, a cryptocurrency exchange. The FTX fallout reignited anger among investors, wh...
  - 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
RESULT:
Here are some technology articles from 2023 that mention crypto:

1.  **Crypto.com arena considers rebrand after FTX fallout reignites investor anger**: This article discusses the possibility of the Crypto.com Arena rebranding due to the controversy surrounding the FTX cryptocurrency exchange.
2.  **Aave, Chainlink, and Binance are concentrating on enhancing the Shapella, while Big Eyes Coin is aiming for a significant final push**: This article mentions the Shapella upgrade and its implications for cryptocurrencies on the Ethereum network, including Binance, Aave, and Chainlink.
3. **Software Engineer, Service Platform at Stripe | echojobs.io**: This article mentions Stripe, a financial infrastructure platform that allows businesses to accept payments.

Consideraciones clave

Como ocurre con cualquier arquitectura, existen principios de diseño a considerar para una aplicación sólida. Éstos son algunos de ellos:

  • Documentos de herramientas frente a avisos del sistema: Hay 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. Documentación de la herramienta, ubicada dentro del @tool decorador, describe qué hace la herramienta y cómo usarlo. 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: Optional[str] = None, ...):
    """Useful for finding information about specific topics, summaries, or details within articles.
    
    You can filter by metadata for precision:
    - `filter_category`: 'health', 'tech', etc.
    - `filter_titles`: List of exact titles to retrieve (BATCH MODE).
    - `filter_date`: Published date (YYYY-MM-DD) for EXACT or PARTIAL match only.
    ...
    """
  • Por otro lado, el indicador del sistema guía de forma inteligente la estrategia de enrutamiento del agente, permitiéndole decidir cuándo utilizar 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 correctamente el mensaje del sistema, es crucial comenzar con un repositorio de casos de prueba de consultas esperadas de los usuarios, proporcionar ejemplos en el mensaje 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. **LISTING/BROWSING QUERIES** (e.g., 'what articles are in politics'):n"
    "   - **ALWAYS use [search_database] to list titlesn"
    "   - DO NOT use [search_articles] without a semantic queryn"
    ...
    "### MANDATORY RULESn"
    "1. **DATE RANGES & INEQUALITIES**: Use SQL first, then pass titles to vector tooln"
    ...
)
  • Bases de datos vectoriales previas y posteriores al filtrado: Este es un punto sutil que puede tener resultados indeseables 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 política el 17 de abril de 2023“. Ambas consultas siguen caminos idénticos, en el sentido de 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 "Tool Output: No documents found matching the criteria." 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.
QUERY: QUERY: summarize articles about Doo ley in politics on 17th apr 2023
TOOL SELECTION:
  - search_database: {'query': "SELECT title FROM articles WHERE published_date LIKE '2023-04-17%' AND article_category = 'politics'"}
  - search_articles: {'query': 'Doo ley', 'filter_category': 'politics', 'filter_titles': ['Judge Dooley Ends Hartford Police Consent Decree Despite Concerns']}
DOCUMENTS SELECTED:
  - Tool Output: [('Judge Dooley Ends Hartford Police Consent Decree Despite Concerns',)]
  - Tool Output: No documents found matching the criteria.
Y la segunda consulta
QUERY: summarize articles about Dooley in politics on 17th apr 2023
TOOL SELECTION:
  - search_database: {'query': "SELECT title FROM articles WHERE published_date LIKE '2023-04-17%' AND article_category = 'politics'"}
  - search_articles: {'query': 'Dooley', 'filter_category': 'politics', 'filter_titles': ['Judge Dooley Ends Hartford Police Consent Decree Despite Concerns']}
DOCUMENTS SELECTED:
  - Tool Output: [('Judge Dooley Ends Hartford Police Consent Decree Despite Concerns',)]
  - Tool Output: --- Document 1 ---
Source: https://www.nbcconnecticut.com/news/local/judge-ends-hartford-police-consent-decree-despite-concerns/3015203/
Title: Judge Dooley Ends Hartford Police Consent Decree Despite Concerns
Category: politics
Date: 2023-04-17 05:36:24
Content: Judge Dooley has ended the nearly 50 years of federal oversight of police in Hartford, despite continued concerns the department still has not hired enough minority officers to reflect the city's large Black and Hispanic populations.

Y la razón no es sólo una incrustación más débil debido a una ortografía incorrecta. es porque FAISS (y Chroma, etc.) realizar post-filtración — primero haga 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 el arriba_k = 3 artículos después de la búsqueda semántica. UNO prefiltrado La base de datos, por el contrario, 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 una 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 costocomo consultas semánticas simples con un filtro de metadatos (como categoría o autor) se convertirán en consultas híbridas, que requerirán dos llamadas a herramientas, lo que aumentará el uso de tokens y la latencia. Un compromiso pragmático sería mantener las fechas (y posiblemente otros metadatos numéricos como el recuento de palabras en este caso) solo 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 significa agregar incrustaciones. Se trata de diseñar la estrategia de recuperación adecuada.

Cuando los metadatos estructurados y el contenido de formato largo residen 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 los dos. 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 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 generaron con Google Gemini. Conjunto de datos utilizado en Licencia CC-BY-SA 4.0. Figuras y código subyacente creado por mí.

Fuente