跳转至

智能知识系统 - 分步实施总体规划

⚠️ **归档文档 — 数据已过时** 本报告为历史快照存档。当前版本 **v1.3.0-dev**,232 测试通过。 👉 最新工程状态请参阅 **[ENGINEERING_ALIGNMENT.md](ENGINEERING_ALIGNMENT.md)**

版本: 1.0.0 日期: 2026-03-25 目标: 从模块化到统一完成


总体策略

核心理念:增量式开发,每阶段都可独立验证

阶段0: 规划与准备
阶段1: 最小可用 (MVP) - 单模块验证
  ├── 基础数据层
  └── 简单查询
阶段2: 核心功能 - 气功知识模块
  ├── 向量检索
  └── 气功问答
阶段3: RAG 增强 - 智能检索
  ├── 混合检索
  └── 重排序
阶段4: 推理能力 - 复杂问答
  ├── CoT推理
  └── GraphRAG
阶段5: 系统集成 - 统一平台
  ├── 多领域支持
  └── API网关
阶段6: 高级特性 - 生产就绪
  ├── 监控告警
  └── 性能优化

📋 阶段 0: 规划与准备 (1-2天)

目标

  • 明确技术栈
  • 搭建开发环境
  • 准备基础设施

任务清单

# 0.1 项目规划
├── [ ] 定义功能优先级
├── [ ] 确定技术选型
└── [ ] 制定里程碑

# 0.2 环境准备
├── [ ] Docker 环境
├── [ ] Python 3.12
├── [ ] Node.js 18+
└── [ ] 数据库准备

# 0.3 基础设施
├── [ ] 共享存储目录
├── [ ] 网络配置
└── [ ] 安全配置

验收标准

  • [ ] 环境可以运行 docker --version
  • [ ] 可以连接到共享存储
  • [ ] Python 和 Node.js 可用

输出物

  • 环境检查脚本
  • 技术选型文档

📋 阶段 1: 最小可用 MVP (3-5天)

目标

  • 建立最基础的数据存储和查询能力
  • 验证基础设施可用性
  • 单模块,可独立运行

架构

┌─────────────────────────────────┐
│         阶段1架构                │
├─────────────────────────────────┤
│                                 │
│  ┌─────────┐                   │
│  │ FastAPI │                   │
│  │ :8001   │                   │
│  └────┬────┘                   │
│       │                         │
│       ▼                         │
│  ┌─────────┐                   │
│  │PostgreSQL│                  │
│  │ :5436   │                   │
│  └─────────┘                   │
│                                 │
│  简单的CRUD API                  │
└─────────────────────────────────┘

任务清单

# 1.1 数据库层
├── [ ] 启动 PostgreSQL 容器
├── [ ] 创建数据库和表结构
├── [ ] 插入气功知识样本数据 (5-10条)
└── [ ] 验证数据可查询

# 1.2 基础API
├── [ ] 创建 FastAPI 项目
├── [ ] 实现 CRUD 接口
   ├── GET /api/v1/documents       - 获取文档列表
   ├── GET /api/v1/documents/{id}   - 获取单个文档
   ├── POST /api/v1/documents      - 创建文档
   └── GET /api/v1/search?q={query} - 简单搜索
└── [ ] 测试 API 可用性

# 1.3 前端界面
├── [ ] 创建简单的 HTML 页面
├── [ ] 实现文档列表展示
├── [ ] 实现搜索功能
└── [ ] 前后端联调

# 1.4 Docker 化
├── [ ] 编写 Dockerfile
├── [ ] 编写 docker-compose.yml
├── [ ] 一键启动脚本
└── [ ] 验证部署

文件结构 (阶段1)

zhineng-knowledge-system/
├── docker-compose.yml
├── backend/
│   ├── main.py              # FastAPI 主入口
│   ├── database.py          # 数据库连接
│   ├── models.py            # 数据模型
│   ├── crud.py              # CRUD 操作
│   └── requirements.txt
├── frontend/
│   ├── index.html
│   ├── app.js
│   └── style.css
├── data/
│   └── sample_data.sql
├── tests/
│   ├── test_api.py
│   └── conftest.py
├── DEVELOPMENT_RULES.md
└── PHASED_IMPLEMENTATION_PLAN.md

