知識圖:給 AI Agent 裝長期記憶的最小 20 行方案)
Graphiti 時態(tài)知識圖給 AI Agent 裝長期記憶的最小 20 行方案【免費下載鏈接】graphitiBuild Real-Time Knowledge Graphs for AI Agents項目地址: https://gitcode.com/GitHub_Trending/grap/graphiti它解決什么問題如果你在做一個 AI Agent發(fā)現(xiàn)它總是失憶——用戶上次說過的話轉頭就忘數(shù)據(jù)在某時某刻是什么樣子也說不清那 Graphiti 就是你要找的 AI Agent 記憶層。它把對話、業(yè)務數(shù)據(jù)、外部內容實時增量地吃進來實時構建一張可隨時查詢的時態(tài)知識圖事實帶雙時間戳歷史時點查詢不用重算全圖。核心能力一覽說白了數(shù)據(jù)丟進去它自動抽實體和關系查詢時向量、關鍵詞、圖遍歷三路一起打分而且每條事實都知道自己何時為真。能力一句話說明對你意味著什么實時增量更新新內容即時入圖不批量重建記憶永遠最新省掉整庫重跑雙時態(tài)模型每條關系帶生效時間和攝入時間當時是什么情況這種問題能直接答混合檢索語義向量 BM25 關鍵詞 圖遍歷組合低延遲出結果不靠 LLM 兜底匯總自定義本體用 Pydantic 模型定義自己的實體和關系按你的業(yè)務建模而不是套用默認結構多存儲后端Neo4j、FalkorDB、Kuzu、Neptune 都支持用你手里現(xiàn)成的圖數(shù)據(jù)庫就能跑最快上手路徑跑起來之前只需要四樣東西Python 3.10pip install graphiti-core一行裝好本地圖數(shù)據(jù)庫Neo4j 5.26 或 FalkorDBDocker 起都行配好OPENAI_API_KEY實體抽取和向量化都用它倉庫里examples/quickstart/有官方樣例對照改就行下面這 20 行就是連接 → 建索引 → 喂一條數(shù)據(jù) → 混合搜索的完整閉環(huán) ?import asyncio from graphiti_core import Graphiti from graphiti_core.nodes import EpisodeType async def main(): # 連接本地 Neo4j g Graphiti(bolt://localhost:7687, neo4j, password) # 建索引和約束只需跑一次 await g.build_indices_and_constraints() # 喂一段文本框架自動抽出實體和關系 await g.add_episode( nameEpisode 0, episode_bodyKamala Harris is the Attorney General of California., sourceEpisodeType.text, ) # 混合檢索語義向量 BM25 關鍵詞 results await g.search(Who is the California Attorney General?) print(results[0].fact) await g.close() asyncio.run(main())跑完你會拿到一條條帶生效時間區(qū)間的事實陳述而不是 RAG 那種相似度比較高的幾段文字——這是兩者最本質的區(qū)別。三個真實場景電商推薦先把誰喜歡什么畫成圖你會用它把商品頁、用戶評論、客服對話不斷喂進圖里。倉庫里 TinyBirds 這個樣例會把商品TinyBirds Wool Runners、用戶jess、尺碼變體5T、8T……自動抽成實體再用MENTIONS、INTERESTED_IN、HAS_SIZE_VARIANT這類關系串起來。再問jess 對哪些商品有興趣返回的是結構化的圖路徑而不是一堆文本碎片。客服 Agent讓它真的記住客戶你會用它把每輪對話用add_episode寫進圖里。客戶下次說我上次講過……時Agent 直接從圖里取回歷史說法和它的時間范圍不靠上下文窗口硬扛。新對話只更新相關節(jié)點和邊老圖不用動。歷史查詢審計和當時是什么樣事實變了比如換崗、改地址Graphiti 不刪舊關系而是用雙時態(tài)字段把它標記為失效。于是2015 年時誰在加州檢察長任上這條用戶信息在攝入前長什么樣都能按時間點回答合規(guī)審計、決策回溯這類場景直接受益。容易踩的坑 調優(yōu)建議 坑一忘了建索引搜索又空又慢現(xiàn)象連接成功、數(shù)據(jù)也進去了search卻返回空或慢得出奇。原因Graphiti 依賴圖庫里的向量和全文索引這些不會自動存在。解法啟動時先調一次build_indices_and_constraints()開發(fā)環(huán)境想重置就帶delete_existingTrue重建。坑二Graph not found: default_db報錯現(xiàn)象一啟動就拋 Neo4j 的 DatabaseNotFound。原因驅動默認連的數(shù)據(jù)庫名和你實際用的對不上。解法構建驅動時顯式傳database參數(shù)指向真實庫名別改完默認值再排查半天。調優(yōu)大批量歷史數(shù)據(jù)入庫慢現(xiàn)象一次性灌幾百份文檔慢到想殺進程。原因每條 episode 都要過 LLM 抽實體、去重串行時就是瓶頸。解法歷史存量用框架提供的批量接口并行入庫日常新增的對話走實時單條插入兩者分開跑。周邊與延伸Neo4j默認圖存儲后端向量與全文索引成熟你已有 Neo4j 集群就能直接接。FalkorDBRedis 生態(tài)的實時圖數(shù)據(jù)庫延遲低官方把它列為替代后端Docker 一鍵起。MCP Server倉庫自帶mcp_server/子項目把圖查詢能力封裝成 MCP 工具Cursor 這類 IDE 里直接調用省掉自己寫集成層。底層設計思路來自 Zep 團隊發(fā)表的 Zep 論文arXiv 2501.13956倉庫images/目錄里留了論文首頁截圖想快速理解時態(tài)知識圖的雙時間戳動機可以翻一翻【免費下載鏈接】graphitiBuild Real-Time Knowledge Graphs for AI Agents項目地址: https://gitcode.com/GitHub_Trending/grap/graphiti創(chuàng)作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考