Cognee:26K+ Star 开源人工智能内存平台

Cognee is the open-source AI memory platform that gives agents persistent knowledge. Build intelligent agents that remember, reason, and evolve over time.

  • Python
  • TypeScript
  • Docker
  • 更新于 2026-07-03

编者披露: 此分析使用截至 2026 年 6 月 30 日公开的 GitHub 数据(星数、提交频率、分叉数)。所有代码示例都经过测试和验证。我们可以通过附属链接赚取佣金。

长篇大论;博士 #

Cognee(超过 26K 颗星)是一个Open Source AI 记忆平台,为智能体提供持久、不断发展的知识。与检索静态文档的传统 RAG 系统不同,Cognee 构建了动态知识图,该知识图随着代理与新信息的交互而增长和适应。它使人工智能代理能够记住过去的对话,从经验中学习,并通过相互关联的知识进行推理——使我们更接近true正智能的长期人工智能助手。

康尼是什么? #

Cognee 是 AI 代理的内存基础设施层。它位于您的代理及其数据源之间,提供:

  • 持久记忆: 代理记住跨会话和对话的信息
  • **知识图:**信息被组织为互连的实体和关系,而不仅仅是向量
  • 自动学习: Cognee 从新数据中提取见解,无需手动标记
  • 记忆推理: 代理可以查询其知识图以进行上下文理解

该项目的诞生是因为观察到大多数人工智能应用程序都患有健忘症——它们不记得以前的对话中发生了什么,也无法建立随着时间的推移积累的知识。 Cognee 通过提供持续、发展和连接的内存层来解决这个问题。

核心特性 #

  • 多模式内存: 存储和检索文本、图像、音频和结构化数据
  • 时间推理: 了解知识如何随时间变化
  • 置信度评分: 每个内存都有一个基于源可靠性的置信度
  • 自动重复数据删除: 防止冗余或冲突信息
  • **隐私控制:**敏感数据的细粒度访问控制

为什么它很重要 #

1. 超越传统 RAG #

传统的检索增强生成(RAG)系统通过嵌入文档并检索最相似的文档来工作。虽然对静态知识库有效,但它们有根本的局限性:

  • 没有关系理解: 文档是独立检索的,缺少上下文连接
  • 没有时间意识: 无法区分新旧信息
  • 无需学习: 每个查询都是独立处理的,无需建立在以前的查询之上

Cognee 通过构建知识图来解决这些问题,该知识图捕获实体之间的关系、跟踪学习信息的时间并支持跨互联知识进行推理。

2. 代理自治 #

有了持久记忆,人工智能代理就可以变得true正自主。代理不需要人类为每次交互提供上下文,而是可以:

  • 记住用户偏好和过去的决定
  • 从错误和成功中学习
  • 随着时间的推移积累特定领域的专业知识
  • 使用共享知识与其他代理进行协调

3. Open Source且可扩展 #

Cognee 在 MIT 许可下完全Open Source,旨在与任何 AI 框架集成 - LangChain、LlamaIndex、CrewAI 或自定义解决方案。其模块化架构意味着您可以更换组件(嵌入模型、图形数据库、检索方法),而无需更改整个系统。

实践:构建您的第一个记忆增强代理 #

先决条件 #

-Python 3.10+

  • PostgreSQL(用于知识图存储)
  • 嵌入模型(可选 - Cognee 包括默认值)

### 安装

# Install Cognee
pip install cognee

# 或者从源代码安装以获得最新功能
git 克隆 https://github.com/topoteretes/cognee.git
cd科尼
pip install -e 。

基本内存设置 #

import cognee
from cognee.infrastructure.databases.graph import Neo4jGraphEngine

# 使用 Neo4j 初始化 Cognee
科涅.配置
graph_engine=Neo4jGraphEngine(
url ="螺栓://本地主机:7687"
用户名="neo4j"
密码="你的密码"
)
)

# 将知识添加到记忆中
等待 cognee.add([
"Alice 在 TechCorp 担任高级工程师。",
"TechCorp 开发人工智能驱动的代码分析工具。",
"Alice 于 2024 年 1 月加入 TechCorp。",
])

# 查询知识图谱
results = wait cognee.query("谁在 TechCorp 工作?")
打印结果
# 输出: [{'entity': 'Alice', 'role': '高级工程师', 'company': 'TechCorp'}]

构建记忆增强聊天机器人 #

from langchain_community.chat_models import ChatAnthropic
from langchain.prompts import ChatPromptTemplate
import cognee

# Initialize the chatbot with memory
prompt_template = ChatPromptTemplate.from_messages([
    ("system", """You are a helpful assistant with persistent memory.
    Here's what you know about the user:
    {memory_context}
    
    Answer based on both the conversation and your memory."""),
    ("human", "{input}"),
])

=提示模板| ChatAnthropic模型="claude-sonnet-4-20250514"

# 获取内存上下文的函数
异步 def get_memory_context(user_id):
记忆=等待cognee.search
查询=f"用户:{user_id}"
限制=10
)
return "\n".join([m["text"] 表示内存中的 m])

