Home Nieuws Kosteneffectieve agent-RAG’s maken voor lange tekstdocumenten in SQL-tabellen

Kosteneffectieve agent-RAG’s maken voor lange tekstdocumenten in SQL-tabellen

2
0
Kosteneffectieve agent-RAG’s maken voor lange tekstdocumenten in SQL-tabellen

een betrouwbaar, lage latentie en kosteneffectief RAG-systeem 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: alles staat erin opgeslagen TEXT OF LONGTEXT kolommen: ontworpen voor het matchen en aggregeren van zoekwoorden, niet voor semantisch ophalen.

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

Bijvoorbeeld:

  • Hoeveel projecten van meer dan $ 1 miljoen zijn tussen 2023 en 2025 goedgekeurd?
  • Geef een samenvatting van de belangrijkste technologische trends van de afgelopen zes maanden
  • Wat waren de onderscheidende elementen van de winnende 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 op een traditionele SQL-database draait, 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-dataset met NLP gebruikt, die een groot aantal nieuwsartikelen en blogposts bevat, samen met metadata. De aangemaakte SQL-database heeft de volgende kolommen: URL, titel, auteurs, publicatiedatum, artikelcategorie, aantal woorden en 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 min of meer gelijkmatig verdeeld over de categorieën. De gebruikte LLM is gemini-2,5-flash e FAISS om vectorinbedding te indexeren en op te slaan. Het ontwerp is toepasbaar op elke keuze uit een LLM- of vectordatabase.

Architectuur

Naast het inbedden van de onbewerkte tekst hebben we de metadata van het vectorarchief gespiegeld met dezelfde velden als in SQL (behalve de volledige inhoud). Dit maakt het mogelijk Filterenzoals we zullen zien in de resultaten. Voor lange documenten kunt u een strategie hanteren waarbij u ze opsplitst en insluit in schuifbare vensters, waarbij metagegevens aan elke insluiting zijn gekoppeld.

Het metadatacodefragment 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 en intelligente tools ontwikkeld ReAct-agent kan aanroepen met behulp van de volgende architectuur. De ReAct-agent (router) orkestreert de gehele querypijplijn door op intelligente wijze te beslissen welke tool moet worden aangeroepen op basis van de aard van de query. Gebruik de metagegevens en context van de query om te bepalen of de SQL-tool, de vectortool of een hybride aanpak geschikter is. De volgende afbeelding illustreert de beslissingsstroom voor query’s:

Vraagbeslissingsstroom

