Start Nachrichten Erstellen einer kosteneffizienten Agenten-RAG für Langtextdokumente in SQL-Tabellen

Erstellen einer kosteneffizienten Agenten-RAG für Langtextdokumente in SQL-Tabellen

24
0
Erstellen einer kosteneffizienten Agenten-RAG für Langtextdokumente in SQL-Tabellen

ein zuverlässiges, kosteneffizientes RAG-System mit geringer Latenz auf einer SQL-Tabelle, das große Dokumente in Langtextfeldern speichert – ohne das bestehende Schema zu ändern?

Dies ist kein theoretisches Problem.

In den meisten Unternehmen sind wichtige Geschäftskenntnisse bereits in traditionellen relationalen Datenbanken gespeichert. Vorschläge, Berichte, Verträge, Artikel – alles gespeichert in TEXT oder LONGTEXT Spalten – für den Schlüsselwortabgleich und die Aggregation konzipiert, nicht für den semantischen Abruf.

Mit dem Aufkommen von LLMs haben sich die Geschäftsanforderungen hin zu strukturierter Berechnung, tiefem semantischem Verständnis und kontextbezogenen Erkenntnissen auf natürliche, konversationelle Weise weiterentwickelt.

Zum Beispiel:

  • Wie viele Projekte über 1 Mio. USD wurden von 2023 bis 2025 genehmigt?
  • Fassen Sie die wichtigsten Technologietrends der letzten 6 Monate zusammen
  • Was zeichnet die erfolgreichen Vorschläge im Jahr 2025 aus?

Sie erfordern eine Abrufstrategie, die entscheiden kann, wann eine Berechnung durchgeführt wird, wann eine semantische Suche durchgeführt wird und wann beides kombiniert wird. In diesem Artikel zeige ich eine Agentic RAG-Architektur, die direkt auf einer herkömmlichen SQL-Datenbank läuft – ohne Schemaänderungen – und bespreche die Designprinzipien, die erforderlich sind, um sie in der Produktion zuverlässig zu machen.

Systemeinrichtung

Für diese Veranschaulichung habe ich eine Teilmenge des Datensatzes „Social Animal 10K Articles with NLP“ verwendet, der eine große Anzahl von Nachrichtenartikeln und Blogbeiträgen sowie Metadaten enthält. Die erstellte SQL-Datenbank enthält die folgenden Spalten: URL, Titel, Autoren, Veröffentlichungsdatum, Artikelkategorie, Wortanzahl und der vollständige_Inhalt.

Der Titel kann als eindeutige Kennung (Primärschlüssel) für den Inhalt betrachtet werden. Die Artikelkategorien sind Technik, Wirtschaft, Sport, Reisen, Gesundheit, Unterhaltung, Politik und Mode. Die Artikel verteilen sich ungefähr gleichmäßig auf die Kategorien. Das verwendete LLM ist Gemini-2.5-Flash und FAISS um die Vektoreinbettungen zu indizieren und zu speichern. Das Design ist für jede beliebige LLM- oder Vektordatenbank anwendbar.

Architektur

Neben der Einbettung des Rohtextes haben wir die Metadaten des Vektorspeichers mit denselben Feldern gespiegelt, die in SQL vorhanden sind (mit Ausnahme des vollständigen Inhalts). Dies ermöglicht Filternwie wir in den Ergebnissen sehen werden. Bei langen Dokumenten kann eine Sliding-Window-Chunking- und Einbettungsstrategie angewendet werden, bei der die Metadaten an jede Einbettung angehängt werden.

Das Metadaten-Code-Snippet ist beigefügt
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)

Wir haben zwei spezialisierte, intelligente Tools entwickelt, die die ReAct-Agent kann mit der folgenden Architektur aufgerufen werden. Der ReAct-Agent (Router) orchestriert die gesamte Abfragepipeline, indem er basierend auf der Art der Abfrage intelligent entscheidet, welches Tool aufgerufen werden soll. Es verwendet die Metadaten und den Abfragekontext, um zu bestimmen, ob das SQL-Tool, das Vektortool oder ein Hybridansatz am besten geeignet ist. Die folgende Abbildung zeigt den Abfrageentscheidungsfluss:

Entscheidungsfluss für Abfragen