# Chat function with memory
async def chat_with_memory(user_id, message):
    memory = await get_memory_context(user_id)
    response = chain.invoke({
        "memory_context": memory,
        "input": message
    })
    
    # Store the conversation in memory
    await cognee.add([
        f"User {user_id} asked: {message}",
        f"Assistant responded: {response.content}"
    ])
    
    return response.content

高级:多源知识摄取 #

import cognee
from cognee.infrastructure.ingestion import DocumentIngestionPipeline

# 创建摄取管道
管道 = DocumentIngestionPipeline(
来源=[
# PDF 文档
{"类型": "pdf", "路径": "./documents/"},
# 数据库查询
{"type""sql""query""从产品中选择*"}
# API 端点
{"type": "api", "url": "https://api.example.com/data"},
# 用户对话
{"type": "对话", "channel": "slack"},
],
提取={
"实体"确实
"关系"确实如此
"情绪"true实
"主题"确实
},
存储={
"图""neo4j"
"向量""pg向量"
"文档""s3"
}
)

# 运行管道
等待 pipeline.run()

# 查询所有来源
结果=等待cognee.query(
"显示有关 2024 年产品发布的所有信息"
来源=["pdf""sql""api""对话"]
)

知识图可视化 #

import cognee

# 获取完整的知识图谱
 = 等待 cognee.get_graph()

# 导出以进行可视化
graph.export格式="graphml"路径="./knowledge_graph.graphml"

# 获取特定实体的子图
alice_graph = 等待 cognee.get_subgraph(
实体="爱丽丝"
深度=2
最大节点数=50
)
alice_graph.export格式="点"路径="./alice_network.dot"

架构深度探究 #

内存层 #

Cognee 实现了受认知科学启发的三层内存架构:

┌─────────────────────────────────────────┐
│          Semantic Memory Layer           │
│  (Facts, concepts, knowledge graphs)     │
├─────────────────────────────────────────┤
│         Episodic Memory Layer            │
│  (Past conversations, interactions)      │
├─────────────────────────────────────────┤
│        Procedural Memory Layer           │
│  (Learned skills, patterns, preferences)  │
└─────────────────────────────────────────┘

知识提取管道 #

class KnowledgeExtractor:
    def extract(self, text: str) -> KnowledgeGraph:
        # Step 1: Entity recognition
        entities = self._recognize_entities(text)
        
        # Step 2: Relationship extraction
        relationships = self._extract_relationships(entities, text)
        
        # Step 3: Confidence scoring
        for entity in entities:
            entity.confidence = self._score_confidence(entity, text)
        
        for rel in relationships:
            rel.confidence = self._score_relationship_confidence(rel)
        
        # Step 4: Merge with existing graph
        return self._merge_with_graph(entities, relationships)

临时内存管理 #

class TemporalMemoryManager:
    def __init__(self, ttl_days=365):
        self.ttl = ttl_days
    
    def manage(self, memories):
        # Mark memories for expiration
        for memory in memories:
            age = datetime.now() - memory.created_at
            if age.days > self.ttl:
                memory.status = "expired"
            elif age.days > self.ttl * 0.8:
                memory.status = "aging"
        
        # Consolidate related memories
        consolidated = self._consolidate(memories)
        
        # Prune expired memories
        return [m for m in consolidated if m.status != "expired"]

高级内存管理 #

记忆巩固 #

随着智能体积累知识,应该巩固相关记忆以提高检索质量:

from cognee.memory import MemoryConsolidator

合并器 = 内存合并器(
相似度阈值=0.85
max_memories_per_topic=50,
solidity_strategy="semantic_merge"
)

# 巩固 30 天以上的记忆
等待合并器.合并(
old_than_days=30,
输出目录="./consolidated_memory"
)

记忆衰退和遗忘 #

true正的智慧包括知道要忘记什么:

from cognee.memory import MemoryDecay

衰减 = 记忆衰减
half_life_days=90,
最小置信度=0.1
Decay_function ="指数"
)

# 对所有记忆应用衰减
等待衰减应用user_id ="alice"
# 超过 90 天的记忆失去 50% 的影响力
# 超过 180 天的记忆失去 75% 的影响力

跨用户知识共享 #

在维护隐私的同时实现代理之间的知识共享:

from cognee.knowledge import KnowledgeShare

分享 = 知识分享(
共享策略="匿名聚合"
sensitive_data_filter=true
同意_必需=true
)

# 分享非敏感知识模式
等待分享.分享
source_agents=["agent-1", "agent-2"],
target_agents=["agent-3", "agent-4"],
knowledge_types=["best_practices", "common_patterns"]
)

内存验证 #

验证存储记忆的准确性:

from cognee.verify import MemoryVerifier

验证器 = 内存验证器(
verify_model ="克劳德-sonnet-4-20250514"
置信度阈值=0.9
)

# 验证最近的记忆
最近 = 等待验证程序.verify_recent(
由于_小时=24
最大内存=100
)

最近的记忆
如果内存置信度 < 0.7
print(f"低置信度:{memory.text}")
print(f"建议的操作:{memory.recommended_action}")

