构建主权 AI 技术栈:从零到 POC
Source: Dev.to

在数据隐私至关重要的时代,依赖云端 AI 提供商并不总是可行的。无论是出于合规、安全,还是仅仅为了安心,运行 Sovereign AI Stack——完全本地、由自己掌控的 AI 基础设施——都是许多组织的终极目标。
今天,我们为此构建了一个概念验证(POC),利用开源工具创建了一个私有、可观测且可搜索的 AI 环境。以下是我们的历程。
架构
- AI Server – 本地 LLM,运行在
llama.cpp上(提供兼容 OpenAI 的 API)。在不让数据离开网络的情况下提供智能。 - Search Engine – Manticore Search(在 Docker 中运行)。因其轻量级占用和强大的全文搜索能力而被选用,对 RAG(检索增强生成)至关重要。
- Observability – AI Observer(在 Docker 中运行)。捕获我们 AI 交互的追踪和指标。
架构可视化
┌─────────────────┐ ┌──────────────────┐
│ │──(1)──▶│ Manticore Search │
│ Orchestrator │ │ (Docker) │
│ (Node.js) │ └──────────────────┘
│ │ ┌──────────────────┐
│ │──(2)──▶│ AI Server LLM │
│ │ │ (192.168.0.2) │
│ │ └──────────────────┘
│ │ ┌──────────────────┐
│ │──(3)──▶│ AI Observer │
└─────────────────┘ │ (Docker) │
└──────────────────┘
│
(4)
▼
(Monitors AI Server)
组件状态流
[*] ──▶ Init ──▶ Indexing: Create Table (RT)
│
▼
Searching: Documents Added
/ \
/ \
Error: No Hits (Retry) RAG_Construction: Hits Found
│ │
[*] ▼
Inference: Context + Prompt
/ \
/ \
Timeout: Model Slow Success: Answer Generated
│ │
[*] [*]
实现
1. 打好基础(Docker)
我们使用 docker‑compose 将 Manticore 和 AI Observer 容器化。一个关键挑战是网络:确保 orchestrator(客户端)能够与容器 以及 外部 AI 服务器通信。映射端口(9308、9312、3001)至关重要。
Lesson: Manticore 的 HTTP SQL 接口(
/sql)功能强大,但与许多客户端期望的仅 JSON 的/search端点略有不同。我们必须调整客户端,以正确解析 SQL 响应结构。
2. Orchestrator
一个简单的 TypeScript orchestrator 模拟真实业务流程:
- Ingest – 将主权数据索引到 Manticore。
- Retrieve – 在 Manticore 中搜索相关上下文(
MATCH('Ensures data privacy'))。 - Augment – 将检索到的上下文与用户提示组合。
- Generate – 将增强后的提示发送给本地 LLM。
- Observe – 将每一步记录到 AI Observer。
3. 验证与测试
- Integration Tests – 使用
vitest验证文档是否正确索引并可检索(通过了解 RT 索引刷新,修复了零命中问题)。 - End‑to‑End – 完整流水线使用本地环境生成了关于 “Sovereign AI” 的连贯解释。
- Visual Validation – 通过浏览器自动化检查 AI Observer UI,确保遥测数据已落地。
实际体验
最令人惊讶的体会是 延迟权衡。我们的本地 LLM 完整回答大约需要 ~18–80 秒。虽然比云端 API 慢,但这种权衡换来了完全的隐私——没有代币费用,也没有数据泄漏。
Manticore 在检索方面表现极其快速,常常在毫秒级返回命中,使其成为较慢 LLM 的完美伴侣。
结论与下一步
此概念验证展示了主权 AI 堆栈不仅可行,而且易于获取。借助 Manticore 和 AI Observer 等工具,您可以在一个下午内构建一个强大、私有的 RAG 流水线。
下一步
- 实现持久化向量存储以进行语义搜索。
- 优化 LLM 推理速度(量化、GPU 卸载)。
- 在编排器之上构建聊天 UI。