Home Nieuws Kosteneffectieve Agentic RAG bouwen op lange-tekstdocumenten in SQL-tabellen

Kosteneffectieve Agentic RAG bouwen op lange-tekstdocumenten in SQL-tabellen

4
0
Kosteneffectieve Agentic RAG bouwen op lange-tekstdocumenten in SQL-tabellen

een betrouwbaar, kosteneffectief RAG-systeem met lage latentie op een SQL-tabel dat grote documenten in lange tekstvelden opslaat – zonder het bestaande schema te wijzigen?

Dit is geen theoretisch probleem.

In de meeste bedrijven bevindt kritische bedrijfskennis zich al in traditionele relationele databases. Voorstellen, rapporten, contracten, artikelen – allemaal opgeslagen in TEXT of LONGTEXT kolommen – ontworpen voor het matchen en aggregeren van trefwoorden, niet voor semantisch ophalen.

Met de komst van LLM’s zijn de bedrijfsvereisten geëvolueerd naar gestructureerde berekeningen, diepgaand semantisch begrip en contextueel inzicht op een natuurlijke, gemoedelijke manier.

Bijvoorbeeld:

  • Hoeveel projecten van meer dan 1 miljoen USD zijn tussen 2023 en 2025 goedgekeurd?
  • Vat de belangrijkste technologische trends van de afgelopen 6 maanden samen
  • Wat waren de kenmerken van het winnen van voorstellen in 2025?

Ze vereisen een ophaalstrategie die kan beslissen wanneer er moet worden berekend, wanneer semantisch moet worden gezocht en wanneer beide moeten worden gecombineerd. In dit artikel zal ik een Agentic RAG-architectuur demonstreren die rechtstreeks bovenop een traditionele SQL-database werkt – zonder schemawijzigingen – en de ontwerpprincipes bespreken die nodig zijn om deze betrouwbaar te maken in productie.

Systeemconfiguratie

Voor deze illustratie heb ik een subset van de Social Animal 10K Articles with NLP-dataset gebruikt, die een groot aantal nieuwsartikelen en blogposts bevat, samen met metadata. De gemaakte SQL-database heeft de volgende kolommen: url, titel, auteurs, gepubliceerde_datum, artikelcategorie, woordaantal en de volledige_inhoud.

De titel kan worden beschouwd als een unieke identificatie (primaire sleutel) van de inhoud. De artikelcategorieën zijn technologie, zaken, sport, reizen, gezondheid, entertainment, politiek en mode. De artikelen zijn redelijk gelijkmatig verdeeld over de categorieën. De gebruikte LLM is Gemini-2,5-flash en FAISS om vectorinbedding te indexeren en op te slaan. Het ontwerp is toepasbaar op elke keuze uit een LLM- of vectordatabase.

Architectuur

Naast het insluiten van de onbewerkte tekst hebben we de metagegevens van de vectoropslag gespiegeld met dezelfde velden als aanwezig in de SQL (behalve de volledige inhoud). Dit maakt het mogelijk Filterenzoals we zullen zien in de resultaten. Voor lange documenten kan een strategie voor chunking en nesting met schuifvensters worden toegepast, waarbij metagegevens aan elke nesting worden gekoppeld.

Het metadatafragment is bijgevoegd
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)

We hebben twee gespecialiseerde, intelligente tools gebouwd die ReAct-agent kan aanroepen met behulp van de volgende architectuur. De ReAct-agent (router) orkestreert de gehele querypijplijn door op intelligente wijze te bepalen welke tool moet worden geactiveerd op basis van de aard van de query. Het maakt gebruik van metagegevens en querycontext om te bepalen of de SQL-tool, de vectortool of een hybride aanpak het meest geschikt is. De volgende afbeelding toont de beslissingsstroom voor query’s:

Vraagbeslissingsstroom

De hulpmiddelen zijn als volgt:

  1. zoekdatabase (SQL-tool): Behandelt vragen die berekening, aggregatie of complexe logica vereisen. Het voert SQL-query’s uit
  2. artikelen zoeken (vectortool): behandelt vragen over inhoud, onderwerp of specifieke eenheden. Accepteert een zoekopdracht in natuurlijke taal en optionele metadatafilters om een ​​globale semantische zoekopdracht uit te voeren (bijv.: “Artikelen over kinderen“) of zoek een subset van de gegevens (bijvoorbeeld: “filter_authors=’XYZ’, “query”=”artikelen”).

Zoals u in de bovenstaande afbeelding kunt zien, kan een query de volgende paden volgen:

  1. Voor berekeningen (bijv. hoeveel artikelen..), ongelijkheden/interval (bijv.: Artikelen gepubliceerd tussen januari en april 2023) of aggregaties (bijv. Wat is het gemiddelde aantal woorden..), gebruik alleen de SQL-tool.
  2. Semantisch zoekenmet of zonder filters, gebruik het vectorgereedschap zoals hierboven uitgelegd.
  3. Hybride onderzoek: Hybride zoekopdrachten zijn belangrijk wanneer u zowel gestructureerde gegevens (bijvoorbeeld filteren op datum) als ongestructureerde inhoud (bijvoorbeeld semantisch zoeken op artikelen) nodig heeft. De query heeft een metadatafiltercriterium (meestal categorie of een datumbereik) dat de SQL-tool gebruikt om artikelen op te halen. Vervolgens wordt de lijst met titels naar de Vector-tool gestuurd om alleen op die artikelen een semantische zoekopdracht uit te voeren. Een voorbeeld zou zijn “tussen maart en mei 2023 is een artikel over Moederdag in de mode

Resultaten

Hier volgen de resultaten van enkele zoekopdrachten van elk type. Het zou interessant zijn om het gevolgde toolpad in elk geval te noteren.

1.”wat zijn de artikelen per jaar en categorie?” — Dit is een complexe berekeningsquery, dus alleen de SQL-tool zal worden gebruikt.

Het resultaat is hier
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.”Welke artikelen over kinderen heb je?” — Dit komt niet overeen met een van de metagegevenscategorieën waaruit het schema bestaat, dus besluit de agent de Vector-tool te gebruiken met een globale semantische zoekopdracht.

Het resultaat is hier
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. “Wat zijn de trends in de mode?” — De agent vindt de categorie = modus en voert de semantische match uit met behulp van de vectortool met dit filtercriterium.

Het resultaat is hier
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. “vertel me technische artikelen over crypto in 2023” — Dit is een hybride query waarbij de SQL-tool zal worden gebruikt om in 2023 de titels voor categorie = technologie te verkrijgen, waarna de Vector-tool zal worden aangeroepen met de query = crypto en de titellijst, het resultaat zal binnen die subset worden gevonden.

Het resultaat is hier
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.

Belangrijke overwegingen

Zoals bij elke architectuur zijn er ontwerpprincipes waarmee rekening moet worden gehouden voor een robuuste toepassing. Hier zijn er een paar:

  • Tool docstrings versus systeemprompt: dit zijn twee soorten instructies die het gedrag van de agent op verschillende manieren regelen. Het is belangrijk om ze te gebruiken voor de beoogde doeleinden, zonder enige overlap of conflict, voor betrouwbare agentprestaties. Gereedschapsdocstring, binnenin gelegen @tool decorateur, beschrijft wat het hulpmiddel doet En hoe je het moet gebruiken. Naast de gereedschapsnaam worden er parameters, typen en beschrijvingen gedefinieerd.
