系统概览
TrustRAG 采用模块化的三层架构,支持桌面和服务器两种部署模式。
整体架构
text
┌─────────────────────────────────────────┐
│ Flutter Client (UI) │
│ Windows / macOS / Linux / Web / iOS │
└──────────────────┬──────────────────────┘
│ HTTP REST API
┌──────────────────▼──────────────────────┐
│ Rust Backend (Axum) │
│ ┌──────────┐ ┌──────────┐ ┌────────┐ │
│ │ Chat API │ │ Doc API │ │ Search │ │
│ └────┬─────┘ └────┬─────┘ └───┬────┘ │
│ │ │ │ │
│ ┌────▼─────────────▼───────────▼────┐ │
│ │ Database Abstraction │ │
│ │ ┌─────────┐ ┌───────────────┐ │ │
│ │ │ SQLite │ │ PostgreSQL │ │ │
│ │ │ + FTS5 │ │ + pgvector │ │ │
│ │ └─────────┘ └───────────────┘ │ │
│ └───────────────────────────────────┘ │
└─────────────────────────────────────────┘核心模块
API 层
- Chat API — 对话管理、消息收发、流式生成
- Document API — 文档上传、解析、索引
- Search API — 全文搜索和向量搜索
- Citation API — 引用追踪和审核
服务层
- RAG Service — 检索增强生成管线
- Citation Service — 引用提取和映射
- Review Service — 文档审核工作流
数据层
- 数据库抽象层 — 统一接口,隐藏底层差异
- SQLite + FTS5 — 桌面模式,全文搜索
- PostgreSQL + pgvector — 服务器模式,向量检索
设计原则
- 编译时特性切换 — 通过 Cargo features 在编译时选择数据库后端
- 零依赖桌面部署 — 桌面模式不依赖外部服务
- API 兼容 — 两种模式对外暴露相同的 REST API
