meeting_memory/README.md

131 lines
3.1 KiB
Markdown

# 会议纪要长期记忆系统
一个面向会议纪要的长期记忆原型,当前架构已经从“根目录脚本堆叠 + 外部向量库存储”迁移为更清晰的包结构,并收敛到:
- `Neo4j` 作为唯一图存储与检索数据载体
- `Embedding + 关键词 + 图事实` 的混合检索模式
- 更接近 `graphiti``Meeting / Episode / Entity / Fact` 数据组织方式
## 当前能力
- 会议文本结构化抽取
- 原文归档到 `data/raw`
- 行动项和指标状态的跨会议合并
- 基于内容哈希和语义相似度的重复检测
- 基于 `Neo4j` 的图谱写入
- 基于 `Neo4j` 的混合检索
## 处理流程
```text
meeting.md
-> 内容哈希去重
-> Neo4j 语义相似去重
-> LLM 抽取结构化信息
-> 原文归档
-> 行动项 / 指标状态合并
-> 写入 Neo4j:
Meeting
Episode
Entity
Fact
```
## 项目结构
```text
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` 图结构中
## 环境配置
复制环境变量模板:
```bash
copy .env.example .env
```
填写配置:
```ini
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
```
## 安装
```bash
python -m venv .venv
.venv\Scripts\pip install -r requirements.txt
```
## 使用方式
```bash
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](/d:/github_project/my_code/meeting_memory/MIGRATION_TASKS.md:1)。
## 当前限制
- 当前环境如果没有安装 `neo4j` Python 包,导入图存储模块时会退化为禁用状态
- 由于本地运行环境限制,端到端验证仍然依赖可用的 Neo4j 实例和正确的凭据