Die Werkzeuge sind wie folgt:

  1. search_database (SQL-Tool): Behandelt Fragen, die Berechnungen, Aggregationen oder komplexe Logik erfordern. Es führt SQL-Abfragen aus
  2. search_articles (Vektor-Tool): Behandelt Fragen zu Inhalten, Themen oder bestimmten Entitäten. Akzeptiert eine Abfrage in natürlicher Sprache und optional Metadatenfilter, um eine globale semantische Suche durchzuführen (z. B. „Artikel über Kinder“) oder durchsuchen Sie eine Teilmenge der Daten (z. B.: „filter_authors=’XYZ‘, „query“=“articles“).

Wie in der obigen Abbildung zu sehen ist, kann eine Abfrage die folgenden Wege nehmen:

  1. Für Berechnungen (z. B. wie viele Artikel…), Ungleichungen/Bereich (z. B.: Artikel, die zwischen Januar und April 2023 veröffentlicht wurden) oder Aggregationen (z. B.; Wie hoch ist die durchschnittliche Wortzahl?), verwenden Sie ausschließlich das SQL-Tool.
  2. Semantische Suchemit oder ohne Filter, verwenden Sie das Vektor-Werkzeug wie oben beschrieben.
  3. Hybridabfrage: Hybridabfragen sind unerlässlich, wenn Sie sowohl strukturierte Daten (z. B. Filterung nach Datum) als auch unstrukturierte Inhalte (z. B. semantische Suche nach Artikeln) benötigen. Die Abfrage verfügt über ein Metadatenfilterkriterium (normalerweise eine Kategorie oder einen Datumsbereich), für das das SQL-Tool zum Abrufen von Artikeln verwendet wird. Anschließend wird die Titelliste an das Vektortool übergeben, um eine semantische Suche nur für diese Artikel durchzuführen. Ein Beispiel wäre „Gibt es zwischen März und Mai 2023 einen Artikel über den Muttertag in der Mode?

Ergebnisse

Hier sind die Ergebnisse einiger Abfragen jedes Typs. Es wäre interessant, den jeweils eingeschlagenen Tool-Pfad zu beachten.

1. „Was sind die Artikel nach Jahr und Kategorie?” – Dies ist eine komplexe Berechnungsabfrage, daher wird nur das SQL-Tool verwendet.

Das Ergebnis ist 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. „Welche Artikel über Kinder gibt es bei Ihnen?” – Dies stimmt mit keiner der Metadatenkategorien überein, aus denen das Schema besteht, daher entscheidet sich der Agent, das Vector-Tool mit einer globalen semantischen Suche zu verwenden.

Das Ergebnis ist 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. „Was sind die Trends in der Mode?„ – Der Agent findet die Kategorie = Mode und führt den semantischen Abgleich mithilfe des Vektortools mit diesen Filterkriterien durch.

Das Ergebnis ist 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. „Erzählen Sie mir Technologieartikel über Krypto im Jahr 2023„ – Dies ist eine Hybridabfrage, bei der das SQL-Tool verwendet wird, um die Titel im Jahr 2023 für Kategorie = Technologie abzurufen. Anschließend wird das Vector-Tool mit der Abfrage = Krypto und der Titelliste aufgerufen. Das Ergebnis wird in dieser Teilmenge gefunden.

Das Ergebnis ist 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.

Wichtige Überlegungen

Wie bei jeder Architektur gibt es Designprinzipien, die für eine robuste Anwendung berücksichtigt werden müssen. Hier sind einige davon:

  • Tool-Dokumentzeichenfolgen im Vergleich zur Systemeingabeaufforderung: Dies sind zwei Arten von Anweisungen, die das Verhalten des Agenten auf unterschiedliche Weise steuern. Für eine zuverlässige Agentenleistung ist es wichtig, sie für die beabsichtigten Zwecke ohne Überschneidungen oder Konflikte zu verwenden. Tool-Dokumentzeichenfolge, befindet sich im @tool Dekorateur, beschreibt was das Tool macht Und wie man es benutzt. Neben dem Werkzeugnamen definiert es die Parameter, Typen und Beschreibungen.
