meeting_memory/README.md

3.1 KiB

会议纪要长期记忆系统

一个面向会议纪要的长期记忆原型,当前架构已经从“根目录脚本堆叠 + 外部向量库存储”迁移为更清晰的包结构,并收敛到:

  • Neo4j 作为唯一图存储与检索数据载体
  • Embedding + 关键词 + 图事实 的混合检索模式
  • 更接近 graphitiMeeting / 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

当前限制

  • 当前环境如果没有安装 neo4j Python 包,导入图存储模块时会退化为禁用状态
  • 由于本地运行环境限制,端到端验证仍然依赖可用的 Neo4j 实例和正确的凭据