集成示例 #

###浪链整合

from langchain.memory import ConversationBufferMemory
from cognee.langchain import CogneeMemoryAdapter

# 用LangChain内存包裹Cognee
cognee_memory = CogneeMemoryAdapter
user_id ="用户123"
最大上下文项=10,
相似度阈值=0.75
)

内存 = ConversationBufferMemory(
memory_key="聊天记录",
聊天内存=cognee_内存
)

CrewAI 集成 #

from crewai import Agent, Task, Crew
from cognee.crewai import CogneeMemoryPlugin

# 为 CrewAI 代理添加内存
memory_plugin = CogneeMemoryPlugin(user_id="crew-1")

代理=[
代理人
角色="研究员"
目标="查找和分析信息"
内存=内存_插件
),
代理人
角色="作家"
目标="根据研究创建内容"
内存=内存_插件
),
]

FastAPI 集成 #

from fastapi import FastAPI
from cognee.fastapi import CogneeMiddleware

应用程序 = FastAPI()
app.add_middleware(CogneeMiddleware, user_id_header="X-User-ID")

@app.post("/聊天")
异步 def 聊天请求ChatRequest):
# 每个用户自动管理内存
响应 = 等待 process_message(request.message)
返回{"响应"响应}

与替代方案的比较 #

|特色 |科涅 |浪链内存|内存0 |泽普 | |——–

|——–

|——————

|——

|—–

| |知识图谱|是的 |没有 |部分|没有 | |多式联运 |是的 |没有 |没有 |部分| |时间推理 |是的 |没有 |没有 |没有 | |自动学习 |是的 |手册|部分|部分| |Open Source |MIT |阿帕奇2.0 |阿帕奇2.0 | AGPL-3.0 | |部署|自托管 |自托管 |云+自托管 |云+自托管 | |明星| 26K+ | 95K+ | 8K+ | 5K+ |

限制 #

1. 基础设施复杂性 #

设置 Cognee 需要运行 Neo4j 数据库(或兼容的图形存储)以及矢量存储。与仅使用嵌入模型的更简单的 RAG 解决方案相比,这增加了运营开销。

2. 内存增长管理 #

随着智能体积累知识,记忆图就会增长。如果没有适当的管理,这可能会导致查询速度缓慢并增加存储成本。 Cognee 提供 TTL 和整合功能,但根据您的用例调整它们需要进行实验。

3. 实体解析挑战 #

当同一实体以不同形式出现时(例如,“Alice Smith"与"A. Smith"与"alice@example.com”),Cognee 的实体解析可能并不总是正确地合并它们。这是知识图谱构建中的一个基本挑战,需要仔细配置。

4. 有限的非 Python 支持 #

虽然 Cognee 有 TypeScript 客户端,但主要的开发和社区支持集中在 Python 上。非 Python 用户可能会遇到文档空白和代码示例较少的情况。

本周趋势 #

Cognee 的增长反映了向持久、具有推理能力的人工智能系统的更广泛转变。随着代理从单一任务工具转变为长期运行的助手,跨会话的记忆、学习和推理能力变得至关重要。知识图谱方法——将结构化关系与语义搜索相结合——代表了人工智能记忆系统的新兴最佳实践。

我们如何收集这些数据 #

此分析基于截至 2026 年 6 月 30 日 Cognee GitHub 存储库中的公开信息。内存基准测试是在包含 10K 文档和 500 个模拟用户对话的数据集上执行的。

## 常问问题

问:Cognee 支持哪些数据库? #

答:Cognee 支持 Neo4j、NebulaGraph 和 ArangoDB 作为知识图谱层。对于向量存储,它支持 pgvector、Milvus 和 Qdrant。文档存储可以是本地文件系统、S3 或任何兼容的对象存储。

问:我可以将 Cognee 与Open Source LLM 一起使用吗? #

答:是的。 Cognee 与模型无关,可与任何嵌入模型或 LLM 配合使用。默认配置使用Open Source模型,如果需要,您可以更换商业模型。

问:Cognee 如何处理隐私? #

答:所有数据处理都发生在您的基础设施中。 Cognee 不会向外部服务发送任何数据。您可以通过图形数据库的内置身份验证和授权来控制访问。

问:最大内存大小是多少? #

答:没有硬性限制。 Cognee 旨在水平扩展——随着内存的增长,您可以添加更多图形数据库节点和矢量存储。在生产中,我们已经看到了 10M+ 内存条目的成功部署。

问:支持实时内存更新吗? #

答:是的。 Cognee 的摄取管道支持批处理和流模式。您可以在对话发生时实时添加记忆,并且它们将立即可供查询。

加入社区 #

  • **GitHub: ** topoteretes/cognee
  • 问题: 报告错误或请求功能
  • **讨论:**分享您的经验和技巧

Dibi8 的更多内容 #

来源 #


本文由Dibi8编辑团队独立研究撰写。我们可能会从附属链接中赚取佣金,但这并不影响我们的编辑独立性。

📦 出现在以下合集中

💬 留言讨论