Hier ist das Beispiel der Dokumentationszeichenfolge des Tools „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.
    ...
    """
  • Andererseits steuert die Systemeingabeaufforderung die Routing-Strategie für den Agenten intelligent und ermöglicht ihm die Entscheidung, wann das SQL-Tool, das Vector-Tool oder eine Kombination davon verwendet werden soll. Es ist auch die komplexeste und fragilste Komponente der Anwendung. Es definiert, wie Werkzeuge in hybriden Arbeitsabläufen kombiniert werden, liefert Beispiele für die korrekte Verwendung von Werkzeugen und legt verbindliche Regeln und Einschränkungen fest. Um die Systemeingabeaufforderung angemessen zu gestalten, ist es wichtig, mit einem Testfall-Repository mit erwarteten Benutzerabfragen zu beginnen, Beispiele in der Systemeingabeaufforderung bereitzustellen und diese weiterhin um Abweichungen zu erweitern, die bei Randfällen während des Betriebs auftreten.
Hier ist ein Beispiel der Systemaufforderung
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"
    ...
)
  • Vor- und Nachfilter-Vektordatenbanken: Dies ist ein subtiler Punkt, der bei bestimmten Abfragen zu unbeabsichtigten und schwer zu erklärenden Ergebnissen führen kann. Betrachten Sie die folgenden zwei Abfragen, bei denen der einzige Unterschied in der falsch geschriebenen Namensbezeichnung liegt: „Fassen Sie Artikel über Doo Ley in der Politik am 17. April 2023 zusammen“ Und „Fasst Artikel über Dooley in der Politik am 17. April 2023 zusammen„Beide Abfragen folgen identischen Pfaden, wobei das SQL-Tool erfolgreich die Titel für diese Kategorie und dieses Datum auswählt (es gibt nur einen Artikel, in dem Richter Dooley erwähnt wird), dann wird das Vector-Tool für diese Titelliste mit der Abfrage aufgerufen. Seltsamerweise gibt das Vector-Tool für die erste Abfrage zurück.“ "Tool Output: No documents found matching the criteria." für diesen kleinen Rechtschreibfehler, auch wenn die Liste nur einen Artikel zur Auswahl hat, während bei der zweiten Abfrage der richtige Artikel zurückgegeben wird.
Hier ist das Ergebnis der ersten Abfrage
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.
Und die zweite Frage
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.

Und der Grund ist nicht nur eine schwächere Einbettung aufgrund falscher Schreibweise. Es liegt daran FAISS (und Chroma usw.) ausführen Nachfilterung — Führen Sie zunächst eine globale Suche nach der Abfrage durch und filtern Sie dann die Ergebnisse nach den Metadaten (= der Titelliste). In diesem Fall ist der richtige Artikel nicht im Artikel enthalten top_k = 3 Artikel nach semantischer Suche. A Vorfilterung Die Datenbank hingegen hätte die semantische Suche nur für die Artikel in der Titelliste durchgeführt und den richtigen Artikel auch bei falscher Schreibweise gefunden.

  • Können alle Metadatenfilter aus dem Vector Tool entfernt werden?: Ja, es ist möglich, aber es ist ein Option mit höheren Kostenda einfache semantische Abfragen mit einem Metadatenfilter (z. B. Kategorie oder Autor) zu einer Hybridabfrage werden, die zwei Toolaufrufe erfordert, was die Tokennutzung und Latenz erhöht. Ein pragmatischer Mittelweg wäre, Datumsangaben (und möglicherweise auch andere numerische Metadaten, wie in diesem Fall die Anzahl der Wörter) nur im SQL zu belassen und alle Text- und kategorialen Metadaten in der Vektordatenbank zu spiegeln.

Abschluss

Beim Aufbau von RAG auf SQL geht es nicht darum, Einbettungen hinzuzufügen. Es geht darum, die richtige Retrieval-Strategie zu entwerfen.

Wenn strukturierte Metadaten und lange Inhalte in derselben Tabelle gespeichert sind, liegt die eigentliche Herausforderung in der Orchestrierung – der Entscheidung, wann mit SQL gerechnet, wann eine semantische Suche durchgeführt und wann beides kombiniert werden soll. Subtile Details wie Metadatenfilterung und Tool-Routing können den Unterschied zwischen einem zuverlässigen System und einem System, das stillschweigend ausfällt, ausmachen.

Mit einer gut konzipierten Agentic RAG-Schicht können ältere SQL-Datenbanken semantische Anwendungen ohne Schemaänderungen, kostspielige Migrationen oder Leistungseinbußen betreiben.

Treten Sie mit mir in Kontakt und teilen Sie Ihre Kommentare unter www.linkedin.com/in/partha-sarkar-lets-talk-AI

Referenz

Social Animal 10K-Artikel mit NLP – Datensatz von Alex P (Inhaber) (CC BY-SA 4.0)

Die in diesem Artikel verwendeten Bilder werden mit Google Gemini generiert. Datensatz verwendet unter CC-BY-SA 4.0-Lizenz. Von mir erstellte Abbildungen und zugrunde liegender Code.

Quelle

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein