# 05-AI知识库系统_AI-RAG技术方案设计_V1.0 (1).docx 《05-AI 知识库系统 AI/RAG 技术方案设计》 ## 第一章 技术架构 ### 1.1 总体架构 ## 第二章 技术选型 ## 第三章 RAG 流程 ### 3.1 总体流程 ## 第四章 权限过滤 ### 4.1 核心原则 AI 只能访问用户拥有权限的知识库。 例如: 用户A: 直播运营 客服SOP 提问: 如何搭建直播间? 系统: 仅检索: 直播运营 客服SOP 不会访问: 销售知识库 人事知识库 财务知识库 ### 4.2 权限流程 ## 第五章 飞书知识库接入 ### 5.1 接入原则 根据已确认需求: 飞书知识库作为唯一知识源 不建立本地知识副本 不做手动同步 每次提问实时检索 ### 5.2 更新机制 无需后台点击同步。 ### 5.3 异常处理 默认: 自动重试 2 次(后台可配置 0~3 次) 全部失败: 返回: 当前知识库服务暂时不可用,请稍后再试。 后台记录: 请求参数 错误原因 响应时间 用户信息 ## 第六章 Prompt 组装 ### 6.1 Prompt 组成 最终 Prompt 由四部分组成: ### 6.2 系统 Prompt 来源: 后台 Prompt 管理。 保存后立即生效。 ### 6.3 知识片段 来源: 飞书实时检索结果。 不做修改。 ### 6.4 上下文 后台配置: Token 模式(推荐) 最近 N 轮模式 超出限制: 自动截断最早内容。 ## 第七章 AI 回复策略 ### 7.1 有知识命中 流程: ### 7.2 无知识命中 返回: 当前知识库中未检索到相关内容,请联系管理员补充相关知识。 禁止: 自行编造答案 使用模型已有知识补充 ### 7.3 多知识库冲突 例如: 知识库A: 建议直播2小时。 知识库B: 建议直播4小时。 返回: AI 不进行裁决。 ## 第八章 Streaming 输出 ### 8.1 输出方式 采用 Server-Sent Events(SSE)。 流程: ### 8.2 停止生成 用户点击: 停止生成 系统: 取消模型请求 保留已生成内容 消息状态更新为 STOPPED ## 第九章 超时与异常 ### 9.1 AI 超时 后台配置: 默认: 30 秒 超时: 终止请求 返回统一提示 写入 AI 请求日志 ### 9.2 飞书异常 重试结束仍失败: 知识库服务暂时不可用,请稍后再试。 ### 9.3 模型异常 返回: AI 服务暂时不可用,请稍后重试。 ## 第十章 日志记录 每次 AI 调用记录: 用户ID 会话ID 模型名称 Prompt(建议生产环境可配置是否完整保存) 检索知识库 Token 消耗 请求耗时 调用状态 错误信息(如有) ## 第十一章 性能建议 并发 建议: API 无状态部署 Redis 保存验证码、登录态缓存等(按实际架构) AI 服务独立部署 数据库 建议索引: user_id session_id knowledge_id created_at 超时 飞书接口:建议 10 秒以内 AI 请求:默认 30 秒,可后台配置 ## 第十二章 V2 扩展规划(预留) 在不影响 V1 架构的前提下,可扩展: 向量数据库(Milvus / pgvector 等) 文档上传(PDF、Word、Excel) 图片 OCR 多 Prompt 模板 多模型路由 多租户 联网搜索 知识召回优化 AI 回复质量评估 在线设备管理 《AI/RAG 技术方案》第一版完成 本技术方案与前面的 PRD、SRS、数据库设计、API 文档保持一致,覆盖了: 总体架构 RAG 工作流 飞书知识库实时检索 权限过滤 Prompt 组装 AI 回复策略 SSE 流式输出 超时与异常处理 日志记录 后续扩展规划 ## Table 1 | 版本 | V1.0 | | --- | --- | | 架构模式 | RAG(Retrieval-Augmented Generation) | | 适用范围 | V1.0 | ## Table 2 | 用户(Web/H5) │ 手机号 + 短信验证码登录 │ API Gateway / Backend │ ┌───────────┼───────────┐ │ │ │ 用户服务 AI服务(RAG) 后台管理 │ │ │ │ ▼ │ │ 权限校验模块 │ │ │ │ │ Prompt组装模块 │ │ │ │ │ 飞书知识检索 │ │ │ │ │ 大模型调用 │ │ │ │ └───────────▼───────────┘ MySQL 数据库 | | --- | ## Table 3 | 模块 | 建议方案 | | --- | --- | | 前端 | Vue3 + TypeScript + Element Plus(后台)、H5 用户端 | | 后端 | Java Spring Boot 3.x(或 NestJS,二选一) | | 数据库 | MySQL 8.x | | 缓存 | Redis | | AI 模型 | 后台可切换(一期仅启用一个) | | 知识源 | 飞书知识库 | | 通信 | REST + SSE(Streaming) | | 身份认证 | JWT | ## Table 4 | 用户提问 │ ▼ 登录校验 │ ▼ 账号状态校验 │ ▼ 聊天次数校验 │ ▼ 获取用户知识库权限 │ ▼ 过滤无权限知识库 │ ▼ 实时访问飞书知识库 │ ▼ 获取知识片段 │ ▼ 组装 Prompt │ ▼ 调用 AI 模型 │ ▼ Streaming 输出 │ ▼ 保存聊天记录 | | --- | ## Table 5 | UserID │ ▼ 查询用户知识库权限 │ ▼ 过滤已过期权限 │ ▼ 过滤禁用知识库 │ ▼ 得到最终检索范围 | | --- | ## Table 6 | 飞书修改文档 │ ▼ 用户下一次提问 │ ▼ 实时读取最新内容 | | --- | ## Table 7 | ① 系统 Prompt + ② 检索到的知识片段 + ③ 当前会话上下文 + ④ 用户当前问题 | | --- | ## Table 8 | 知识命中 ↓ 引用知识 ↓ 生成答案 | | --- | ## Table 9 | 知识库A: …… 知识库B: …… 当前知识库存在不同观点, 以上内容分别来源于不同知识库, 请结合实际业务判断。 | | --- | ## Table 10 | AI生成 Token │ ▼ 实时发送 │ ▼ 前端逐步渲染 | | --- |