Home Nieuws Kosteneffectieve Agent-RAG’s bouwen op lange tekstdocumenten in SQL-tabellen

Kosteneffectieve Agent-RAG’s bouwen op lange tekstdocumenten in SQL-tabellen

2
0
Kosteneffectieve Agent-RAG’s bouwen op lange tekstdocumenten in SQL-tabellen

een betrouwbaar, kosteneffectief RAG-systeem met lage latentie op SQL-tabellen waarin grote documenten in lange tekstvelden worden opgeslagen – zonder het bestaande schema te wijzigen?

Dit is geen theoretisch probleem.

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

Met de komst van LLM zijn de zakelijke eisen geëvolueerd naar gestructureerd computergebruik, diep semantisch begrip en contextuele inzichten op een natuurlijke, gemoedelijke manier.

Bijvoorbeeld:

  • Hoeveel projecten ter waarde van meer dan 1 miljoen dollar zijn tussen 2023 en 2025 goedgekeurd?
  • Geef een samenvatting van de belangrijkste technologische trends van de afgelopen zes maanden
  • Wat zal er in 2025 anders zijn aan het winnende voorstel?

Dit vereist een ophaalstrategie die kan beslissen wanneer er moet worden berekend, wanneer semantisch moet worden gezocht en wanneer de twee moeten worden gecombineerd. In dit artikel demonstreer ik een Agentic RAG-architectuur die rechtstreeks op een traditionele SQL-database werkt (zonder schemawijzigingen) en bespreek ik de ontwerpprincipes die nodig zijn om deze betrouwbaar te maken in productie.

Systeeminstellingen

Voor deze illustratie heb ik een subset van de 10.000 sociale dierenartikelen met NLP-dataset gebruikt, die veel nieuwsartikelen en blogposts bevat, samen met hun metadata. De gemaakte SQL-database heeft de volgende kolommen: url, titel, auteur, publicatiedatum, artikelcategorie, aantal woorden en volledige inhoud.

De titel kan worden gezien als een unieke identificatie (primaire sleutel) voor de inhoud. De artikelcategorieën zijn technologie, zaken, sport, reizen, gezondheid, entertainment, politiek en mode. De artikelen zijn gelijkmatig verdeeld over categorieën. De gebruikte LLM is Gemini-2,5-flash en FAISS om vectorinbedding te indexeren en op te slaan. Dit ontwerp is van toepassing op alle LLM- of vectordatabaseopties.

Architectuur

Naast het insluiten van de onbewerkte tekst spiegelen we de metagegevens van de vectoropslag met dezelfde velden als aanwezig in SQL (behalve de volledige inhoud). Dit maakt het mogelijk Filterenzoals we zullen zien in de resultaten. Voor lange documenten kan een bijsnijd- en insluitingsstrategie met schuifvensters worden geïmplementeerd, waarbij metagegevens aan elke insluiting worden gekoppeld.

Bijgevoegd metadatacodefragment
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 speciale en intelligente tools gebouwd die dat mogelijk maken Reageermiddel kan worden aangeroepen met behulp van de volgende architectuur. De ReAct-agent (router) beheert de gehele querystroom door op intelligente wijze te beslissen welke tool moet worden aangeroepen op basis van de aard van de query. Het maakt gebruik van metagegevens en querycontext om te bepalen of een SQL-tool, vectortool of hybride aanpak het meest geschikt is. De volgende afbeelding toont 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. Het voert SQL-query’s uit
  2. search_articles (vectortool): Behandel vragen over specifieke inhoud, onderwerpen of entiteiten. Accepteert zoekopdrachten in natuurlijke taal en optioneel metadatafilters om globale semantische zoekopdrachten uit te voeren (bijvoorbeeld: “artikelen over kinderen“) of zoek naar een subset van gegevens (bijvoorbeeld: “filter_authors=’XYZ’, “query”=”artikel”).

Zoals u in de bovenstaande afbeelding kunt zien, kan de query het volgende pad volgen:

  1. Voor berekening (bijv. hoeveel artikelen..), ongelijkheid/bereik (bijv.: Artikelen gepubliceerd tussen januari en april 2023) of aggregatie (bijvoorbeeld; Wat is het gemiddelde aantal woorden..), gebruik alleen SQL-hulpmiddelen.
  2. Semantisch zoekenmet of zonder filters, gebruik het Vector-gereedschap zoals hierboven beschreven.
  3. Hybride zoekopdracht: Hybride zoekopdrachten zijn vooral belangrijk wanneer u zowel gestructureerde gegevens (bijvoorbeeld filteren op datum) als ongestructureerde inhoud (bijvoorbeeld semantisch zoeken op artikelen) nodig heeft. Query’s hebben filtercriteria voor metagegevens (meestal categorieën of datumbereiken), die SQL-hulpprogramma’s gebruiken om artikelen op te halen. Vervolgens wordt de lijst met titels doorgegeven aan de Vector-tool om een ​​semantische zoekopdracht uit te voeren op alleen die artikelen. Een voorbeeld is “Tussen maart en mei 2023 verschijnen er artikelen over Moederdag in de mode

