跳转至

持久化

保存和恢复你的记忆状态。

保存记忆

使用 dump() 将你的整个记忆状态保存到磁盘:

memory.dump("./my_memory")

这会创建: - memory.json - 你的序列化实体 - faiss_index/ - 向量索引目录(如果已构建) - metadata.json - 配置和元数据

加载记忆

恢复已保存的记忆状态:

# 使用相同的模式创建新的记忆实例
new_memory = OMem(
    memory_schema=ResearcherProfile,
    key_extractor=lambda x: x.name,
    embedder=OpenAIEmbeddings(),
    strategy_or_merger=MergeStrategy.MERGE_FIELD
)

# 加载已保存的状态
new_memory.load("./my_memory")

# 你的数据被恢复了!
print(new_memory.size)  # 显示实体数量

文件结构

my_memory/
├── memory.json           # 序列化的实体
├── metadata.json         # 配置和元数据
└── faiss_index/          # 向量索引目录(如果已构建)
    ├── index.faiss
    └── docstore.pkl

细粒度持久化 (v0.1.5+)

为了对保存内容有更多控制,可以使用细粒度方法:

仅保存数据

# 只保存结构化数据,不保存索引或元数据
memory.dump_data("./my_data.json")

仅保存索引

# 只保存向量索引
memory.dump_index("./my_index_folder")

仅保存元数据

# 只保存元数据
memory.dump_metadata("./my_metadata.json")

仅加载数据

# 只加载结构化数据
new_memory.load_data("./my_data.json")

仅加载索引

# 只加载向量索引
new_memory.load_index("./my_index_folder")

仅加载元数据

# 只加载元数据
new_memory.load_metadata("./my_metadata.json")

选择性备份策略

# 分别备份数据和索引
memory.dump_data("./backups/data_v1.json")
memory.dump_index("./backups/index_v1")

# 仅恢复数据,重新构建索引
new_memory.load_data("./backups/data_v1.json")
new_memory.build_index()

备份和恢复

# 创建带时间戳的备份
from datetime import datetime
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
memory.dump(f"./backups/memory_{timestamp}")

# 列表和恢复
import os
backups = os.listdir("./backups")
latest = sorted(backups)[-1]
memory.load(f"./backups/{latest}")

导出到标准格式

import json
import pandas as pd

# 导出为 JSON
with open("export.json", "w") as f:
    data = [item.model_dump() for item in memory.items]
    json.dump(data, f, indent=2)

# 导出为 CSV
df = pd.DataFrame([item.model_dump() for item in memory.items])
df.to_csv("export.csv", index=False)

# 导出为 Parquet(用于大型数据集)
df.to_parquet("export.parquet")

下一步:探索高级用法