验收标准

  • [ ] docker-compose up -d 成功启动
  • [ ] 访问 http://localhost:8001/docs 看到 API 文档
  • [ ] 可以通过 API 添加和查询文档
  • [ ] 前端页面能正常显示文档列表 (http://localhost:8008)
  • [ ] 搜索功能返回正确结果

成果展示

# 启动
cd /home/ai/zhineng-knowledge-system && docker-compose up -d

# 测试
curl http://localhost:8001/api/v1/documents
curl http://localhost:8001/api/v1/search?q=气功

# 访问
浏览器打开 http://localhost:8001/docs

📋 阶段 2: 核心功能 - 气功知识模块 (5-7天)

目标

  • 实现向量检索能力
  • 建立气功领域知识库
  • 独立模块,可独立运行

架构

┌─────────────────────────────────────┐
│         阶段2架构                    │
├─────────────────────────────────────┤
│                                      │
│  ┌──────────┐  ┌───────────┐         │
│  │Web 前端  │  │FastAPI后端│         │
│  │  :8008   │  │   :8001    │         │
│  └────┬─────┘  └─────┬─────┘         │
│       │             │                │
│       ▼             ▼                │
│  ┌──────────────────────┐           │
│  │   气功知识服务      │           │
│  │   (内嵌模块)        │           │
│  └──────────────────────┘           │
│       │                             │
│       ▼                             │
│  ┌───────────┐  ┌───────────┐       │
│  │PostgreSQL │  │   Redis   │       │
│  │+pgvector  │  │  缓存     │       │
│  │  :5436    │  │  :6381    │       │
│  └───────────┘  └───────────┘       │
│                                      │
│  核心功能:                           │
│  • 向量嵌入 + 检索                    │
│  • 气功知识库                         │
│  • 智能问答                           │
└──────────────────────────────────────┘

任务清单

# 2.1 向量数据库
├── [ ] 配置 pgvector 扩展
├── [ ] 创建向量表结构
├── [ ] 实现向量嵌入 API
├── [ ] 集成 BGE 嵌入模型
└── [ ] 测试向量检索效果

# 2.2 气功知识库
├── [ ] 创建知识库表结构
├── [ ] 整理气功知识数据
   ├── 基础理论 (10篇)
   ├── 功法练习 (15篇)
   ├── 养生保健 (10篇)
   └── 练习技巧 (8篇)
├── [ ] 实现数据导入脚本
└── [ ] 批量导入知识

# 2.3 气功知识服务
├── [ ] 创建独立 FastAPI 服务
├── [ ] 实现知识检索 API
├── [ ] 实现问答 API
├── [ ] 集成向量检索
└── [ ] 添加领域特色功能

# 2.4 检索功能
├── [ ] 实现混合检索
   ├── BM25 关键词检索
   └── 向量语义检索
├── [ ] 实现结果合并
├── [ ] 实现重排序
└── [ ] 优化检索精度

# 2.5 Docker Compose 更新
├── [ ] 添加 qigong-service
├── [ ] 添加 redis
├── [ ] 更新环境变量
└── [ ] 编写启动脚本

文件结构 (阶段2)

zhineng-knowledge-system/
├── docker-compose.yml
├── backend/
│   ├── main.py
│   ├── database.py
│   ├── models.py
│   ├── services/
│   │   ├── retrieval/
│   │   │   ├── __init__.py
│   │   │   ├── vector.py       # 向量检索
│   │   │   ├── bm25.py         # 关键词检索
│   │   │   └── hybrid.py       # 混合检索
│   │   └── qigong/
│   │       ├── __init__.py
│   │       ├── base_theory.py  # 基础理论
│   │       ├── exercises.py    # 功法练习
│   │       ├── health.py       # 养生保健
│   │       └── techniques.py   # 练习技巧
│   └── requirements.txt
├── frontend/
│   ├── index.html
│   ├── app.js
│   └── style.css
├── data/
│   ├── qigong_knowledge.json   # 气功知识数据
│   └── sample_embeddings.json  # 预计算嵌入
└── tests/
    ├── test_api.py
    └── test_retrieval.py

核心代码示例

# 向量检索服务 (异步)
import asyncpg
from typing import List, Dict, Optional

class VectorRetriever:
    """向量检索服务 - 遵循异步优先规则"""

    def __init__(self):
        self.pool: Optional[asyncpg.Pool] = None
        self.embedding_model = "BAAI/bge-large-zh-v1.5"

    async def init_pool(self, dsn: str) -> None:
        """初始化数据库连接池"""
        self.pool = await asyncpg.create_pool(
            dsn,
            min_size=2,
            max_size=10
        )

    async def search(self, query: str, top_k: int = 5) -> List[Dict]:
        """
        向量相似度搜索

        Args:
            query: 搜索查询
            top_k: 返回结果数量

        Returns:
            检索结果列表
        """
        # 1. 生成查询向量
        query_vector = await self.embed(query)

        # 2. 向量相似度搜索
        sql = """
            SELECT id, title, content,
                   1 - (embedding <=> $1::vector) as similarity
            FROM documents
            ORDER BY embedding <-> $1::vector
            LIMIT $2
        """
        async with self.pool.acquire() as conn:
            rows = await conn.fetch(sql, query_vector, top_k)
            return [dict(row) for row in rows]

验收标准

  • [ ] 向量检索准确率 > 80%
  • [ ] 气功知识库包含 40+ 篇文档
  • [ ] 问答功能正常工作
  • [ ] 混合检索优于单一检索
  • [ ] 响应时间 < 500ms

📋 阶段 3: RAG 增强 (5-7天)

目标

  • 集成 RAG 能力
  • 支持文档上传和解析
  • 实现智能问答

架构

┌──────────────────────────────────────┐
│         阶段3架构                     │
├──────────────────────────────────────┤
│                                        │
│  ┌────────┐  ┌──────┐  ┌─────────┐  │
│  │Web UI  │  │API   │  │向量检索  │  │
│  └───┬────┘  └───┬──┘  └─────┬───┘  │
│      │          │               │     │
│      ▼          ▼               ▼     │
│  ┌─────────────────────────────────┐ │
│  │        RAG Pipeline           │ │
│  │  ┌────────┐  ┌──────┐        │ │
│  │  │文档解析│  │嵌入  │        │ │
│  │  └────┬───┘  └───┬──┘        │ │
│  │       │         │              │ │
│  │       ▼         ▼              │ │
│  │  ┌────────┐  ┌──────────┐   │ │
│  │  │ 向量库  │  │ LLM API   │   │ │
│  │  └────────┘  └──────────┘   │ │
│  └─────────────────────────────────┘ │
│                                        │
│  新功能:                               │
│  • 文档上传 (PDF/Word/TXT)            │
│  • 自动分块和嵌入                      │
│  • RAG 问答                            │
└──────────────────────────────────────┘

任务清单

# 3.1 文档处理
├── [ ] 实现文件上传 API
├── [ ] 集成文档解析库
   ├── PyPDF2 (PDF)
   ├── python-docx (Word)
   └── chardet (编码检测)
├── [ ] 实现文档分块
   ├── 按段落分块
   ├── 按语义分块
   └── 固定大小分块
└── [ ] 实现批处理队列

# 3.2 RAG 问答
├── [ ] 设计 Prompt 模板
├── [ ] 实现上下文检索
├── [ ] 集成 LLM API (DeepSeek)
├── [ ] 实现答案生成
└── [ ] 添加引用来源

# 3.3 前端增强
├── [ ] 文档上传界面
├── [ ] 对话界面
├── [ ] 答案展示(高亮来源)
└── [ ] 历史记录

# 3.4 测试与优化
├── [ ] 单元测试
├── [ ] 集成测试
├── [ ] 性能测试
└── [ ] 用户体验优化

RAG Pipeline 代码

class RAGPipeline:
    def __init__(self):
        self.embedder = "BAAI/bge-large-zh-v1.5"
        self.llm = "deepseek-chat"
        self.vector_db = PostgreSQL()

    async def answer(self, question: str):
        # 1. 检索相关文档
        docs = await self.retrieve(question, top_k=3)

        # 2. 构建提示词
        context = "\n".join([f"{d['title']}: {d['content']}" for d in docs])
        prompt = f"""
基于以下上下文回答问题:

上下文:
{context}

问题:{question}

请给出准确的答案,并引用来源。
"""

        # 3. 调用 LLM
        answer = await self.llm.generate(prompt)

        return {
            "answer": answer,
            "sources": [d["id"] for d in docs]
        }

验收标准

  • [ ] 支持上传 PDF/Word 文档
  • [ ] 自动分块准确率 > 90%
  • [ ] RAG 问答准确率 > 85%
  • [ ] 答案包含引用来源
  • [ ] 端到端响应时间 < 3s

📋 阶段 4: 推理能力 (7-10天)

目标

  • 添加推理模式
  • 支持复杂问题链式推理
  • 优化回答质量

架构

┌──────────────────────────────────────┐
│         阶段4架构                     │
├──────────────────────────────────────┤
│                                        │
│  ┌─────────────────────────────────┐  │
│  │       推理引擎                  │  │
│  │  ┌────────┐  ┌──────────┐      │  │
│  │  │CoT Engine│  │ReAct Agent│     │  │
│  │  └────────┘  └────┬─────┘      │  │
│  │                   │               │  │
│  │  ┌────────▼──────────────┐     │  │
│  │  │   DeepSeek-R1 API       │     │  │
│  │  │   (复杂推理)           │     │  │
│  │  └────────────────────────┘     │  │
│  └─────────────────────────────────┘  │
│                     ▼                   │
│  ┌─────────────────────────────────┐  │
│  │       知识库 + GraphRAG         │  │
│  │  • 实体抽取                   │  │
│  │  • 关系构建                   │  │  │
│  │  • 图谱遍历                   │  │
│  └─────────────────────────────────┘  │
│                                        │
│  新功能:                               │
│  • Chain-of-Thought 推理             │
│  • 多步推理链                        │
│  • 图谱推理 (实体关系)               │
│  • 推理过程可视化                   │
└──────────────────────────────────────┘

任务清单

# 4.1 推理引擎
├── [ ] 实现 CoT (Chain of Thought)
├── [ ] 实现 ReAct 模式
├── [ ] 集成 DeepSeek-R1 API
└── [ ] 实现推理缓存

# 4.2 GraphRAG
├── [ ] 实体抽取
├── [ ] 关系抽取
├── [ ] 图谱构建 (Neo4j  内存图谱)
├── [ ] 图谱遍历查询
└── [ ]  RAG 集成

# 4.3 推理 API
├── [ ] POST /api/v1/reason - 推理问答
├── [ ] POST /api/v1/graph_query - 图谱查询
└── [ ] GET /api/v1/reasoning/{id} - 推理历史

# 4.4 前端展示
├── [ ] 推理过程展示
├── [ ] 思维链可视化
└── [ ] 图谱可视化 (简单版)

推理 API 示例

@app.post("/api/v1/reasoning")
async def reasoning_answer(request: ReasoningRequest):
    """推理问答"""

    # 1. 分析问题类型
    query_type = analyze_query(request.question)

    # 2. 选择推理模式
    if query_type == "factual":
        # 简单事实查询 - 直接检索
        return await simple_search(request.question)

    elif query_type == "reasoning":
        # 需要推理的问题
        return await cot_reasoning(request.question)

    elif query_type == "multi_hop":
        # 多跳推理 - 使用 GraphRAG
        return await graph_rag_reasoning(request.question)


async def cot_reasoning(question: str):
    """Chain of Thought 推理"""

    prompt = f"""
请使用逐步推理的方式回答以下问题:

问题:{question}

请按照以下格式回答:
思考过程:
1. 首先分析问题的关键点
2. 然后逐步推理
3. 最后得出结论

答案:
[你的最终答案]
"""

    # 调用 DeepSeek-R1 (推理模型)
    response = await deepseek_r1.generate(
        prompt,
        max_tokens=2000,
        temperature=0.7
    )

    return response

验收标准

  • [ ] 推理模式准确提升 15%+
  • [ ] 复杂问题有推理过程展示
  • [ ] GraphRAG 支持多跳查询
  • [ ] 推理缓存命中率 > 30%

📋 阶段 5: 系统集成 (5-7天)

目标

  • 统一多领域支持
  • 实现 API 网关
  • 完善监控

架构

┌──────────────────────────────────────┐
│         阶段5架构                     │
├──────────────────────────────────────┤
│                                        │
│  ┌────────────────────────────────┐   │
│  │         API Gateway            │   │
│  │  ┌────────┐  ┌──────┐        │   │
│  │  │路由   │  │认证  │        │   │
│  │  └───┬────┘  └───┬──┘        │   │
│  │      │          │             │   │
│  │      ▼          ▼             │   │
│  │  ┌──────────────────────────┐ │   │
│  │  │    服务层                │ │   │
│  │  │  ┌─────────┬─────────┐│   │   │
│  │  │  │气功知识 │ 通用知识││   │   │
│  │  │  │  :8002  │  :8001  ││   │   │
│  │  │  └─────────┴─────────┘│   │   │
│  │  └──────────────────────────┘ │   │
│  └────────────────────────────────┘   │
│                                        │
│  ┌───────────────────────────────────┐ │
│  │         支持服务                │ │ │
│  │  • 任务队列 (Celery)              │ │ │
│  │  • 向量库 (PostgreSQL+pgvector)   │ │ │
│  │  • 缓存 (Redis)                   │ │ │
│  │  • 存储 (MinIO)                   │ │ │
│  └───────────────────────────────────┘ │
│                                        │
│  ┌───────────────────────────────────┐ │
│  │         监控                    │   │ │
│  │  • Grafana                      │ │ │
│  │  • Prometheus                   │ │ │
│  │  │ 日志聚合                      │ │ │
│  └───────────────────────────────────┘ │
│                                        │
└──────────────────────────────────────┘

任务清单

# 5.1 API 网关
├── [ ] 实现统一路由
├── [ ] 实现服务注册与发现
├── [ ] 实现负载均衡
├── [ ] 实现熔断降级
└── [ ] 实现 API 限流

# 5.2 多领域支持
├── [ ] 抽象领域接口
├── [ ] 气功领域实现
├── [ ] 通用知识领域实现
├── [ ] 可扩展的领域插件系统
└── [ ] 跨领域查询

# 5.3 监控完善
├── [ ] 配置 Prometheus 指标
├── [ ] 配置 Grafana 仪表盘
├── [ ] 实现日志聚合
├── [ ] 实现告警规则
└── [ ] 实现健康检查

# 5.4 部署优化
├── [ ] 统一 docker-compose.yml
├── [ ] 编写部署脚本
├── [ ] 实现滚动更新
└── [ ] 实现备份恢复

API 网关示例

class APIGateway:
    """API 网关"""

    def __init__(self):
        # 服务注册表
        self.services = {
            "qigong": "http://qigong-service:8002",
            "general": "http://general-service:8001",
            "tcm": "http://tcm-service:8003"
        }

    async def route_request(self, request):
        # 1. 识别领域
        domain = await self.detect_domain(request)

        # 2. 路由到对应服务
        service_url = self.services.get(domain)
        if not service_url:
            # 降级到通用服务
            service_url = self.services["general"]

        # 3. 转发请求
        return await self.forward(service_url, request)

    async def detect_domain(self, request):
        """识别问题所属领域"""
        keywords = request.query.lower()

        # 气功关键词
        qigong_keywords = ["气功", "八段锦", "呼吸", "养生", "功法"]
        if any(kw in keywords for kw in qigong_keywords):
            return "qigong"

        # 中医关键词
        tcm_keywords = ["中医", "针灸", "中药", "经络", "穴位"]
        if any(kw in keywords for kw in tcm_keywords):
            return "tcm"

        return "general"

验收标准

  • [ ] API 网关正常运行
  • [ ] 多领域查询正确路由
  • [ ] 监控数据正常采集
  • [ ] 告警规则生效
  • [ ] 系统可用性 > 99%

📋 阶段 6: 高级特性 (5-7天)

目标

  • 生产环境就绪
  • 性能优化
  • 安全加固

任务清单

# 6.1 性能优化
├── [ ] 实现查询缓存
├── [ ] 实现结果缓存
├── [ ] 优化数据库查询
├── [ ] 添加 CDN 支持
└── [ ] 性能压测

# 6.2 安全加固
├── [ ] 实现 JWT 认证
├── [ ] 实现 RBAC 权限
├── [ ] 添加 API 限流
├── [ ] 实现数据加密
└── [ ] 安全扫描

# 6.3 运维工具
├── [ ] 实现一键部署脚本
├── [ ] 实现一键备份
├── [ ] 实现一键恢复
├── [ ] 编写运维文档
└── [ ] 实现 CI/CD

# 6.4 文档完善
├── [ ] API 文档
├── [ ] 部署文档
├── [ ] 用户手册
├── [ ] 运维手册
└── [ ] 开发文档

优化配置

# 性能优化配置
PERFORMANCE_CONFIG = {
    "cache": {
        "enabled": True,
        "ttl": {
            "query_result": 3600,     # 查询结果缓存1小时
            "vector_search": 1800,    # 向量搜索缓存30分钟
            "llm_response": 7200     # LLM响应缓存2小时
        }
    },
    "batching": {
        "enabled": True,
        "batch_size": 10,
        "timeout": 5000
    },
    "optimization": {
        "query_parallel": True,
        "result_rerank": True,
        "early_termination": True
    }
}

验收标准

  • [ ] P95 响应时间 < 100ms (简单查询)
  • [ ] P95 响应时间 < 2s (复杂查询)
  • [ ] 并发支持 > 100 QPS
  • [ ] 安全扫描通过
  • [ ] 文档完整度 > 90%

📊 进度跟踪

里程碑

阶段 预计时间 状态 完成度
阶段0: 规划准备 1-2天 ✅ 完成 100%
阶段1: MVP 3-5天 ✅ 完成 100%
阶段2: 气功模块 5-7天 🔄 收尾 95%
阶段3: RAG增强 5-7天 ✅ 完成 100%
阶段4: 推理能力 7-10天 ✅ 完成 100%
阶段5: 系统集成 5-7天 ⏳ 待开始 0%
阶段6: 高级特性 5-7天 ⏳ 待开始 0%

总计

  • 预计总时间: 30-45 天
  • 可并行: 部分阶段可并行开发
  • 灵活调整: 可根据实际情况调整

🎯 立即开始:阶段0

# 创建阶段0目录
mkdir -p phase0-setup

# 环境检查脚本
cat > phase0-setup/check_env.sh << 'EOF'
#!/bin/bash
echo "=== 环境检查 ==="

echo "检查 Docker..."
if command -v docker &> /dev/null; then
    echo "✅ Docker: $(docker --version)"
else
    echo "❌ Docker 未安装"
    exit 1
fi

echo "检查 Python..."
if command -v python3 &> /dev/null; then
    echo "✅ Python: $(python3 --version)"
else
    echo "❌ Python 未安装"
    exit 1
fi

echo "检查 Node.js..."
if command -v node &> /dev/null; then
    echo "✅ Node.js: $(node --version)"
else
    echo "❌ Node.js 未安装"
    exit 1
fi

echo "检查共享存储..."
if [ -d /data ]; then
    echo "✅ 共享存储: /data ($(df -h /data | tail -1 | awk '{print $4} 可用'))"
else
    echo "❌ 共享存储 /data 不存在"
    exit 1
fi

echo "=== 环境检查完成 ==="
EOF
chmod +x phase0-setup/check_env.sh

需要我开始执行阶段0的环境检查吗?