Resultaten

Hieronder vindt u de resultaten van verschillende zoekopdrachten van elk type. Het zou interessant zijn om het gevolgde gereedschapspad in elk geval te noteren.

1. “wat zijn de artikelen per jaar en categorie?” — Dit is een computationeel complexe query, dus er zullen alleen SQL-tools worden gebruikt.

De resultaten zijn 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. “artikelen over welke kinderen heb je?” — Dit kwam met geen enkele van de metagegevenscategorieën in het schema overeen, dus besloot de agent de Vector-tool te gebruiken met globaal semantisch zoeken.

De resultaten zijn 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 categorie = mode en voert semantische matching uit met behulp van de Vector-tool met deze filtercriteria.

De resultaten zijn 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 een lijst met titels. De resultaten zullen in die subset worden gevonden.

De resultaten zijn 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 bij veerkrachtige toepassingen. Hier zijn er enkele:

  • Extra document 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 het beoogde doel, zonder overlap of conflict, voor betrouwbare agentprestaties. De docstring-tool, die zich binnenin bevindt @tool decorateur, uitgelegd wat het hulpmiddel doet En hoe te gebruiken. Naast de gereedschapsnaam specificeert het ook parameters, type en beschrijving.
Hier is een 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 begeleiden systeemopdrachten op intelligente wijze de routeringsstrategie van de agent, waardoor deze kan beslissen wanneer SQL-tools, Vector-tools of een combinatie van beide worden gebruikt. Het is ook het meest complexe en kwetsbare onderdeel van de applicatie. Het definieert hoe tools worden gecombineerd in een hybride workflow, geeft voorbeelden van correct toolgebruik en definieert verplichte regels en beperkingen. Om systeemprompts adequaat te ontwerpen, is het van cruciaal belang om te beginnen met een testcase-repository van verwachte gebruikersquery’s, voorbeelden te geven in systeemprompts en deze voortdurend te verrijken voor afwijkingen die tijdens de werking in randgevallen optreden.
Hieronder volgt een voorbeeld van een 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"
    ...
)
  • Vectordatabase voor en na het filteren: Dit is een subtiel punt dat tot ongewenste resultaten kan leiden en voor bepaalde zoekopdrachten moeilijk uit te leggen is. Beschouw de volgende twee vragen waarvan het enige verschil een verkeerd gespelde naam is: “samengevatte artikelen over Doo ley in de politiek op 17 april 2023” En “samengevatte artikelen over Dooley in de politiek op 17 april 2023“. Beide zoekopdrachten volgen hetzelfde pad, waarbij de SQL-tool met succes titels voor deze categorieën en datums selecteert (er is slechts 1 artikel waarin Judge Dooley wordt genoemd), waarna de Vector-tool wordt aangeroepen in deze lijst met titels met de zoekopdracht. Vreemd genoeg retourneert de Vector-tool voor de eerste zoekopdracht "Tool Output: No documents found matching the criteria." voor deze kleine spelfout heeft de lijst echter slechts één artikel waaruit u kunt kiezen, terwijl deze voor de tweede zoekopdracht het juiste artikel retourneert.
Hieronder volgen de resultaten 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. Dat is omdat FAISS (en Chroma enz.) verschijnen post-screening — voer eerst een globale zoekopdracht uit voor de zoekopdracht en filter vervolgens de resultaten op metadata (= lijst met titels). In dit geval wordt het juiste artikel niet weergegeven in de top_k = 3 artikelen na semantisch zoeken. A voorscreening de database daarentegen zal alleen een semantische zoekopdracht uitvoeren op de artikelen in de titellijst en het juiste artikel vinden, zelfs als het verkeerd gespeld is.

  • Kunnen alle metadatafilters uit Vector Tools worden verwijderd?: Ja, het is mogelijk, maar het is een duurdere optieals een eenvoudige semantische query met metadatafilters (zoals categorie of auteur), zou het een hybride query zijn, waarvoor twee toolaanroepen nodig zijn, wat tokengebruik en latentie toevoegt. Een pragmatische middenweg is om datums (en misschien andere numerieke metadata zoals het aantal woorden in dit geval) alleen in SQL op te slaan, en alle tekst en categorische metadata weer te geven in een vectordatabase.

Conclusie

Het bouwen van RAG bovenop SQL gaat niet over het toevoegen van inbedding. Het gaat om het ontwerpen van de juiste terughaalstrategie.

Wanneer gestructureerde metagegevens en lange inhoud zich in dezelfde tabel bevinden, is de echte uitdaging de orkestratie: beslissen wanneer er moet worden berekend met SQL, wanneer semantisch moet worden gezocht en wanneer de twee moeten worden gecombineerd. Fijne 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 ondersteunen 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

10K artikelen Sociale dieren 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. De gebruikte datasets staan ​​hieronder CC-BY-SA 4.0-licentie. Afbeelding en basiscode die ik heb gemaakt.

Nieuwsbron

LAAT EEN REACTIE ACHTER

Vul alstublieft uw commentaar in!
Vul hier uw naam in