开源项目 GitHub Trending Weekly 2026-07-05T14:17 正文 ok 1908 words

Cognee:为 AI Agent 赋予持久长期记忆的自托管知识图谱引擎

英文标题:🔥 topoteretes/cognee

Cognee 是一个面向 AI Agent 的开源记忆平台,可摄取任意格式数据并持续构建自托管知识图谱,使 Agent 拥有跨会话的长期记忆。它融合向量嵌入、图推理与认知科学本体生成,并提供 Claude Code 插件、MCP 服务器及多语言客户端。在单 Postgres 实例上运行整个记忆层的搜索速度比分离式图+向量堆栈快约 10%,极大简化了开发者部署记忆基础设施的复杂度。
打开原文相关 5 · 机会 5
media3.8 KB media2.7 KB media2.7 KB media1007 B media1.0 KB media1.2 KB media1.3 KB media1.3 KB media1.3 KB media5.1 KB media3.2 MB media5.3 KB media5.1 KB media2.3 KB media102.4 KB media2.3 KB media4.1 KB media1.5 KB media8.3 KB media2.0 KB

中文

📄 阅读研究论文:优化知识图谱与 LLM 之间的接口以实现复杂推理 — Markovic 等人,2025

Cognee 是一个面向 AI Agent 的开源 AI 记忆平台。它可以摄入任意格式的数据,并持续构建一个自托管的知识图谱,为你的 Agent 提供跨会话的持久长期记忆。Cognee 将向量嵌入、图推理以及基于认知科学的 Ontology 生成相结合,使文档既能按意义被搜索,又能通过不断演进的关系相互连接。

⭐ 帮助我们触达更多开发者,壮大 Cognee 社区。为本仓库加星!

📚 查阅详细文档进行安装与配置。

🦀 可作为你的 OpenClaw 插件 —cognee-openclaw

✴️ 可作为你的 Claude Code 插件 —claude-code-plugin

🦀 可用的 Rust 客户端 —cognee-rs

🟦 可用的 TypeScript 客户端 —@cognee/cognee-ts

  • 轻松构建企业大脑 - 将来自不同来源的数据统一到一处,用你的领域知识赋能 Agent
  • 知识基础设施 — 统一摄入、图/向量搜索、本地运行、Ontology 锚定、多模态
  • 持久化学习型 Agent - 从反馈中学习,上下文管理,跨 Agent 知识共享
  • 可靠可信的 Agent - Agent 级用户/租户隔离、可追踪性、OTEL 采集器、审计特征

Cognee 产品

Cognee 回忆

基本用法与功能指南

要深入了解,请查看这个简短的端到端 Colab 演示,它展示了 Cognee 的核心功能。

在 Colab 中打开

只需几行代码即可试用 Cognee。

你可以使用 pip、poetry、uv 或你喜欢的 Python 包管理器安装 Cognee。

步骤 2:配置 LLM

import os
os.environ["LLM_API_KEY"] = "YOUR OPENAI_API_KEY"

或者,使用我们的模板创建一个 .env 文件。

要集成其他 LLM 提供商,请参阅我们的 LLM 提供商文档。

Cognee 的 API 提供了四种操作 — remember、recall、forget 和 improve:

import cognee
import asyncio


async def main():
    # 永久存储到知识图谱(运行 add + cognify + improve)
    await cognee.remember("Cognee turns documents into AI memory.")

    # 存储到会话记忆(快速缓存,后台同步到图谱)
    await cognee.remember("User prefers detailed explanations.", session_id="chat_1")

    # 使用自动路由查询(自动选择最佳搜索策略)
    results = await cognee.recall("What does Cognee do?")
    for result in results:
        print(result)

    # 先查询会话记忆,必要时回退到图谱
    results = await cognee.recall("What does the user prefer?", session_id="chat_1")
    for result in results:
        print(result)

    # 完成后删除
    await cognee.forget(dataset="main_dataset")


if __name__ == '__main__':
    asyncio.run(main())


cognee-cli remember "Cognee turns documents into AI memory."

cognee-cli recall "What does Cognee do?"

cognee-cli forget --all

要打开本地 UI,运行:

