AI 企业知识库
基于 RAG 架构的全栈知识管理平台。上传 PDF/Markdown 文档后,AI 自动分块、向量化存入 Chroma,用户可用自然语言提问,LLM 基于检索到的文档片段生成准确回答并标注来源。
为什么做这个项目
市面上好用的知识库产品(Notion AI、阿里云百炼)都要付费,而且是 SaaS 托管,数据不受自己控制。想做一个可私有部署、数据完全在自己手里的版本。同时也用它学习 RAG 全链路:文档解析 → 文本分块 → 向量嵌入 → 语义检索 → LLM 生成。
技术实现
后端用 FastAPI + SQLAlchemy + PostgreSQL 管理用户和文档元数据,Chroma 作为向量数据库独立容器部署。上传文件后后端自动解析 PDF(用 pypdf)或 Markdown,经过 LangChain 的 RecursiveCharacterTextSplitter 分块(1000 字符 + 200 重叠),用 sentence-transformers(all-MiniLM-L6-v2)做本地向量嵌入,存入 Chroma。问答时先做语义检索取 Top-3 相关片段,注入 prompt 后调用 LLM 生成回答。前端用 Next.js 16 + shadcn/ui,设计语言参照 Notion 风格。auth 用 JWT + bcrypt。
核心功能
- ●用户注册/登录(JWT 认证)
- ●创建/删除多个知识库
- ●上传 PDF 和 Markdown(实时展示处理状态)
- ●文本自动分块 + 本地向量嵌入
- ●RAG 语义检索 + LLM 问答(含来源引用)
- ●对话历史记录(每个知识库独立)
- ●Notion 风格 UI,支持深色模式
踩过的坑 & 收获
Docker 踩了不少坑——第一次配置 docker-compose 时 PostgreSQL 和 Chroma 的健康检查没做好,后端启动时数据库还没就绪直接报 connection refused。后来给 PostgreSQL 加了 healthcheck,用 restart: unless-stopped 让容器挂了自动拉起来。另外 sentence-transformers 第一次运行会下载模型(约 120MB),忘了提前下载导致首次启动要等很久。
技术栈
FastAPI + SQLAlchemy + PostgreSQL 16 + Chroma 0.5 + LangChain + sentence-transformers + pypdf + Docker Compose + JWT + Next.js 16 + shadcn/ui + DeepSeek API