尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

从零到一:部署基于 FastAPI + ChromaDB + DeepSeek 的 RAG 知识库问答小程序

从零到一:部署基于 FastAPI + ChromaDB + DeepSeek 的 RAG 知识库问答小程序
📅 发布时间:2026/6/24 10:02:12

前言

前段时间接到一个需求:为公司开发一款微信小程序,用户输入设备故障现象,系统能够自动匹配知识库并给出对应的原因分析和解决办法。简单说,就是做一个 AI 智能问答助手。

经过一个多月的开发,项目终于成功部署上线了。这篇文章记录了从本地开发到阿里云部署的完整过程,希望能给有类似需求的朋友一些参考。

技术选型

模块技术选型理由
后端框架FastAPI异步高性能,自动生成 API 文档
向量数据库ChromaDB轻量级,本地部署,无需额外服务
Embedding阿里 DashScope中文效果好,API 稳定
LLMDeepSeek API性价比高,推理能力强
部署阿里云轻量应用服务器 + Nginx + HTTPS简单稳定,适合中小项目
前端微信小程序原生公司内部使用,无需跨平台

项目背景

公司产品种类较多,包括臭氧传感器、旁路配件、控制器等,每个产品都有大量的技术手册和故障处理经验。以往销售和售后遇到技术问题时,需要翻阅大量文档或咨询经验丰富的同事,效率低且容易遗漏。

我们的目标是:开发一个智能问答工具,用户输入故障现象,系统自动从知识库中检索相关信息,并给出结构化的答案(原因 + 解决办法)。

一、后端开发

1.1 核心架构

用户提问 → 问题向量化(DashScope) → 混合检索(关键词 + 向量) → 相关性过滤 → LLM生成答案(DeepSeek) → 返回结果

1.2 混合检索设计

纯向量检索在匹配精准关键词时效果不理想,比如用户问“灯不亮”时,向量检索可能匹配到一些语义相近但内容不相关的文档。所以我们采用了混合检索的策略:

  • 关键词检索:通过 jieba 分词 + 倒排索引,精确匹配文档中的关键词

  • 向量检索:通过 Embedding 模型,检索语义相似的文档

  • 合并排序:两种结果按相似度统一排序,取 Top-K 返回

# 混合检索核心逻辑 def hybrid_search(question, knowledge, keyword_index, vector_search_func, top_k=3): # 1. 关键词检索 keyword_results = keyword_search(question, knowledge, keyword_index, top_k) # 2. 向量检索 vector_results = vector_search_func(question, top_k) # 3. 合并去重,按相似度排序 all_results = keyword_results + vector_results all_results.sort(key=lambda x: -x['similarity']) return all_results[:top_k]

1.3 知识库准备

将产品技术手册中的关键信息提取为结构化的 JSON 格式,每条记录包含id、title、content三个字段:

{ "id": "001", "title": "产品名称", "content": "DULCOTEST臭氧传感器,型号:OZR 1-mA-2ppm。是一种覆盖隔膜的电流型双电极传感器,可用于测定水中臭氧的浓度。" }

最终我们整理了 409 条知识条目,涵盖了臭氧传感器、旁路配件、控制器等产品的技术参数、安装说明和故障诊断。

二、部署到阿里云

2.1 服务器配置

在阿里云买一台轻量应用服务器(2核2G,Ubuntu 22.04,约 79 元/年),性价比极高。

2.2 环境安装

登录服务器后安装基础环境:

# 更新系统 sudo apt update && sudo apt upgrade -y # 安装 Python 和 pip sudo apt install python3-pip python3-venv git -y # 安装系统依赖(ChromaDB 需要) sudo apt install build-essential cmake g++ -y

2.3 上传代码并安装依赖

# 在本地电脑上传代码 scp -r ./message root@你的服务器IP:/home/admin/ # 在服务器上安装 Python 依赖 cd /home/admin/message pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

2.4 配置 Nginx 反向代理 + HTTPS

微信小程序要求 API 接口必须使用 HTTPS,所以需要给域名配置 SSL 证书。

Nginx 配置文件:

server { listen 443 ssl; server_name api.your-domain.com; ssl_certificate /etc/nginx/ssl/your-cert.pem; ssl_certificate_key /etc/nginx/ssl/your-cert.key; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } server { listen 80; server_name api.your-domain.com; return 301 https://$server_name$request_uri; }

2.5 后台运行服务

使用nohup让服务在后台持续运行:

cd /home/admin/message nohup python3 main.py > /dev/null 2>&1 &

2.6 小程序配置

在微信公众平台配置服务器域名:

配置项值
request 合法域名https://api.your-domain.com

三、部署过程中的坑

3.1 虚拟主机不支持 Python

一开始我以为公司已有的虚拟主机(支持 PHP/HTML)能跑 Python 服务,结果发现完全不行。虚拟主机只能运行 PHP 和静态页面,不支持 Python 后端。解决方案是单独购买轻量应用服务器。

3.2 防火墙端口未开放

服务器默认只开放了 22 端口,8000 端口默认是关闭的。需要在阿里云控制台 → 轻量应用服务器 → 防火墙中手动添加 8000 端口规则。

3.3 SSL 证书申请

一开始选了 OV 证书(几千块一年),后来发现可以申请免费 DV 证书(有效期 90 天,到期自动提醒续期)。在阿里云数字证书管理服务中搜“个人测试证书”即可。

3.4 .env 文件配置

.env文件中的ALLOWED_ORIGINS要设置为小程序的实际域名,而不是*,否则跨域请求会有问题。

3.5 服务后台运行权限

用nohup启动服务时遇到了Permission denied问题,原因是logs目录权限不够。使用sudo chown -R admin:admin logs/解决。

四、效果展示

小程序端用户输入“数值不稳定”,系统自动返回:

【可能原因及解决办法】 1. 膜冒内电解液有气泡 → 重新添加电解液 2. 膜上有气泡 → 临时增加流量,敲击流通池排气泡 3. 压力波动 → 减少压力变化 4. 缺少电隔离 → 模拟传感器需要进行电隔离 5. 参比电极耗尽或被污染 → 返厂重新镀层 6. 膜冒胶圈老化 → 更换胶圈

用户输入“灯不亮”,系统返回:

【可能原因及解决办法】 1. 供电错误 → 提供正确电源 2. 传感器故障 → 返厂检测维修

五、项目总结

5.1 技术栈总结

层级技术
后端框架FastAPI
向量数据库ChromaDB
Embedding阿里 DashScope
LLMDeepSeek API
部署环境Ubuntu 22.04 + Nginx
前端微信小程序原生

5.2 成本总结

项目费用
阿里云轻量服务器 2核2G79 元/年
SSL 证书免费
DeepSeek API约 0.0001 元/次
DashScope API约 0.00001 元/次
知识库文件免费整理

六、未来优化方向

  1. 知识库自动更新:建立机制定期同步最新的产品手册和故障案例

  2. 用户反馈闭环:收集用户对答案的评价,持续优化检索效果

  3. 多轮对话能力:支持追问和澄清,提升用户体验

  4. 监控告警:接入日志分析工具,及时发现服务异常

相关新闻

  • ROFL-Player:免费英雄联盟回放播放器完整使用指南
  • 3个理由告诉你为什么HTML转Figma工具正在改变设计工作流
  • 终极音乐格式转换工具:5分钟解锁所有加密音频文件

最新新闻

  • 基于Vulhub的Struts2漏洞一键复现与深度分析实战指南
  • oak项目一览:多方式获取仓库,评审与文件合并情况及各分支合并详情
  • AI时代程序员何去何从
  • 雷电模拟器Appium自动化测试权限拒绝问题解决方案
  • Rails CVE-2020-8163漏洞深度剖析:从缓存键反序列化到远程代码执行
  • Linux 驱动研究 —— SPI (5)

日新闻

  • 终极指南:如何用shadPS4在电脑上免费畅玩PS4游戏
  • 打造个性化Instagram Clone:主题定制与用户体验优化技巧
  • 未来展望:RoseTTAFold-All-Atom的发展路线图与社区支持资源汇总

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号