# jianwang **Repository Path**: lixiaobin1304/jianwang ## Basic Information - **Project Name**: jianwang - **Description**: 使用大模型技术综合分析二十四史。 - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-08 - **Last Updated**: 2026-09-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 鉴往知来 · 历史智慧学习平台 🏛️ > "看未来远不如看过去要来得清楚。" —— 高育良 ## 缘起 本人从小对历史感兴趣,长大后机缘巧合成了大模型工程师。 读《人民的名义》时,高育良那句"看未来远不如看过去要来得清楚"让我深有感触。历史是已经发生的事,里面藏着人性的常数。权谋也好,阳谋也罢,千年前的局,今天换个皮照样上演。 技术做到一定程度,会越来越觉得:与其预测未来,不如把过去看清楚。于是有了这个项目 —— 用大模型的能力,把二十四史里的局、谋、人,重新摆到今人面前。 **鉴往知来**,故名。 --- 基于大模型与 RAG 的历史智慧学习平台。整合二十四史知识库,提供智能对话、史记知识库等功能。 ## ✨ 核心特性 ### 智能对话 - 🤖 RAG 驱动的权谋知识问答 - 🎤 支持文字和语音输入 - 📚 双集合检索(本地文档 + 二十四史知识库) - 🔍 自动引用来源和历史典故 ### 史记知识库 - 📖 史记全文阅读(130 篇章节) - 🕸️ 人物关系图谱(20,000+ Wiki 页面) - ⏱️ 历史事件时间线 - 🔗 智能关联和类比查找 ## 🚀 快速开始 ### 本地开发环境 #### 1. 配置环境变量 ```bash # 复制配置文件 cp backend-java/src/main/resources/application.yml.example backend-java/src/main/resources/application.yml # 编辑 application.yml,配置: # - Claude API Key # - Milvus 连接 # - Redis 连接 # - MySQL 数据库 ``` #### 2. 使用启动脚本(推荐) ```bash # 编译项目 bash start.sh build # 启动所有服务(后端 + 前端) bash start.sh start # 停止所有服务 bash start.sh stop # 重启服务 bash start.sh restart # 查看服务状态 bash start.sh status ``` #### 3. 测试 API 接口 ```bash # 运行完整的 API 测试(包含健康检查、对话、会话管理、Milvus 统计等) bash test-api.sh # 测试结果示例: # ✅ 健康检查接口 # ✅ 对话接口 (SSE 流式) # ✅ 会话管理 (创建/列表/详情) # ✅ Milvus 向量库统计 # ✅ 前端服务 # ✅ 史记 Wiki 服务 ``` #### 4. 访问应用 | 服务 | 地址 | |------|------| | 前端 | http://localhost:5174 | | 后端 API | http://localhost:8000 | | Neo4j 浏览器 | http://localhost:7474 | | 史记 API | http://localhost:8002(如已配置)| | 史记 Wiki | http://localhost:8003(如已配置)| ## 📚 导入本地文档 ```bash # 安装 Python 依赖 pip install python-docx ebooklib beautifulsoup4 requests # 运行导入脚本(laoda 文档 → quanmou_docs 集合) python scripts/import_laoda_docs.py ``` 支持格式:`.docx`、`.epub` ## 🏗️ 系统架构 ``` ┌──────────────────────────────────────────────────────────────┐ │ 用户层 │ │ Web Browser / Client │ └──────────────────────────────────────────────────────────────┘ │ ▼ ┌──────────────────────────────────────────────────────────────┐ │ 前端层 (5174) │ │ Vue 3 + Vite + Element Plus │ │ - 智能对话界面(RAG 问答 + 流式响应) │ │ - 会话管理(创建 / 查看 / 继续对话) │ │ - 历史记录(消息列表 + 时间线) │ └──────────────────────────────────────────────────────────────┘ │ HTTP/SSE ▼ ┌──────────────────────────────────────────────────────────────┐ │ 后端层 (8000) - Spring Boot 3.5 │ │ │ │ Controller 层 │ │ ChatController POST /api/chat (SSE 流式对话) │ │ ConversationController 会话 CRUD │ │ MilvusStatsController GET /api/milvus/stats │ │ │ │ Service 层 │ │ ChatService 流式对话主流程 + 会话持久化 │ │ RagService 双集合检索 + BGE Reranker │ │ LlmService Claude API 流式调用 + BGE 向量化 │ │ McpToolService MCP 工具调度 │ │ CrossChecker 幻觉检测 + 引用验证 │ │ AgentHarness Agent 调度 + 工具链执行 │ └──────────────────────────────────────────────────────────────┘ │ │ │ │ ▼ ▼ ▼ ▼ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ Milvus │ │ Redis │ │ Neo4j │ │ PostgreSQL │ │ 向量库 │ │ 缓存 │ │ 图库 │ │ 关系库 │ │ :19530 │ │ :6379 │ │ :7474 │ │ :5432 │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │ ▼ ┌───────────────────────┐ │ 外部 AI 服务 │ │ - Claude API │ │ - BGE Embedding │ │ - BGE Reranker │ └───────────────────────┘ ``` **核心流程:** 1. 用户提问 → ChatController 接收 SSE 请求 2. ChatService 编排 → RagService 双集合检索(`quanmou_docs` + `ershisi_shi_epub`) 3. BGE Reranker 重排序 Top-5 → CrossChecker 幻觉检测 4. LlmService 调用 Claude API 流式生成 5. SSE 实时推送 → 前端逐字展示 6. 会话持久化 → PostgreSQL ## 📊 API 接口 | 方法 | 路径 | 说明 | 返回 | |------|------|------|------| | POST | `/api/chat` | 流式对话 | SSE | | POST | `/api/conversations` | 创建会话 | JSON | | GET | `/api/conversations` | 列出会话 | JSON | | GET | `/api/conversations/{id}` | 会话详情 | JSON | | POST | `/api/conversations/{id}/messages` | 发送消息 | SSE | | GET | `/api/milvus/stats` | 向量库统计 | JSON | ### 使用示例 ```bash # 1. 创建会话 curl -X POST http://localhost:8000/api/conversations \ -H "Content-Type: application/json" \ -d '{"userId":"user123"}' # 2. 向会话发送消息(SSE 流式) curl -X POST http://localhost:8000/api/conversations/1/messages \ -H "Content-Type: application/json" \ -d '{"content":"介绍一下权谋思想"}' \ --no-buffer # 3. 获取会话历史 curl http://localhost:8000/api/conversations/1 # 4. 列出用户所有会话 curl "http://localhost:8000/api/conversations?userId=user123" # 5. 基础对话(无会话持久化) curl "http://localhost:8000/api/chat?message=你好&history=%5B%5D" --no-buffer ``` ## 💻 技术栈 ### 前端 - Vue 3 + Composition API - Element Plus UI - Pinia 状态管理 - Vite 构建 ### 后端 - Java 17 + Spring Boot 3.5 - Spring Data JPA - Spring WebFlux SSE - Lombok ### 数据存储 - Milvus 2.4 向量数据库 - MySQL 8.0(生产)/ H2(开发) - Redis 7 缓存 - Neo4j 5 图数据库 - MongoDB 7 文档数据库 ### 可观测性 - Micrometer + Prometheus 指标监控(LLM / Milvus / 检索延迟) - OpenTelemetry 1.49 全链路追踪 - Actuator 端点:`/actuator/metrics`、`/actuator/prometheus` - W3C TraceContext + MDC 日志 ### AI & ML - Anthropic Claude / OpenAI GPT - BGE 本地 Embedding + Reranker - RAG (Retrieval-Augmented Generation) - MCP 工具调度 ### 部署 - Docker + Docker Compose - Nginx 反向代理 ## 🎯 功能演示 ### 智能对话 —— 史记来源引用 ``` 用户: "项羽在鸿门宴上应该怎么做?" ↓ 系统检索: quanmou_docs + shiji_kb ↓ 助手回答: [分析内容...] 📚 参考来源: 📜 史记·007 (0.85 分) "项羽在鸿门宴上..." [查看详情 →] ``` ## 🛠️ 常用命令 ```bash # Docker 管理 docker-compose ps docker-compose logs -f quanmou-backend docker-compose restart quanmou-backend # 导入史记数据 docker-compose exec quanmou-backend python scripts/ingest_shiji.py --source chapters docker-compose exec quanmou-backend python scripts/ingest_shiji.py --source wiki docker-compose exec quanmou-backend python scripts/ingest_shiji.py --source events # 健康检查 curl http://localhost:8000/health docker-compose exec redis redis-cli ping # 开发模式(无需 Docker/MySQL,使用 H2 内存库) SPRING_PROFILES_ACTIVE=dev bash start.sh start # H2 Console: http://localhost:8000/h2-console ``` ## 📖 文档 - [部署指南](docs/DEPLOYMENT.md) - [LLM API 配置](docs/LLM_API_SETUP.md) - [项目完成报告](docs/FINAL_COMPLETION_REPORT.md) - [史记整合进度](docs/shiji-integration-progress.md) - [后端测试报告](docs/backend-test-report.md) - [架构详解](docs/ARCHITECTURE.md) ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📄 许可 [MIT License](LICENSE)