注意: 由 cognee-cli -ui 启动的 MCP 服务器运行在 Docker 容器内。需要 Docker Desktop、Colima 或任何带有可用 docker CLI 的 OCI 兼容运行时。详情请参阅 Docker 与 Colima 设置。

倾向于容器化?Cognee 在每次 push 到 main 分支时都会将预构建的镜像发布到 Docker Hub:cognee/cognee(API 服务器)和 cognee/cognee-mcp(MCP 服务器)。

选项 A — Docker Compose(从源码构建)

克隆仓库,创建一个至少包含 LLM_API_KEY 的 .env 文件,然后:

cp .env.template .env   # 然后编辑 .env 并设置 LLM_API_KEY

# 启动 API 服务器 (http://localhost:8000)
docker compose up

# 可选配置(可按需组合):
docker compose --profile ui up        # + 前端 http://localhost:3000
docker compose --profile mcp up       # + MCP 服务器 http://localhost:8001
docker compose --profile postgres up  # + Postgres/PGVector
docker compose --profile neo4j up     # + Neo4j

cognee 和 cognee-mcp 服务发布不同的主机端口(8000 vs 8001),因此你可以同时运行它们。

选项 B — 拉取预构建镜像(无需克隆)

# 在当前目录创建一个最小的 .env
echo 'LLM_API_KEY="YOUR_OPENAI_API_KEY"' > .env

# API 服务器
docker run --env-file ./.env -p 8000:8000 --rm -it cognee/cognee:main

# MCP 服务器(HTTP 传输)
docker pull cognee/cognee-mcp:main
docker run -e TRANSPORT_MODE=http --env-file ./.env -p 8000:8000 --rm -it cognee/cognee-mcp:main

有关 SSE/stdio 传输、可选附加组件和 MCP 客户端配置,请参阅 MCP 服务器 README。

安装 Cognee 记忆插件 来为 Claude Code 赋予跨会话的持久记忆。该插件捕获提示、工具跟踪和助手响应到会话记忆,在每次提示时注入相关上下文,并在会话结束时将会话记忆同步到永久知识图谱。

安装 从 Claude Code 市场进行。推荐的方式是从你的 shell 中,_在_启动 Claude Code 之前安装,这样第一次 claude 启动就是一个干净的会话,会自动引导记忆:

# 添加市场并安装插件(一次性,用户级作用域)
claude plugin marketplace add topoteretes/cognee-integrations
claude plugin install cognee-memory@cognee

# 为你的模式设置环境变量(见下文),然后启动
export LLM_API_KEY="sk-..."   # 本地模式;或 COGNEE_BASE_URL + COGNEE_API_KEY 用于云端
claude

本地模式(默认) — 插件在 http://localhost:8011 上引导一个本地 Cognee API。只需要 LLM_API_KEY;Cognee API 密钥在缺失时会自动生成:

export LLM_API_KEY="sk-..."

Cognee Cloud 或远程服务器 — 同时设置:

export COGNEE_BASE_URL="https://your-instance.cognee.ai"
export COGNEE_API_KEY="ck_..."

启动时你应该会看到一条“Cognee Memory Connected”系统消息。

该插件钩入了 Claude Code 的生命周期 — SessionStart 选择模式并设置身份,UserPromptSubmit 注入数据集作用域的上下文,PostToolUse 捕获工具跟踪,Stop 写入助手的回答,PreCompact 在上下文重置时保留记忆,SessionEnd 触发最终同步到永久图谱。

有关会话、数据集和完整配置的信息,请参阅 插件 README。

将任意 Python Agent 指向一个托管的 Cognee 实例 — 所有 SDK 调用都将路由到云端:

import cognee

await cognee.serve(url="https://your-instance.cognee.ai", api_key="ck_...")

await cognee.remember("important context")
results = await cognee.recall("what happened?")

await cognee.disconnect()

浏览更多示例在 examples/ 文件夹中 — 包含演示、指南、自定义管道和数据库配置。

用例 1 — 客户支持 Agent

目标:利用客户的个人数据(涉及财务、支持和产品历史)解决客户问题。

用户:“我的发票看起来有问题,而且该问题仍未解决。”

