从零搭建企业级AI知识库问答系统(附源码+收藏)
本文介绍了如何基于FastAPI、LlamaIndex和DeepSeek快速搭建一个轻量级的RAG智能问答系统用于解决企业内部文档检索问题。文章详细阐述了技术架构、核心功能如流式对话、对话持久化、多会话管理、RAG检索增强等并提供了启动方式和代码实现思路。该项目开源适合对AI和编程感兴趣的小白或程序员学习和实践。基于 FastAPI LlamaIndex DeepSeek半小时搞定 RAG 智能问答一、为什么要做这个项目最近公司内部有大量产品文档、操作手册散落在各个角落新员工入职要翻半天资料老员工遇到冷门问题也得四处问人。于是我们决定做一个 AI 知识库问答系统——把文档丢进去直接用自然语言提问让 AI 自动检索并给出答案。市面上有不少现成的方案但要么贵、要么定制性差、要么数据要上云。作为技术团队我们选择自己动手基于开源组件搭建了一套轻量级的 RAG检索增强生成 问答系统。从模型加载到前端界面前后花了不到半天时间。项目已开源文末有源码地址。二、效果展示先看看成品长什么样AI咨询专家界面界面设计参考了 ChatGPT 的布局左侧对话列表 右侧聊天区。支持多会话管理、流式输出、对话持久化。配色用了 Indigo 紫色系整体风格比较现代。三、技术架构整个系统的架构非常简洁用户浏览器 │ ▼ FastAPI 服务 (server.py) ├── Jinja2 模板渲染 → chat.html ├── SQLite ← 对话/消息持久化 ├── LlamaIndex ← 文档索引 检索 ├── DeepSeek ← 大语言模型 (生成回答) └── HuggingFace ← 嵌入模型 (向量化)核心技术栈组件技术选型说明Web 框架FastAPI异步高性能原生支持流式响应RAG 引擎LlamaIndex文档加载、索引构建、检索增强大模型DeepSeek-Reasoner性价比极高的推理模型嵌入模型BGE-Small-ZH中文语义向量化CPU 可运行数据存储SQLite对话记录持久化零配置前端Jinja2 Vanilla JS无框架依赖极简部署四、核心功能1. 流式对话这是最影响用户体验的功能。用户提问后AI 的回复会像打字一样逐字输出而不是等半天突然蹦出一大段。实现上用了 FastAPI 的StreamingResponse配合前端的ReadableStream读取async def generate_response(): for token in response.response_gen: yield token await asyncio.sleep(0.01) return StreamingResponse(generate_response(), media_typetext/plain)前端用response.body.getReader()读取字节流每收到一个 chunk 就更新页面。同时加了一个闪烁光标的 CSS 动画模拟真人打字的视觉效果。2. 对话持久化之前的版本对话只存在浏览器内存里刷新就没了。这次我们用 SQLite 做了完整的持久化conversations表存储对话 ID、标题、创建/更新时间messages表存储每条消息的角色user/assistant、内容、时间戳提供了完整的 REST API创建对话、获取列表、重命名、删除、加载历史消息。流式查询完成后自动将用户消息和 AI 回复存入数据库。3. 多会话管理侧边栏支持创建多个对话每个对话独立存储消息历史。你可以把不同话题分开比如产品功能咨询和技术架构问题各开一个对话方便回溯。支持的交互操作搜索过滤按标题关键词筛选快捷键CtrlK快速聚焦搜索框对话多了也不怕找不到重命名双击标题直接编辑或者点编辑按钮修改回车保存、Esc 取消删除弹出确认框提示不可撤销防止手滑自动标题新对话的第一条消息前 20 字自动设为标题比 “新对话 1、2、3” 直观得多时间戳每个对话显示最后更新时间最近聊的排在最上面4. RAG 检索增强这是整个系统的核心。知识库文档放在data_dir/目录下启动时 LlamaIndex 会自动加载所有文档用 HuggingFace 的 BGE 嵌入模型将文本转成向量构建索引。用户提问时的流程是这样的向量化把用户问题用同一个嵌入模型转成向量相似度检索在向量索引中找出最相关的文档片段Prompt 拼接把检索到的片段作为上下文拼上用户问题组成完整的 Prompt大模型生成将 Prompt 发给 DeepSeek生成最终答案这样一来大模型就能基于私有知识作答而不是凭空编造。即使文档里没有相关内容模型也会明确告诉你根据现有资料无法回答不会胡说八道。支持点击按钮更新索引随时补充新文档到data_dir/目录即可不用重启服务。5. 配置分离所有敏感信息API Key、密钥等从代码中抽离到config.yaml配置文件llm: provider: deepseek model: deepseek-reasoner api_key: your-api-key-here embedding: model: BAAI/bge-small-zh-v1.5 device: cpu同时支持环境变量覆盖方便生产环境部署export APP_LLM__API_KEYsk-xxxxxxxxconfig.yaml已加入.gitignore不用担心密钥泄露到 Git 仓库。五、启动方式两步搞定# 1. 安装依赖 uv sync # 2. 启动服务 python server.py浏览器访问http://localhost:8001/chat即可使用。整个服务打包在一个 400 行的server.py里部署极其简单。六、写代码过程中的几个决策为什么不用 LangChainLangChain 功能很全但也很重抽象层次太多调试困难。LlamaIndex 在文档索引和 RAG 这块做得更专注API 更直观几行代码就能跑起来。为什么用 SQLite 而不是 PostgreSQL这个场景的并发量和数据量都不大SQLite 足够了。零配置、零维护数据文件就是一个.db文件备份就是复制文件。Python 标准库自带sqlite3不用装额外依赖。为什么前端不用 React/Vue项目定位是轻量级内部工具没有复杂的前端交互。Jinja2 模板 原生 JavaScript 完全够用首屏加载几乎没有任何延迟。前端总共一个 HTML 文件不到 1600 行代码包含了完整的 CSS 样式系统和 JS 交互逻辑。而且单文件意味着部署极其简单——一个python server.py就全跑起来了不需要npm install、不需要webpack、不需要构建步骤。UI 设计的一些细节这次我们花了不少心思在 UI 上追求一种看起来不像内部工具的质感色彩体系主色调用了 Indigo 紫色#6366F1侧边栏用深靛蓝#1E1B4B主体区用浅灰#F8FAFC整体干净利落不会太沉闷也不会太花哨头像设计用户头像用蓝紫渐变、AI 头像用橙红渐变一眼就能区分对话角色比传统的 emoji 精致得多消息气泡圆角 18px用户气泡带淡紫边框AI 气泡用浅灰底色层次感很好字体选了 Inter 字体无衬线、字形清晰阅读长文本也不累动画消息滑入动画、流式输出闪烁光标、按钮悬停微动效、Toast 飘入提示交互反馈及时但不喧宾夺主空状态引导没有对话时显示欢迎页附带 3 个建议问题点击即可直接提问加载骨架屏切换对话时显示骨架屏占位比转圈圈优雅移动端适配768px 以下侧边栏折叠为汉堡菜单触摸友好这些细节单独看都不起眼但组合起来就形成了很好的整体体验。七、可以扩展的方向这个项目是一个很扎实的起点后续有很多可以玩的方向多知识库管理不同部门/项目使用独立的文档目录前端切换知识库用户认证简单的 JWT 登录系统区分不同用户的历史记录和权限Docker 一键部署打包成镜像docker compose up就启动方便分发更多文档格式目前支持纯文本可以扩展 PDF、Word、Markdown、网页抓取对话导出将对话记录导出为 Markdown 或 PDF方便归档和分享模型热切换支持在配置中切换不同的 LLM如通义千问、GPT-4 等无需改代码引用来源回复中标注参考了哪些文档片段增强可信度如果有任何想法或建议欢迎在 GitHub 上提 Issue 一起讨论。八、源码地址项目已开源在 GitHub https://github.com/yaunsine/ai-rag-chat如何学习大模型 AI 由于新岗位的生产效率要优于被取代岗位的生产效率所以实际上整个社会的生产效率是提升的。但是具体到个人只能说是“最先掌握AI的人将会比较晚掌握AI的人有竞争优势”。这句话放在计算机、互联网、移动互联网的开局时期都是一样的道理。我在一线科技企业深耕十二载见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事早已在效率与薪资上形成代际优势我意识到有很多经验和知识值得分享给大家也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。我们整理出这套AI 大模型突围资料包✅ 从零到一的 AI 学习路径图✅ 大模型调优实战手册附医疗/金融等大厂真实案例✅ 百度/阿里专家闭门录播课✅ 大模型当下最新行业报告✅ 真实大厂面试真题✅ 2026 最新岗位需求图谱所有资料 ⚡️ 朋友们如果有需要《AI大模型入门进阶学习资源包》下方扫码获取~① 全套AI大模型应用开发视频教程包含提示工程、RAG、LangChain、Agent、模型微调与部署、DeepSeek等技术点② 大模型系统化学习路线作为学习AI大模型技术的新手方向至关重要。 正确的学习路线可以为你节省时间少走弯路方向不对努力白费。这里我给大家准备了一份最科学最系统的学习成长路线图和学习规划带你从零基础入门到精通③ 大模型学习书籍文档学习AI大模型离不开书籍文档我精选了一系列大模型技术的书籍和学习文档电子版它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。④ AI大模型最新行业报告2025最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。⑤ 大模型项目实战配套源码学以致用在项目实战中检验和巩固你所学到的知识同时为你找工作就业和职业发展打下坚实的基础。⑥ 大模型大厂面试真题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我精心整理了一份大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。以上资料如何领取为什么大家都在学大模型最近科技巨头英特尔宣布裁员2万人传统岗位不断缩减但AI相关技术岗疯狂扩招有3-5年经验大厂薪资就能给到50K*20薪不出1年“有AI项目经验”将成为投递简历的门槛。风口之下与其像“温水煮青蛙”一样坐等被行业淘汰不如先人一步掌握AI大模型原理应用技术项目实操经验“顺风”翻盘这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。以上全套大模型资料如何领取

