# ADR-0001 · 技术选型决策记录 > 项目:AIAudit(本地私有化大模型电信运营商 AI 全域内审平台) > 状态:已接受(MVP 基线) > 日期:2026-06 > 关联:`0-req-AIAudit.md`、`1-prd-AIAudit.md`、`2-task-AIAudit.md`(任务 P0.1) ## 背景 平台需在本地内网部署、数据零出域,具备本体/知识图谱、双时态/时序、本地 LLM 推理、向量检索等能力,并需信创适配。技术选型需在"能力完整"与"组件最少、出域面最小、便于信创"之间取得平衡。 ## 决策 | 层 | 选型 | 说明 | | --- | --- | --- | | 后端 | Python 3.12 + FastAPI | 贴近 LLM/数据/ML 生态,异步任务友好 | | 前端 | React + TypeScript + Vite | 看板/下钻交互成熟 | | 主存储 | PostgreSQL 16 | 一库多能,降低组件数与出域面 | | 知识图谱 | PostgreSQL + Apache AGE | 免独立图库,信创友好,满足 MVP 多跳穿透 | | 双时态/时序 | PostgreSQL 时态列 + TimescaleDB | 双时态回放 + 时间序列一体 | | 向量检索 | pgvector | 与主库同栈,免独立向量库 | | 任务调度 | Celery + Redis | 全量扫描异步任务、进度反馈 | | 文件/对象 | MinIO(本地 S3) | 凭证/底稿存储,不出域 | | LLM 推理 | Provider 抽象:开发期 DashScope 公网千问;生产 vLLM + 本地 70B | 见下"LLM 抽象与红线" | | 部署 | 本地 Homebrew 安装(开发)→ 生产内网裸机/信创环境 | 不使用 Docker;开发直接用本机 PostgreSQL 16 + 本地服务 | ## LLM 抽象与数据零出域红线(关键约束) - LLM 通过统一 `LLMProvider` 接口接入,至少实现两种:`DashScopeProvider`(公网千问,**仅开发/测试**)、`VllmProvider`(本地,生产)。 - **红线:公网 Provider 只允许处理脱敏/样例假数据,严禁传入任何真实审计数据。** 通过配置开关 + 环境标识(dev/prod)强约束;prod 环境禁用任何公网 Provider。 - 切换 Provider 仅改配置,不改业务代码。 ## 本机环境结论(开发机) - Mac mini · Apple M4 · 16GB · macOS 26.5.1(ARM64);磁盘可用 ~170GB。 - 开发 MVP 够用(样例数据 + 公网千问 API + Docker 组件)。 - **不能本地运行 70B**;生产推理需独立 GPU 服务器(A100/H100/国产 GPU)跑 vLLM。 ## 备选与未选原因 - 独立 Neo4j 图库:能力更强但增加组件与信创/授权负担,MVP 暂不引入;图谱压力增大时再评估。 - 独立时序库 / 独立向量库:同理,先用 PG 一体化,后续按压力拆分。 - 后端 Java Spring Boot:企业集成习惯好,但 LLM/数据/ML 生态以 Python 为主,会多一层;若团队为 Java 班底可改为"Java 主服务 + Python 分析/推理服务"。 ## 影响 - 开发环境:本机 Homebrew 安装 PostgreSQL 16 + TimescaleDB + pgvector,不使用 Docker(已移除 docker-compose 与自定义镜像);初始化脚本见 `infra/postgres/setup_local.sh`。 - 生产部署需规划独立 GPU 推理节点(任务 P3.5 信创适配同步评估)。