Cognee 追踪:过去的交互、失败的操作、已解决的案例、产品历史

# Agent 响应:
Agent:"我找到了 2 个上个月已解决的类似账单案例。
        问题是由支付与发票系统之间的同步延迟引起的 — 已对你的账户应用了修复。"

# 底层发生的过程:
- 统一来自公司各个渠道的数据源
- 重建交互时间线并追踪结果
- 检索类似的已解决案例
- 映射到最佳解决策略
- 执行后更新记忆,使 Agent 不再重复同样的错误

用例 2 — 专家知识蒸馏(SQL 副驾驶)

目标:通过复用专家级查询、模式与推理来帮助初级分析师解决问题。

用户:“我如何为这个数据集计算客户留存率?”

Cognee 追踪:专家 SQL 查询、工作流模式、模式结构、成功实现

# Agent 响应:
Agent:"以下是资深分析师如何解决类似留存查询的方案。
        Cognee 将你的模式与已知结构匹配,并调整了专家的逻辑以适配你的数据集。"

# 底层发生的过程:
- 提取并存储专家 SQL 查询和工作流中的模式
- 将当前模式与之前见过的结构进行映射
- 检索类似任务及其成功实现
- 将专家推理适配到当前上下文
- 用新的成功模式更新记忆,使初级分析师的表现接近专家水平

在 Postgres 上运行整个记忆层

传统上,图记忆意味着要运营一套技术栈 — 用图数据库存储关系、向量数据库存储嵌入、Redis 管理会话,以及关系型数据库存储元数据 — 所有这些都部署、加固并付费后,Agent 才能记住任何事情。在 Cognee 1.0 中,你可以在单个 Postgres 实例上运行整个记忆层。

记忆层 传统技术栈 cognee on Postgres
关系 Neo4j 或其他图数据库 cognee 的 Postgres 图后端
嵌入 专用向量数据库 pgvector
会话 Redis SQL 会话缓存后端
元数据 关系型数据库 同一个 Postgres

图仍然存在 — 它只是和文本、元数据、嵌入一起驻留在同一个由 Postgres 支撑的记忆层中,因此检索可以在相似性和结构之间移动,而无需跨越服务边界。在我们的 CI 基准测试中,Postgres 搜索比独立的图加向量方案快约 10%。

Postgres 是我们推荐给大多数部署场景的默认选择,但当你需要额外的工作负载时,你仍然可以切换到其他专用后端(Neo4j 和 Neptune 用于图,Redis 用于会话,pgvector 和 LanceDB 用于向量,以及通过社区适配器支持的 Qdrant、ChromaDB、Weaviate 和 Milvus)。本地开发则完全嵌入式 — SQLite、LanceDB 和 Kuzudb — 无需额外启动其他服务。

pip install "cognee[postgres]"


DB_PROVIDER=postgres
VECTOR_DB_PROVIDER=pgvector
GRAPH_DATABASE_PROVIDER=postgres
CACHE_BACKEND=postgres

DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=cognee
DB_PASSWORD=cognee
DB_NAME=cognee_db

使用 Cognee Cloud 获得全托管体验,或通过以下一键部署配置进行自托管。

平台 最适合 命令
Cognee Cloud 托管服务,无需维护基础设施 注册 或 await cognee.serve()
Modal 无服务器、自动伸缩、GPU 工作负载 bash distributed/deploy/modal-deploy.sh
Railway 最简 PaaS,原生 Postgres railway init && railway up
Fly.io 边缘部署、持久卷 bash distributed/deploy/fly-deploy.sh
Render 简单 PaaS,托管 Postgres 部署到 Render 按钮
Daytona 云沙箱(SDK 或 CLI) 参见 distributed/deploy/daytona_sandbox.py

查阅 distributed/ 文件夹获取部署脚本、工作节点配置及其他细节。

在其他语言中使用 Cognee

更喜欢 Python 之外的语言?Cognee 还提供了官方的 Rust 和 TypeScript 客户端。

Rust 快速入门

使用 cognee-rs 库从 Rust 进行添加、认知构建与搜索。

参阅 cognee-rs 仓库 获取完整的设置和示例。

