GraphRAG: Keď LLM prestane hádať a začne sa pýtať
GraphRAG: Nová generácia RAG, ktorá konečne funguje
Retrieval-Augmented Generation (RAG) bol prelomový koncept. Dal LLM modelom schopnosť nahliadnuť do externých dokumentov a odpovedať na otázky na základe faktov, nie len na základe natrénovaných dát. Bol to veľký krok v boji proti halucináciám. Ale každý, kto implementoval RAG v praxi, narazil na jeho limity:
- Sémantické vyhľadávanie je nepresné: Vyhľadávanie "podobných" textov často vráti irelevantné alebo len čiastočne relevantné informácie.
- Strata kontextu: Rozdelenie dokumentov na malé kúsky (chunks) ničí väzby a štruktúru pôvodnej informácie.
- Komplexné otázky zlyhávajú: Otázky vyžadujúce spojenie informácií z viacerých dokumentov sú pre RAG takmer neriešiteľné.
GraphRAG je odpoveďou na tieto problémy. Namiesto ukladania textových chunkov do vektorovej databázy, transformujeme naše dáta na Knowledge Graph – sieť prepojených entít a vzťahov. LLM potom neprehľadáva texty, ale kladie štruktúrované otázky priamo do tohto grafu.
Od textu ku Knowledge Graphu
Predstavte si nasledujúci text z interných dokumentov firmy:
"Ján Vážny, vedúci tímu 'Alpha', pracuje v našej firme od roku 2018. Projekt 'Phoenix', na ktorom Ján pracoval, bol dokončený v Q3 2022 a používal programovací jazyk Python. Jánovým manažérom je Eva Múdra. Tím 'Alpha' je súčasťou oddelenia 'Inovácie'."
Tradičný RAG prístup
Text sa rozdelí na chunky a uloží do vektorovej databázy.
chunk1: "Ján Vážny, vedúci tímu 'Alpha', pracuje v našej firme od roku 2018."chunk2: "Projekt 'Phoenix', na ktorom Ján pracoval, bol dokončený v Q3 2022 a používal Python."chunk3: "Jánovým manažérom je Eva Múdra. Tím 'Alpha' je súčasťou oddelenia 'Inovácie'."
Otázka: "Kto je manažérom vedúceho tímu, ktorý pracoval na projekte v Pythone?" Tradičný RAG pravdepodobne zlyhá. Sémantické vyhľadávanie možno nájde všetky tri chunky, ale LLM bude mať problém poskladať z nich správnu odpoveď.
GraphRAG prístup
Ten istý text transformujeme na Knowledge Graph (napr. v Neo4j):
-
Extrakcia entít a vzťahov: Pomocou LLM prejdeme text a identifikujeme uzly a hrany.
-
Uzly (Nodes):
(p1:Person {name: 'Ján Vážny', position: 'vedúci tímu'})(p2:Person {name: 'Eva Múdra'})(t:Team {name: 'Alpha'})(d:Department {name: 'Inovácie'})(proj:Project {name: 'Phoenix', status: 'dokončený'})(lang:Language {name: 'Python'})
-
Vzťahy (Relationships):
(p1)-[:MEMBER_OF]->(t)(p1)-[:WORKED_ON]->(proj)(p2)-[:MANAGES]->(p1)(t)-[:PART_OF]->(d)(proj)-[:USES]->(lang)
-
Tento graf je teraz našou "znalostnou bázou".
Ako funguje GraphRAG query?
Teraz sa vráťme k našej otázke: "Kto je manažérom vedúceho tímu, ktorý pracoval na projekte v Pythone?"
Workflow vyzerá takto:
-
Text-to-Cypher: Používateľ položí otázku v prirodzenom jazyku. Iný LLM, špeciálne trénovaný na preklad do dopytovacieho jazyka (napr. Cypher pre Neo4j), transformuje otázku na query.
cypherMATCH (manager:Person)-[:MANAGES]->(leader:Person {position: 'vedúci tímu'})-[:WORKED_ON]->(project:Project)-[:USES]->(lang:Language {name: 'Python'}) RETURN manager.name -
Spustenie query: Táto Cypher query sa spustí priamo nad Neo4j databázou. Databáza je extrémne efektívna v prechádzaní takýchto vzťahov.
-
Získanie presných dát: Query vráti presný výsledok:
{name: 'Eva Múdra'}. Žiadne irelevantné chunky, žiadne sémantické hádanie. -
Cypher-to-Text: LLM zoberie štruktúrovaný výsledok z databázy a sformuluje ho do ľudsky čitateľnej odpovede.
"Manažérom vedúceho tímu, ktorý pracoval na projekte v Pythone, je Eva Múdra."
Prečo je GraphRAG budúcnosť?
-
Presnosť a redukcia halucinácií: Odpovede sú založené na faktoch a explicitných vzťahoch v grafe, nie na sémantickej podobnosti textov. Ak vzťah neexistuje, databáza nevráti nič, a LLM môže povedať "Neviem".
-
Schopnosť odpovedať na komplexné, viac-krokové otázky: GraphRAG exceluje v otázkach, ktoré vyžadujú "skákanie" cez viacero entít a vzťahov. "Ukáž mi všetky projekty v Pythone, na ktorých pracovali ľudia z oddelenia 'Inovácie', ktorých manažér je starší ako 40 rokov." – pre tradičný RAG nočná mora, pre GraphRAG bežná úloha.
-
Kontext je zachovaný: Namiesto izolovaných chunkov pracujeme s bohatou sieťou informácií. Vidíme, ako všetko so všetkým súvisí.
-
Efektivita: Prechádzanie grafu je pre tento typ úloh oveľa rýchlejšie ako sémantické vyhľadávanie v miliónoch vektorov.
-
Možnosť objavovať skryté vzťahy: Analýzou grafu môžeme odhaliť vzťahy, ktoré neboli v pôvodných textoch explicitne uvedené (napr. "Títo dvaja ľudia síce nie sú v jednom tíme, ale pracovali na troch rovnakých projektoch – možno by mali spolupracovať.").
Výzvy a nevýhody
GraphRAG nie je bez chýb:
- Zložitejší Ingestion Pipeline: Transformácia nestruktúrovaných dát na kvalitný Knowledge Graph je netriviálna úloha. Vyžaduje starostlivú extrakciu entít a vzťahov, čo môže byť samo o sebe náročné na presnosť.
- Kvalita Text-to-Cypher modelu: Schopnosť LLM správne preložiť prirodzený jazyk na Cypher je kľúčová. Chyba v preklade vedie k zlým výsledkom. Našťastie, modely sa v tejto oblasti rýchlo zlepšujú.
Záver
GraphRAG predstavuje fundamentálny posun v tom, ako LLM interagujú s dátami. Namiesto toho, aby sme sa spoliehali na hmlistú "sémantickú podobnosť", dávame LLM modelom nástroj, ako klásť presné a cielené otázky. Je to krok od hádania k dedukcii. Cesta k implementácii je zložitejšia ako pri jednoduchom RAG, ale výsledky – presnosť, rýchlosť a schopnosť odpovedať na skutočne komplexné otázky – stoja za to. Ak chcete budovať AI aplikácie, ktoré nielen rozprávajú, ale aj rozumejú, GraphRAG je technológia, ktorú by ste mali sledovať.