Hier is het voorbeeld van de search_articles-tool docstring.
@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.
    ...
    """
  • Aan de andere kant begeleidt de systeemprompt op intelligente wijze de routeringsstrategie voor de agent, zodat deze kan beslissen wanneer hij de SQL-tool, de Vector-tool of een combinatie daarvan wil gebruiken. Het is ook het meest complexe en kwetsbare onderdeel van de applicatie. Het definieert hoe tools worden gecombineerd in hybride workflows, geeft voorbeelden van correct gebruik van tools en specificeert verplichte regels en beperkingen. Om de systeemprompt adequaat te ontwerpen, is het van cruciaal belang om te beginnen met een testcase-repository van verwachte gebruikersquery’s, voorbeelden te geven in de systeemprompt en deze te blijven verrijken voor afwijkingen die tijdens de werking voor randgevallen naar voren komen.
Hier is een voorbeeld van de systeemprompt
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"
    ...
)
  • Voor en na het filteren van vectordatabases: Dit is een subtiel punt dat voor specifieke zoekopdrachten onbedoelde en moeilijk te verklaren resultaten kan opleveren. Beschouw de volgende twee zoekopdrachten waarbij het enige verschil de verkeerd gespelde naam is: “vat artikelen samen over Doo ley in de politiek voor 17 april 2023” En “vat artikelen samen over Dooley in de politiek voor 17 april 2023“. Beide zoekopdrachten volgen identieke paden, waarbij de SQL-tool met succes de titels voor deze categorie en datum selecteert (er is slechts 1 artikel waarin Judge Dooley wordt vermeld), waarna de Vector-tool met de zoekopdracht in deze titellijst wordt aangeroepen. Vreemd genoeg retourneert de Vector-tool voor de eerste zoekopdracht "Tool Output: No documents found matching the criteria." voor deze kleine typefout, zelfs als de lijst slechts één artikel heeft om uit te kiezen, terwijl deze voor de tweede zoekopdracht het juiste artikel retourneert.
Hier is het resultaat van de eerste zoekopdracht
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.
En de tweede vraag
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.

En de reden is niet alleen een zwakkere inbedding als gevolg van onjuiste spelling. Het is omdat FAISS (en Chroma, enz.) presteren nafiltratie — voer eerst een globale zoekopdracht uit voor de zoekopdracht en filter vervolgens de resultaten op de metadata (= titellijst). In dit geval verschijnt het juiste artikel niet in top_k = 3 artikelen door semantisch zoeken. EEN voorfiltratie database daarentegen zou alleen de semantische zoekopdracht op de artikelen in de titellijst hebben uitgevoerd en het juiste artikel hebben gevonden, zelfs met de onjuiste spelling.

  • Kunnen alle metadatafilters uit Vector Tool worden verwijderd?: Ja, het is mogelijk, maar het is een mogelijkheid tot hogere kostenaangezien eenvoudige semantische zoekopdrachten met een metadatafilter (zoals categorie of auteur) een hybride zoekopdracht worden waarvoor twee toolaanroepen nodig zijn, waardoor het tokengebruik en de latentie toenemen. Een pragmatische middenweg zou zijn om alleen datums (en mogelijk andere numerieke metadata zoals het aantal woorden in dit geval) in de SQL te bewaren en alle tekst en categorische metadata in de vectordatabase weer te geven.

Conclusie

Het bouwen van RAG bovenop SQL gaat niet over het toevoegen van nesten. Het draait allemaal om het ontwerpen van de juiste ophaalstrategie.

Wanneer gestructureerde metagegevens en lange inhoud in dezelfde tabel voorkomen, is de echte uitdaging de orkestratie: beslissen wanneer je moet rekenen met SQL, wanneer je semantisch moet zoeken en wanneer je beide moet combineren. Subtiele details zoals het filteren van metagegevens en het routeren van tools kunnen het verschil maken tussen een betrouwbaar systeem en een systeem dat stilletjes faalt.

Met een goed ontworpen Agentic RAG-laag kunnen oudere SQL-databases semantische applicaties aandrijven zonder schemawijzigingen, dure migraties of prestatie-inbreuken.

Neem contact met mij op en deel uw opmerkingen op www.linkedin.com/in/partha-sarkar-lets-talk-AI

Referentie

Social Animal 10K artikelen met NLP — Dataset door Alex P (eigenaar) (CC BY-SA 4.0)

Afbeeldingen die in dit artikel worden gebruikt, zijn gegenereerd met Google Gemini. Hieronder gebruikte dataset CC-BY-SA 4.0-licentie. Cijfers en onderliggende code door mij gemaakt.

Nieuwsbron

LAAT EEN REACTIE ACHTER

Vul alstublieft uw commentaar in!
Vul hier uw naam in