TypeScript 快速入门

使用 @cognee/cognee-ts 包从 Node.js 或浏览器进行添加、认知构建与搜索。

npm install @cognee/cognee-ts

参阅 @cognee/cognee-ts 包 获取完整的设置和示例。

我们针对 BEAM 基准测试运行了 Cognee,这是一个长上下文基准测试,用于测试系统是否能跟踪一段长对话的变化 —— 这对 Agent 记忆来说比典型的“大海捞针”式基准更有用。仅使用 Cognee 的默认设置和 st

English / 原文

📄 Read the research paper: Optimizing the Interface Between Knowledge Graphs and LLMs for Complex Reasoning — Markovic et al., 2025

Cognee is an open-source AI memory platform for AI Agents. Ingest data in any format, and Cognee continuously builds a self-hosted knowledge graph that gives your agents persistent long-term memory across sessions. Cognee combines vector embeddings, graph reasoning, and cognitive-science-grounded ontology generation to make documents both searchable by meaning and connected by relationships that evolve as your knowledge does.

⭐ Help us reach more developers and grow the cognee community. Star this repo!

📚 Check our detaileddocumentation for setup and configuration.

🦀 Available as a plugin for your OpenClaw —cognee-openclaw

✴️ Available as a plugin for your Claude Code —claude-code-plugin

🦀 Available as a Rust client —cognee-rs

🟦 Available as a TypeScript client —@cognee/cognee-ts

  • Easily Build Company Brain - unify data from various sources in one place and enable Agents with your domain knowledge
  • Knowledge infrastructure — unified ingestion, graph/vector search, runs locally, ontology grounding, multimodal
  • Persistent and Learning Agents - learn from feedback, context management, cross-agent knowledge sharing
  • Reliable and Trustworthy Agents - agentic user/tenant isolation, traceability, OTEL collector, audit traits

Cognee Products

Cognee Recall

Basic Usage & Feature Guide

To learn more, check out this short, end-to-end Colab walkthrough of Cognee's core features.

Open In Colab

Let’s try Cognee in just a few lines of code.

You can install Cognee with pip , poetry , uv , or your preferred Python package manager.

Step 2: Configure the LLM

import os
os.environ["LLM_API_KEY"] = "YOUR OPENAI_API_KEY"

Alternatively, create a .env file using our template.

To integrate other LLM providers, see our LLM Provider Documentation.

Cognee's API gives you four operations — remember, recall, forget, and improve:

import cognee
import asyncio


async def main():
    # Store permanently in the knowledge graph (runs add + cognify + improve)
    await cognee.remember("Cognee turns documents into AI memory.")

    # Store in session memory (fast cache, syncs to graph in background)
    await cognee.remember("User prefers detailed explanations.", session_id="chat_1")

    # Query with auto-routing (picks best search strategy automatically)
    results = await cognee.recall("What does Cognee do?")
    for result in results:
        print(result)

    # Query session memory first, fall through to graph if needed
    results = await cognee.recall("What does the user prefer?", session_id="chat_1")
    for result in results:
        print(result)

    # Delete when done
    await cognee.forget(dataset="main_dataset")


if __name__ == '__main__':
    asyncio.run(main())


cognee-cli remember "Cognee turns documents into AI memory."

cognee-cli recall "What does Cognee do?"

cognee-cli forget --all

To open the local UI, run:

Note: The MCP server launched by cognee-cli -ui runs inside a Docker container. Docker Desktop, Colima, or any OCI-compatible runtime with a working docker CLI is required. See Docker & Colima Setup for details.

Prefer containers? Cognee publishes prebuilt images to Docker Hub on every push to main: cognee/cognee (the API server) and cognee/cognee-mcp (the MCP server).

Option A — Docker Compose (build from source)

Clone the repo, create a .env with at least LLM_API_KEY, then:

cp .env.template .env   # then edit .env and set LLM_API_KEY

# Start the API server (http://localhost:8000)
docker compose up

# Optional profiles (combine as needed):
docker compose --profile ui up        # + frontend on http://localhost:3000
docker compose --profile mcp up       # + MCP server on http://localhost:8001
docker compose --profile postgres up  # + Postgres/PGVector
docker compose --profile neo4j up     # + Neo4j

