返回首页

LLM 持久化内存 NGT Memory

NGT Memory — 开放 LLM 持久化内存模块,带有三种检索机制:余弦、Hebbian graph、consolidation。结构化 profile、质量过滤器,测试中 94%。Docker 启动、无需外部 DBs 的 REST API。

NGT Memory:带有 Hebbian graph 的 LLM 内存
Advertisement 728x90

NGT Memory:基于关联图与用户画像的LLM持久化记忆模块

NGT Memory为大型语言模型实现无需外部存储的持久化记忆。该模块跨会话存储用户事实,检索相关上下文,并将其注入提示中。三种检索机制确保准确性:嵌入向量的余弦相似度、赫布关联图以及分层整合。

余弦相似度比较查询嵌入与存储事实。关联图连接共同激活的概念:例如,提及饮食的查询与餐厅相关时,会提取相应事实。整合机制将频繁使用的事实提升至长期记忆,替换很少请求的内容。

在CPU上检索时间为2–3毫秒。主要延迟来自OpenAI API:嵌入约700毫秒,生成约800–1500毫秒。

Google AdInline article slot

安装与API

模块通过Docker运行:

git clone https://github.com/ngt-memory/ngt-memory
cd ngt-memory
cp .env.example .env  # OPENAI_API_KEY
docker-compose up -d

客户端代码:

import httpx

client = httpx.Client(base_url="http://localhost:9190")

# 存储事实
client.post("/chat", json={
    "message": "我是素食主义者,住在莫斯科。",
    "session_id": "user_42"
})

# 通过会话检索
r = client.post("/chat", json={
    "message": "我该吃什么?",
    "session_id": "user_42"
})
print(r.json()["response"])  # 莫斯科的素食餐厅
print(r.json()["memories_count"])  # 2

端点:/chat/store/retrieve/session/reset/health

Google AdInline article slot

结构化用户画像

系统从消息中提取槽位:年龄、城市、饮食、过敏信息。数据以优先级注入系统提示:

[用户画像 — 结构化事实,最高优先级]
  - 年龄: 30
  - 城市: "莫斯科"
  - 饮食: "素食"
[结束用户画像]

[记忆上下文 — 已验证的用户事实]
  1. [0.91] 我是素食主义者,住在莫斯科。
[结束记忆上下文]

片段拼接: “我” + “30” + “岁” → “我30岁” → 年龄=30(置信度0.6)。

冲突解决: 防止年龄减少,除非出现“我搞错了”等短语。修正模式 — 60秒。

Google AdInline article slot

质量过滤与架构

过滤器剔除无效内容:

  • 纯数字、特殊字符、单个词语
  • 少于6个字母
  • 助手对用户无效输入的回应

架构:

  • POST /chat
  • OpenAI text-embedding-3-small(约700毫秒)
  • 画像提取(正则表达式)
  • NGT Memory检索(余弦+关联图,2–3毫秒)
  • OpenAI gpt-4.1-nano(约800–1500毫秒)
  • 过滤 → 存储

技术栈:FastAPI、AsyncOpenAI、Pydantic。存储于单进程RAM中。

实验结果

实验44: 带记忆的事实准确性为2.44/3(比无记忆的1.22/3提升100%)。

实验48: A/B测试,94%记忆获胜(17/18),平均得分0.889 vs 0.056。

实验49: 在边缘案例(跨语言、拼接、冲突)上达到51/54(94%)。

性能(5000条事实):

| 操作 | 吞吐量 | p50 |

|-----------|------------|-----|

| store() | 3450/秒 | 0.29毫秒 |

| retrieve()| 150/秒 | 6.3毫秒 |

端到端:记忆2.5毫秒,嵌入764毫秒。

扩展挑战

  • 多工作进程:每个工作进程有独立的SessionStore。解决方案:--workers 1或使用Redis。
  • 软提示:模型忽略事实。强化:"将每个事实视为绝对真理。"
  • 正则表达式错误:我对...过敏姓名=过敏。黑名单25+词语。

关键要点

  • 结合余弦相似度、关联图与整合,在边缘测试中达到94%准确率。
  • 结构化画像与提示优先级使准确性翻倍。
  • 质量过滤器防止无效内容导致搜索性能下降。
  • 记忆延迟2–3毫秒,非瓶颈。
  • 开源,BSL 1.1许可,支持Docker。

— Editorial Team

Advertisement 728x90

继续阅读