|
|
||
|---|---|---|
| meeting_memory | ||
| scripts | ||
| .env.example | ||
| .gitignore | ||
| MIGRATION_TASKS.md | ||
| README.md | ||
| main.py | ||
| meeting1.md | ||
| meeting_example.md | ||
| requirements.txt | ||
README.md
会议纪要长期记忆系统
一个面向会议纪要的长期记忆原型,当前架构已经从“根目录脚本堆叠 + 外部向量库存储”迁移为更清晰的包结构,并收敛到:
Neo4j作为唯一图存储与检索数据载体Embedding + 关键词 + 图事实的混合检索模式- 更接近
graphiti的Meeting / Episode / Entity / Fact数据组织方式
当前能力
- 会议文本结构化抽取
- 原文归档到
data/raw - 行动项和指标状态的跨会议合并
- 基于内容哈希和语义相似度的重复检测
- 基于
Neo4j的图谱写入 - 基于
Neo4j的混合检索
处理流程
meeting.md
-> 内容哈希去重
-> Neo4j 语义相似去重
-> LLM 抽取结构化信息
-> 原文归档
-> 行动项 / 指标状态合并
-> 写入 Neo4j:
Meeting
Episode
Entity
Fact
项目结构
meeting_memory/
├── meeting_memory/
│ ├── __init__.py
│ ├── cli.py
│ ├── config.py
│ ├── extractor.py
│ ├── graph_store.py
│ ├── meeting_processor.py
│ ├── meeting_state.py
│ ├── raw_store.py
│ └── services/
│ ├── __init__.py
│ └── embedding_service.py
├── data/
│ ├── raw/
│ └── meeting_state.json
├── main.py
├── MIGRATION_TASKS.md
└── requirements.txt
说明:
meeting_memory/包目录中是当前真实实现- 根目录现在只保留
main.py作为 CLI 入口,其他实现全部收拢到包目录 vector_store.py已移除,检索能力已迁到Neo4j图结构中
环境配置
复制环境变量模板:
copy .env.example .env
填写配置:
LLM_API_KEY=sk-xxx
LLM_BASE_URL=https://api.deepseek.com/v1
LLM_MODEL=deepseek-chat
EMBEDDING_API_KEY=sk-xxx
EMBEDDING_BASE_URL=https://api.openai.com/v1
EMBEDDING_MODEL=text-embedding-3-small
NEO4J_ENABLED=true
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your-password
NEO4J_DATABASE=neo4j
安装
python -m venv .venv
.venv\Scripts\pip install -r requirements.txt
使用方式
python main.py
python main.py process meeting_example.md
python main.py process meeting_example.md -f
python main.py text "今天会议讨论了弱光指标和交付节奏"
python main.py query "弱光指标目标值是多少"
python main.py stats
python main.py batch "meetings/*.md" -f
检索设计
当前查询不再依赖独立向量库,而是基于 Neo4j 中的三类候选进行混合排序:
Episode:会议级文本上下文Entity:实体摘要与描述Fact:主体-关系-客体事实
排序信号包括:
- 语义相似度
- 关键词命中
- 图事实加权
迁移说明
迁移任务记录见 MIGRATION_TASKS.md。
当前限制
- 当前环境如果没有安装
neo4jPython 包,导入图存储模块时会退化为禁用状态 - 由于本地运行环境限制,端到端验证仍然依赖可用的 Neo4j 实例和正确的凭据