The cognee and cognee-mcp services publish different host ports (8000 vs 8001), so you can run both at once.

Option B — Pull the prebuilt image (no clone required)

# Create a minimal .env in the current directory
echo 'LLM_API_KEY="YOUR_OPENAI_API_KEY"' > .env

# API server
docker run --env-file ./.env -p 8000:8000 --rm -it cognee/cognee:main

# MCP server (HTTP transport)
docker pull cognee/cognee-mcp:main
docker run -e TRANSPORT_MODE=http --env-file ./.env -p 8000:8000 --rm -it cognee/cognee-mcp:main

See the MCP server README for SSE/stdio transports, optional extras, and MCP client configuration.

Install the Cognee memory plugin to give Claude Code persistent memory across sessions. The plugin captures prompts, tool traces, and assistant responses into session memory, injects relevant context on every prompt, and syncs session memory into the permanent knowledge graph at session end.

Install from the Claude Code marketplace. The recommended way is from your shell, before launching Claude Code, so the first claude launch is a clean session that bootstraps memory automatically:

# Add the marketplace and install the plugin (one-time, user-scoped)
claude plugin marketplace add topoteretes/cognee-integrations
claude plugin install cognee-memory@cognee

# Set env vars for your mode (see below), then launch
export LLM_API_KEY="sk-..."   # local mode; or COGNEE_BASE_URL + COGNEE_API_KEY for cloud
claude

Local mode (default) — the plugin bootstraps a local Cognee API at http://localhost:8011. Only LLM_API_KEY is required; the Cognee API key is auto-minted if absent:

export LLM_API_KEY="sk-..."

Cognee Cloud or a remote server — set both:

export COGNEE_BASE_URL="https://your-instance.cognee.ai"
export COGNEE_API_KEY="ck_..."

On startup you should see a "Cognee Memory Connected" system message.

The plugin hooks into Claude Code's lifecycle — SessionStart selects mode and sets up identity, UserPromptSubmit injects dataset-scoped context, PostToolUse captures tool traces, Stop writes the assistant's answer, PreCompact preserves memory across context resets, and SessionEnd triggers the final sync into the permanent graph.

See the plugin README for sessions, datasets, and full configuration.

Point any Python agent at a managed Cognee instance — all SDK calls route to the cloud:

import cognee

await cognee.serve(url="https://your-instance.cognee.ai", api_key="ck_...")

await cognee.remember("important context")
results = await cognee.recall("what happened?")

await cognee.disconnect()

Browse more examples in the examples/ folder — demos, guides, custom pipelines, and database configurations.

Use Case 1 — Customer Support Agent

Goal: Resolve customer issues using their personal data across finance, support, and product history.

User: "My invoice looks wrong and the issue is still not resolved."

Cognee tracks: past interactions, failed actions, resolved cases, product history

# Agent response:
Agent: "I found 2 similar billing cases resolved last month.
        The issue was caused by a sync delay between payment
        and invoice systems — a fix was applied on your account."

# What happens under the hood:
- Unifies data sources from various company channels
- Reconstructs the interaction timeline and tracks outcomes
- Retrieves similar resolved cases
- Maps to the best resolution strategy
- Updates memory after execution so the agent never repeats the same mistake

Use Case 2 — Expert Knowledge Distillation (SQL Copilot)

Goal: Help junior analysts solve tasks by reusing expert-level queries, patterns, and reasoning.

User: "How do I calculate customer retention for this dataset?"

Cognee tracks: expert SQL queries, workflow patterns, schema structures, successful implementations

# Agent response:
Agent: "Here's how senior analysts solved a similar retention query.
        Cognee matched your schema to a known structure and adapted
        the expert's logic to fit your dataset."

# What happens under the hood:
- Extracts and stores patterns from expert SQL queries and workflows
- Maps the current schema to previously seen structures
- Retrieves similar tasks and their successful implementations
- Adapts expert reasoning to the current context
- Updates memory with new successful patterns so junior analysts perform at near-expert level

Run the Whole Memory Layer on Postgres