相关新闻

CentOS 7网络配置三步走:从网卡诊断到DNS解析的保姆级教程

CentOS 7网络配置三步走:从网卡诊断到DNS解析的保姆级教程

1. 从“无网”到“有网”:一个看似简单却常被忽视的起点如果你刚装好一个CentOS 7系统,兴冲冲地打开浏览器,却发现网页一片空白,或者连ping www.baidu.com都提示“未知的名称或服务”,那感觉就像新买的房子没通水电一样…

2026/8/5 2:54:19 阅读更多 →
学术稿AI味重怎么降AIGC疑似度?让论证读起来像人在思考才站得住。

学术稿AI味重怎么降AIGC疑似度?让论证读起来像人在思考才站得住。

学术稿AI味重怎么降AIGC疑似度?让论证读起来像人在思考才站得住。 你有没有被人这样评价过:写得挺全,但读不出你的判断。 这句话比说你写错了还难受。因为你确实读了文献,确实有自己的看法,只是稿子发出去以后&#xf…

2026/8/5 2:54:19 阅读更多 →
Cisco Packet Tracer实战:从零构建小型企业网络(VLAN、路由、NAT、DHCP全解析)

Cisco Packet Tracer实战:从零构建小型企业网络(VLAN、路由、NAT、DHCP全解析)

