Vissza az eszközökhöz

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.

3 perc olvasás

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és beszélő: üzenet formá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

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.

Címkék
  • tudásgráf
  • memória
  • MCP
  • visszakeresés