跳转至

快速开始

5 分钟快速上手 OntoMem。

安装

使用 pip

pip install ontomem

使用 uv(推荐)

uv add ontomem

开发环境设置

# 克隆仓库
git clone https://github.com/yifanfeng97/ontomem.git
cd ontomem

# 安装包含开发依赖
uv sync --group dev

你的第一个记忆系统

第 1 步:定义模式

from pydantic import BaseModel
from typing import List, Optional
from datetime import datetime

class ResearcherProfile(BaseModel):
    """研究人员档案。"""
    name: str  # 作为键
    affiliation: str
    research_interests: List[str]
    publications: List[str]
    last_updated: Optional[datetime] = None

第 2 步:初始化 OntoMem

from ontomem import OMem, MergeStrategy
from langchain_openai import ChatOpenAI, OpenAIEmbeddings

# 创建记忆实例
memory = OMem(
    memory_schema=ResearcherProfile,
    key_extractor=lambda x: x.name,  # 使用名字作为唯一键
    llm_client=ChatOpenAI(model="gpt-4o"),
    embedder=OpenAIEmbeddings(),
    strategy_or_merger=MergeStrategy.MERGE_FIELD  # 从简单开始
)

第 3 步:添加数据

# 添加研究人员档案
memory.add(ResearcherProfile(
    name="Yann LeCun",
    affiliation="Meta AI",
    research_interests=["深度学习", "卷积网络"],
    publications=["反向传播应用于手写邮编识别"]
))

memory.add(ResearcherProfile(
    name="Yoshua Bengio",
    affiliation="Mila",
    research_interests=["深度学习", "AI安全"],
    publications=["通过反向传播学习表示"]
))

第 4 步:查询

# 获取精确匹配
researcher = memory.get("Yann LeCun")
print(f"找到: {researcher.name}")
print(f"研究兴趣: {researcher.research_interests}")

自动整合示例

这就是 OntoMem 的亮点——自动合并碎片化数据:

# 第 1 天:了解 Yann LeCun
memory.add(ResearcherProfile(
    name="Yann LeCun",
    affiliation="Meta AI",
    research_interests=["深度学习"],
    publications=["图像识别的 CNN"]
))

# 第 2 天:关于同一个人的新信息
memory.add(ResearcherProfile(
    name="Yann LeCun",
    affiliation="Meta AI",  # 相同
    research_interests=["卷积网络"],  # 新细节
    publications=["反向传播论文"]  # 额外论文
))

# 查询整合后的记录
profile = memory.get("Yann LeCun")
print(profile.research_interests)
# 输出: ["深度学习", "卷积网络"]
# 输出: ["图像识别的 CNN", "反向传播论文"]

构建语义搜索索引

# 构建向量索引
memory.build_index()

# 现在可以按语义搜索
results = memory.search("机器学习神经网络", top_k=5)

for researcher in results:
    print(f"- {researcher.name}: {researcher.research_interests}")

保存和恢复

# 保存整个记忆状态
memory.dump("./my_researcher_memory")

# 稍后,在新的 Python 会话中:
new_memory = OMem(
    memory_schema=ResearcherProfile,
    key_extractor=lambda x: x.name,
    llm_client=ChatOpenAI(model="gpt-4o"),
    embedder=OpenAIEmbeddings(),
)

# 恢复
new_memory.load("./my_researcher_memory")

# 继续工作
researcher = new_memory.get("Yann LeCun")
print(researcher.research_interests)  # 仍在这里!

下一步


需要帮助? 查看我们的 FAQ 或在 GitHub 上提出问题。