MineContext 架构概览
系统架构
MineContext 设计为模块化、事件驱动的系统,具有明确的关注点分离。架构遵循分层方法,组件之间有明确定义的接口。
系统组件
核心架构层
┌──────────────────────────────────────────────────────────┐
│ 业务逻辑层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 捕获管理器 │ │ 处理器管理器 │ │ 消费管理器 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└──────────────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────────────┐
│ 处理层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 分块器 │ │ 处理器 │ │ 合并器 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 实体分析器 │ │ 向量化器 │ │ 知识提炼器 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└──────────────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────────────┐
│ 存储层 │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ SQLite │ │ ChromaDB │ │
│ └──────────────┘ └──────────────┘ │
└──────────────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────────────────────────┐
│ 大模型层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ OpenAI │ │ 豆包 │ │ 向量化模型 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└──────────────────────────────────────────────────────────┘系统流程
MineContext 的系统流程设计为一个高度模块化和可扩展的架构,分为五个核心部分:上下文捕获、加工处理、存储、服务/工具和消费。
1. Context 捕获 (Capture)
- 来源:
- 本地文件: 监控和获取本地创建或修改的文件。
- 订阅数据流: 从各种数据源(如RSS、API)订阅和接收信息。
- 用户交互: 包括聊天记录、截屏和AI对话。
- 自定义方式: 支持用户自定义的捕获方法。
2. Context 加工处理 (Processing)
- 文档处理:
- 结构化文档: 进行本地切分。
- 非结构化文档: 通过内容理解进行切片。
- 多模态理解:
- 对截屏、聊天记录等进行综合理解。
- 获取最近的历史内容和上下文信息。
- 实体抽取与更新: 从处理过的内容中识别和更新实体。
- 知识提炼:
- 对信息进行去噪、合并和分类。
- 形成客观知识、实体画像、活动记录和流程记录。
- 向量化: 将提炼出的知识转化为向量形式,以便于存储和检索。
- 时间驱动压缩: 对上下文进行压缩,并获取关联事件和相似知识。
3. Context 存储 (Storage)
向量数据库:
- 客观知识向量库: 存储事实和通用知识。
- 事件记录向量库: 存储与特定事件相关的信息。
- 实体关联向量库: 存储实体之间的关系。
- 其他: 存储其他类型的处理数据。
4. Context 服务/Tools (Services/Tools)
- 查询处理:
- 意图识别与改写: 理解用户查询的真实意图,并进行改写和拆解。
- 信息组织:
- 关系网络: 获取主体画像及其在事件中的关系网络。
- 时间线视图: 基于时间与动作的语义匹配,生成时间线视图。
- 检索与聚合:
- 知识聚合: 面向事实和可复用知识进行检索与聚合。
- 双向查询: 支持从时间到事件或从事件到时间的双向查询。
- 混合检索: 支持跨类型的语义和关键词混合检索,并提供过滤、排序、分组和权重衰减等功能。
5. Context 消费 (Consumption)
- MCP Server: 通过模型上下文协议(MCP)提供服务。
- 上层应用消费: 将处理和组织好的上下文提供给上层应用程序使用。
数据流
┌─────────────────────────────────────────────────────────────┐
│ 数据输入源 │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐│
│ │ 本地文件 │ │ 数据流订阅 │ │ 用户交互 │ │ 自定义源 ││
│ └────────────┘ └────────────┘ └────────────┘ └────────────┘│
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 捕获管理器 │
│ (监控、获取、接收、自定义捕获方法) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 处理器管理器 │
│ ┌──────────────────────┐ ┌────────────────────────────┐ │
│ │ 文档处理 │ │ 多模态理解 │ │
│ │ • 结构化文档切分 │ │ • 截屏/聊天记录理解 │ │
│ │ • 非结构化文档切片 │ │ • 历史内容获取 │ │
│ └──────────────────────┘ └────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 知识提炼处理 │
│ ┌──────────────────────┐ ┌────────────────────────────┐ │
│ │ 实体抽取与更新 │ │ 信息提炼 │ │
│ │ • 实体识别 │ │ • 去噪/合并/分类 │ │
│ │ • 关系提取 │ │ • 客观知识/实体画像 │ │
│ │ • 实体画像更新 │ │ • 活动记录/流程记录 │ │
│ └──────────────────────┘ └────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 向量化与压缩 │
│ ┌──────────────────────┐ ┌────────────────────────────┐ │
│ │ 向量化处理 │ │ 时间驱动压缩 │ │
│ │ • 文本向量化 │ │ • 上下文压缩 │ │
│ │ • 多模态向量化 │ │ • 关联事件获取 │ │
│ │ • 特征提取 │ │ • 相似知识聚合 │ │
│ └──────────────────────┘ └────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 存储管理器 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 客观知识库 │ │ 事件记录库 │ │ 实体关联库 │ │
│ │ (向量存储) │ │ (向量存储) │ │ (向量存储) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ SQLite + ChromaDB │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 查询与检索服务 │
│ ┌──────────────────────┐ ┌────────────────────────────┐ │
│ │ 查询处理 │ │ 检索聚合 │ │
│ │ • 意图识别 │ │ • 知识聚合 │ │
│ │ • 查询改写/拆解 │ │ • 双向查询 │ │
│ │ • 参数提取 │ │ • 混合检索 │ │
│ └──────────────────────┘ └────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 信息组织服务 │
│ ┌──────────────────────┐ ┌────────────────────────────┐ │
│ │ 关系网络构建 │ │ 时间线生成 │ │
│ │ • 主体画像 │ │ • 时间序列匹配 │ │
│ │ • 事件关系网 │ │ • 动作语义匹配 │ │
│ │ • 实体关联图 │ │ • 时间线视图 │ │
│ └──────────────────────┘ └────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ 消费接口 │
│ ┌──────────────────────┐ ┌────────────────────────────┐ │
│ │ MCP Server │ │ 上层应用API │ │
│ │ │ │ │ │
│ └──────────────────────┘ └────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘扩展点
1. 添加新的上下文源
- 实现
CaptureInterface - 在
CaptureManager中注册
2. 添加新的处理策略
- 实现
BaseProcessor - 在
ProcessorFactory中注册
3. 添加新的存储后端
- 实现
BaseStorage - 更新配置选项
4. 添加新的LLM提供商
- 实现LLM客户端接口
- 更新配置处理
配置管理
系统使用分层配置方法:
- 默认配置: 内置默认值
- 文件配置:
config.yaml覆盖 - 环境变量: 覆盖文件配置
- 运行时配置: 基于API的配置更新
安全考虑
1. API安全
- 基于令牌的认证
- 速率限制
- 输入验证
2. 数据隐私
- 本地存储
- 可配置的数据保留
- 安全的API密钥管理
- 对于隐私数据不做存储
部署架构
独立部署
┌─────────────┐
│ MineContext │
│ 应用程序 │
│ │
│ - Web服务器 │
│ - 处理 │
│ - 存储 │
└─────────────────┘分布式部署
┌─────────────────┐ ┌─────────────────┐
│ Web服务器 │────▶│ 处理工作进程 │
│ (前端) │ │ │
└─────────────────┘ └─────────────────┘
│ │
└───────┬───────────────┘
▼
┌───────────────┐
│ 存储后端 │
└───────────────┘