Memória és tudásbázis
Graphiti
A Graphiti nyílt forráskódú keretrendszer időbeli tudásgráfok építéséhez: az epizódokból entitásokat és tényeket bont ki, a tények érvényességi ablakot kapnak.
A Graphiti a Zep nyílt forráskódú keretrendszere időbeli tudásgráfok építéséhez és lekérdezéséhez. Nem dokumentumtömböket indexel, hanem entitásokat, a köztük fennálló tényeket és ezek időbeli érvényességét tartja nyilván: minden tényhez tartozik, hogy mikortól igaz, és hogy egy későbbi adat felülírta-e. A felülírt tény nem törlődik, hanem érvénytelenné válik, így egy korábbi állapot is visszakérdezhető.
A gráf három rétegből áll. Az entitások csomópontok, amelyek összefoglalója az új adatokkal együtt változik. A tények élek: két entitás és a köztük lévő viszony, érvényességi ablakkal. Az epizódok pedig a nyers bemenetek, amelyekből minden leszármaztatott tény visszavezethető. Ez a származási lánc az, ami megkülönbözteti a vektoros visszakereséstől.
Miben más, mint egy klasszikus RAG?
- Időbeli kezelés. A tények érvényességi ablakot kapnak, az ellentmondó új adat a régit érvényteleníti.
- Származás. Minden csomópont és él visszavezethető arra az epizódra, amelyből keletkezett.
- Növekményes építés. Az új adat azonnal bekerül, nincs szükség a teljes gráf újraszámolására.
- Ontológia. Az entitás- és éltípusok előre megadhatók Pydantic modellekkel, de az adatból is kialakulhat a struktúra.
- Hibrid keresés. Szemantikus hasonlóság, BM25 kulcsszavas keresés és gráfbejárás egy rangsorolt találatlistában, LLM nélkül a rangsorolásban.
A dokumentáció szerint ez akkor tér el a hagyományos visszakereséstől, amikor az adat gyakran változik: batch feldolgozás helyett folyamatos frissítés történik.
Hogyan épül fel a memória?
A bemenet egysége az epizód, ami maga is csomópont a gráfban; a belőle kinyert entitások MENTIONS élekkel kapcsolódnak hozzá. Az ingest API három epizódtípust ismer:
text: strukturálatlan szöveg,message: beszélgetésbeszélő: üzenetformában,json: strukturált adat, amit a rendszer külön útvonalon dolgoz fel.
Az add_episode hívás megkapja a nevet, a tartalmat, a forrás típusát és egy referencia-időpontot, ami az esemény idejét rögzíti. Nagyobb importnál az add_episode_bulk több epizódot visz be egy körben, ez viszont nem végez élérvénytelenítést, ezért a dokumentáció szerint üres gráf feltöltésére való.
Tárolás és futtatás
A Graphiti maga nem tárol gráfot: hozott gráfadatbázisra épül, és LLM-et, illetve beágyazómodellt hív az extrakcióhoz.
- Gráfbackend. Neo4j 5.26, FalkorDB 1.1.2 vagy Amazon Neptune. Utóbbinál a teljes szöveges keresést egy OpenSearch Serverless gyűjtemény adja. A Kuzu támogatás elavult.
- LLM és beágyazás. Alapértelmezésben OpenAI, de Azure OpenAI, Anthropic, Gemini, Groq és helyi megoldások is beállíthatók OpenAI-kompatibilis végponton keresztül.
- Követelmények. Python 3.10 vagy újabb, futó gráfadatbázis és API-kulcs. A gráfot nálunk Docker konténerben futtatjuk.
- Terhelés. Az ingest párhuzamosságát a SEMAPHORE_LIMIT szabályozza; az alapérték 10, hogy ne fussunk szolgáltatói rate limitbe, ezért elsőre lassúnak tűnhet.
Az MCP szerver ugyanezt a funkcionalitást adja eszközként: epizód hozzáadása, tények és csomópontok keresése, epizódok listázása és törlése, gráf ürítése. A group_id több különálló gráfot különít el egy telepítésen belül. A szerver a saját dokumentációja szerint kísérleti, ezért érdemes a saját terhelésen mérni.
Amire figyelni kell
- Az extrakció minősége a modelltől függ. A strukturált kimenetet támogató szolgáltatásokkal működik jól; kisebb modelleknél hibás séma és sikertelen ingest várható.
- Az epizódnak bele kell férnie az LLM kontextusablakába, ezért a JSON bemenetet tömören érdemes tartani.
- Az MCP szerver kísérleti, az API verziók között változhat.
- A gráfadatbázist és a skálázást magunk üzemeltetjük; a felügyelt változat a Zep.
- Az anonim telemetria alapból be van kapcsolva, a GRAPHITI_TELEMETRY_ENABLED=false értékkel kapcsolható ki.
Tovább olvasás
- getzep/graphiti a GitHubon: a forráskód, a telepítés és a konfiguráció leírása.
- Quick Start: az első gráf, epizódok és keresés beállítása.
- Searching the Graph: hibrid keresés, rangsorolás és a beépített keresési receptek.
Nálunk a Graphiti a munkamenetek közti memória egyik rétege: a döntéseket és a megoldott hibákat epizódként visszük be, és a gráfot Hermes Agent alól, MCPHub szerveren keresztül kérdezzük le.