Graph memory traditionally means operating a stack — a graph database for relationships, a vector database for embeddings, Redis for sessions, and a relational database for metadata — all deployed, secured, and paid for before an agent remembers anything. In cognee 1.0 you can run the entire memory layer on a single Postgres instance.

Memory layer Traditional stack cognee on Postgres
Relationships Neo4j or another graph database cognee's Postgres graph backend
Embeddings Dedicated vector database pgvector
Sessions Redis SQL session-cache backend
Metadata Relational database same Postgres

The graph still exists — it just lives inside the same Postgres-backed memory layer as the text, metadata, and embeddings, so retrieval moves between similarity and structure without crossing service boundaries. In our CI benchmarks, Postgres search ran ~10% faster than the separate graph-plus-vector setup.

Postgres is the default we recommend for most deployments, but you can still swap in dedicated backends when a workload needs them (Neo4j and Neptune for graphs, Redis for sessions, pgvector and LanceDB for vectors, plus Qdrant, ChromaDB, Weaviate, and Milvus via community adapters). Local development stays fully embedded — SQLite, LanceDB, and Kuzudb — with no extra services to stand up.

pip install "cognee[postgres]"


DB_PROVIDER=postgres
VECTOR_DB_PROVIDER=pgvector
GRAPH_DATABASE_PROVIDER=postgres
CACHE_BACKEND=postgres

DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=cognee
DB_PASSWORD=cognee
DB_NAME=cognee_db

Use Cognee Cloud for a fully managed experience, or self-host with one of the 1-click deployment configurations below.

Platform Best For Command
Cognee Cloud Managed service, no infrastructure to maintain Sign up or await cognee.serve()
Modal Serverless, auto-scaling, GPU workloads bash distributed/deploy/modal-deploy.sh
Railway Simplest PaaS, native Postgres railway init && railway up
Fly.io Edge deployment, persistent volumes bash distributed/deploy/fly-deploy.sh
Render Simple PaaS with managed Postgres Deploy to Render button
Daytona Cloud sandboxes (SDK or CLI) See distributed/deploy/daytona_sandbox.py

See the distributed/ folder for deploy scripts, worker configurations, and additional details.

Use Cognee in Other Languages

Prefer something other than Python? Cognee also ships official clients for Rust and TypeScript.

Getting Started with Rust

Use the cognee-rs crate to add, cognify, and search from Rust.

See the cognee-rs repository for full setup and examples.

Getting Started with TypeScript

Use the @cognee/cognee-ts package to add, cognify, and search from Node.js or the browser.

npm install @cognee/cognee-ts

See the @cognee/cognee-ts package for full setup and examples.

We ran cognee against BEAM, a long-context benchmark that tests whether a system can keep track of a long conversation as it changes — a more useful test for agent memory than typical needle-in-a-haystack benchmarks. Using only cognee's default settings and standard open-source features (no custom models, no BEAM-specific pipelines), we beat the previous state of the art at the 100K-token setting and matched it at 10M tokens.

Benchmark Setting cognee Previous SOTA Obsidian / RAG baseline
BEAM 100K tokens 0.79 (>0.8 with per-question routing) 0.735 ~0.33
BEAM 10M tokens 0.67 0.641 ~0.33

These numbers are a directional signal rather than a definitive measure — see the write-up for the full methodology, caveats, and what the results actually mean.

Watch Demo

Community & Support

We welcome contributions from the community! Your input helps make Cognee better for everyone. See CONTRIBUTING.md to get started.

We're committed to fostering an inclusive and respectful community. Read our Code of Conduct for guidelines.

We recently published a research paper on optimizing knowledge graphs for LLM reasoning:

@misc{markovic2025optimizinginterfaceknowledgegraphs,
      title={Optimizing the Interface Between Knowledge Graphs and LLMs for Complex Reasoning},
      author={Vasilije Markovic and Lazar Obradovic and Laszlo Hajdu and Jovan Pavlovic},
      year={2025},
      eprint={2505.24478},
      archivePrefix={arXiv},
      primaryClass={cs.AI},
      url={https://arxiv.org/abs/2505.24478},
}