# 会议纪要长期记忆系统 一个面向会议纪要的长期记忆原型,当前架构已经从“根目录脚本堆叠 + 外部向量库存储”迁移为更清晰的包结构,并收敛到: - `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 实例和正确的凭据