项目背景与目标:企业内部文档散落在网盘、共享盘和各类系统中,员工找资料平均要花十几分钟,新人培训和老员工查资料效率都很低。本项目目标是搭建一个企业级知识库问答平台,把散落的文档统一沉淀,员工用自然语言提问即可秒级得到答案,并标注答案来自哪份文档的第几段。
核心功能:(1) 多格式文档上传(PDF / Word / Excel / TXT / 网页),自动解析入库;(2) 基于大模型 + 向量检索的智能问答,支持多轮追问;(3) 每条回答附带原文出处引用,点击可跳转原文,杜绝大模型胡编;(4) 按部门/角色划分知识库权限,越权内容不可检索;(5) 问答日志与命中率统计,运营可看到哪些问题问得最多、哪些知识缺口最大。
业务流程:管理员上传文档 → 系统自动解析、切片并向量化入库 → 员工在对话界面用自然语言提问 → 系统向量检索出相关片段 → 大模型基于片段生成回答并给出引用 → 员工可继续追问或查看原文。
整体架构与设计思路:系统采用前后端分离 + 分层架构。前端用 Vue3 实现对话式交互;后端用 FastAPI 提供 REST 接口,按业务拆分为文档管理、知识库问答、用户权限、会话管理四个服务;AI 能力层独立封装,包含文档解析、文本切片、Embedding 向量化、向量检索、Rerank 重排序和大模型生成六个环节;数据层用 MySQL 存业务数据、pgvector 存向量、Redis 做缓存与限流、MinIO 存原始文件。检索采用「向量召回 + 关键词召回」混合策略,再经 Rerank 精排,兼顾语义理解和专有名词精确匹配;大模型回答严格限定在检索到的片段内,并强制输出引用来源,从机制上抑制幻觉。
我个人负责的部分:独立完成整体架构设计、后端 API 与 AI 链路的全部核心开发。具体包括:设计文档解析到入库的异步流水线(Celery 任务队列),把大文件解析从请求链路剥离,上传接口响应从数十秒降到 1 秒内;实现混合检索 + Rerank 的问答链路,把首屏答案响应控制在 3 秒内;实现基于「部门-角色-知识库」三级模型的权限过滤,确保向量检索阶段就带权限条件,避免越权检索;完成前端对话界面与引用高亮联动;搭建 Docker Compose 一键部署环境。
遇到的难点及解决方案:一是 PDF / 扫描件解析质量差,通过文字层优先 + OCR 兜底的双通道解析策略解决;二是切分粒度难统一,表格、代码块被切断导致答案错误,通过按语义结构(标题、段落、表格)切片并保留上下文标题解决;三是纯向量检索对产品型号等专有名词召回不准,通过加入 BM25 关键词召回并做混合排序解决;四是回答偶发幻觉,通过 Prompt 约束 + 引用强制校验(回答中的引用必须存在于检索结果)双重机制解决。