De hulpmiddelen zijn als volgt:

  1. zoek_database (SQL-tool): Behandelt vragen die berekening, aggregatie of complexe logica vereisen. Voer SQL-query’s uit
  2. search_articles (vectortool): behandelt vragen over specifieke inhoud, onderwerp of entiteiten. Er zijn een zoekopdracht in natuurlijke taal en eventueel metadatafilters nodig om een ​​globale semantische zoekopdracht uit te voeren (bijvoorbeeld: “artikelen over kinderen“) of zoek naar een subset van 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 (bijvoorbeeld hoeveel artikelen..), ongelijkheden/interval (bijvoorbeeld: 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 Vector-gereedschap zoals hierboven uitgelegd.
  3. Hybride zoekopdracht: Hybride zoekopdrachten zijn essentieel wanneer u zowel gestructureerde gegevens (bijvoorbeeld filteren op datum) als ongestructureerde inhoud (bijvoorbeeld semantisch zoeken op artikelen) nodig heeft. De zoekopdracht heeft een metadatafiltercriterium (meestal een categorie of datumbereik), waarvoor de SQL-tool wordt gebruikt om artikelen op te halen. Vervolgens wordt de lijst met titels doorgegeven aan de Vector-tool om alleen op die artikelen een semantische zoekopdracht uit te voeren. Een voorbeeld zou kunnen zijn “tussen maart en mei 2023 verschijnen er enkele modeartikelen over Moederdag

Resultaten

Hier volgen de resultaten van enkele zoekopdrachten van elk type. Het zou interessant zijn om het gevolgde instrumentpad 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 modetrends?“: De agent vindt categorie = mode en voert semantische matching uit met behulp van de Vector-tool 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 cryptocurrencies in 2023” – Dit is een hybride query waarbij de SQL-tool zal worden gebruikt om de aandelen in 2023 op categorie = technologie te krijgen, waarna de Vector-tool zal worden aangeroepen met de query = crypto en de lijst met aandelen. 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 enkele:

  • Tooldocumentreeksen versus systeemprompt: dit zijn twee soorten instructies die het gedrag van de agent op verschillende manieren sturen. Het is belangrijk om ze te gebruiken voor de beoogde doeleinden, zonder overlap of conflicten, om betrouwbare prestaties van agenten te garanderen. Instrumentdocumentreeks, gelegen in het bestand @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 van de agent, waardoor de agent 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. Definieert hoe tools worden gecombineerd in hybride workflows, geeft voorbeelden van succesvol toolgebruik en specificeert verplichte regels en beperkingen. Om de systeemprompt goed te ontwerpen, is het van cruciaal belang om te beginnen met een opslagplaats van testcases van door de gebruiker bedoelde query’s, voorbeelden te geven in de systeemprompt en deze te blijven verrijken voor afwijkingen die optreden in randgevallen tijdens bewerkingen.
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"
    ...
)
  • Vectordatabases voor en na het filteren: Dit is een gevoelig punt dat voor specifieke zoekopdrachten onverwachte en moeilijk uit te leggen 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 op 17 april 2023” EN “samenvatting artikelen over Dooley in de politiek op 17 april 2023“. Beide queries volgen identieke paden, waarbij de SQL-tool met succes titels voor deze categorie en datum selecteert (er is slechts 1 artikel waarin Judge Dooley wordt genoemd), dus de Vector-tool wordt met de query op deze lijst met titels aangeroepen. Vreemd genoeg retourneert de Vector-tool voor de eerste query "Tool Output: No documents found matching the criteria." voor deze kleine spelfout, zelfs als de lijst slechts 1 item heeft om uit te selecteren, terwijl deze voor de tweede zoekopdracht het juiste item 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 zwakkere invoer als gevolg van onjuiste spelling. Het is omdat FAISS (en Chroma etc.) presteren nafilteren — voer eerst een globale zoekopdracht uit voor de zoekopdracht en filter vervolgens de resultaten op metadata (= de lijst met titels). In dit geval verschijnt het juiste artikel niet in het bestand boven_k = 3 artikelen na semantisch zoeken. A voorfilteren de database zou de semantische zoekopdracht echter alleen hebben uitgevoerd op de artikelen die in de titellijst voorkomen en zou zelfs met de onjuiste spelling het juiste artikel hebben gevonden.

  • Is het mogelijk om alle metadatafilters uit de Vector-tool te verwijderen?: Ja, het is mogelijk, maar het is een duurdere optieaangezien eenvoudige semantische zoekopdrachten met een metadatafilter (zoals categorie of auteur) een hybride zoekopdracht zullen worden, waarvoor twee toolaanroepen nodig zijn, waardoor het tokengebruik en de latentie toenemen. Een pragmatische middenweg zou zijn om datums (en mogelijk andere numerieke metagegevens zoals het aantal woorden in dit geval) alleen in de SQL te bewaren en alle tekst- en categoriemetagegevens in de vectordatabase te spiegelen.

Conclusie

Het bouwen van RAG op SQL betekent niet dat er insluitingen moeten worden toegevoegd. Het gaat om het ontwerpen van de juiste herstelstrategie.

Wanneer gestructureerde metagegevens en lange inhoud zich in dezelfde tabel bevinden, is de echte uitdaging de orkestratie: beslissen wanneer er met SQL moet worden verwerkt, wanneer semantisch zoeken moet worden uitgevoerd en wanneer beide moeten worden gecombineerd. Subtiele details zoals het filteren van metagegevens en het routeren van instrumenten 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 prestatieproblemen.

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

Referentie

Sociale dieren 10.000 artikelen met NLP: Dataset door Alex P (eigenaar) (CC BY-SA 4.0)

De afbeeldingen die in dit artikel worden gebruikt, zijn gegenereerd met Google Gemini. Gegevensset gebruikt in 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