1. 项目概述:为什么从“部分”企业网入手?很多刚接触网络工程的朋友,一听到“企业网”三个字,脑海里可能立刻浮现出那种拥有核心机房、几十台交换机、复杂路由协议和防火墙策略的庞大系统,瞬间就感觉无从下手。这正是我…

2026/8/5 2:54:18 阅读更多 →

最新新闻

Kafka位移自动提交机制深度解析:从原理到避坑实践

Kafka位移自动提交机制深度解析:从原理到避坑实践

1. 项目概述:从一次线上事故说起那天凌晨,监控告警突然响了,提示我们的实时数据看板出现大面积数据丢失。排查了一圈,最后定位到问题出在消费Kafka消息的微服务上。日志显示,消费者组在不断重启,每次重启后…

2026/8/6 6:04:33 阅读更多 →
从OpenClaw到Hermes:AI智能体平台生产级迁移实战与部署指南

从OpenClaw到Hermes:AI智能体平台生产级迁移实战与部署指南

1. 项目概述:一次深思熟虑的AI智能体平台迁移最近,我把手头一个核心的AI智能体项目,从原先使用的OpenClaw平台,完整地迁移到了Hermes上。这个决定不是一时兴起,而是在经历了几个月的实际开发、部署和运维后&#xff0c…

2026/8/6 6:04:33 阅读更多 →
基于OpenClaw构建AI Agent流水线:5步自动化内容生产实战

基于OpenClaw构建AI Agent流水线:5步自动化内容生产实战

1. 项目缘起:当“做站”遇上“AI Agent 流水线”最近在折腾一个内容站点的初期搭建,核心需求很明确:快速、低成本地完成从市场关键词挖掘到高质量内容产出的闭环。传统流程里,这涉及到SEO分析、内容规划、文案撰写、排版发布等一系…

2026/8/6 6:04:33 阅读更多 →
腾讯AI Agent实战:WorkBuddy与QClaw部署应用全解析

腾讯AI Agent实战:WorkBuddy与QClaw部署应用全解析

1. 项目概述:当“小龙虾”遇上“工作伙伴”最近AI圈子里有个事儿挺热闹,腾讯那边放出了两个新玩意儿,一个叫WorkBuddy,一个叫QClaw。这俩名字听起来有点意思,尤其是QClaw,被大家戏称为“腾讯版小龙虾”。现…

2026/8/6 6:04:33 阅读更多 →
Linux 服务器 inode 占用 100% 导致无法写入文件怎么排查?

Linux 服务器 inode 占用 100% 导致无法写入文件怎么排查?

服务器突然报“No space left on device”,但用 df -h 看磁盘还有不少剩余,这种矛盾现象在 Linux 上通常是 inode 耗尽了。换句话说,磁盘块没用完,但文件系统用来记录文件元数据的索引节点已经满了。下面按我平时排查的顺序&#…

2026/8/6 6:04:33 阅读更多 →
D类功放原理深度解析:从PWM调制到高效音频功放设计

D类功放原理深度解析:从PWM调制到高效音频功放设计

1. 从“嗡嗡”声到“静默”革命:D类功放到底是什么?如果你拆开过一台老式的家庭影院功放或者一台高保真音响,大概率会看到里面塞满了巨大的散热片,甚至还有风扇。开机后,热量源源不断地散发出来,这就是传统…

2026/8/6 6:03:33 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →