在自己的虚拟机上搭一个知识库问答:部署记录
起因
原来用的在线平台要停止服务,整理了很久的资料不想跟着丢,于是决定自己搭一套。
用了什么
- 一台 PVE 上的虚拟机,Ubuntu Server 24.04,8 核、8G 内存。
- 开源的知识库软件 MaxKB,用 Docker 跑一个容器。
- 大模型用云端接口,按量付费,本地不跑模型。
- 前面加一个自己写的小网页程序,只用 Python 标准库。
资料怎么整理
资料按主题分成一百多篇文档,每篇只讲一件事。另外把常被问到的问题整理成九百多组问答,每组配几种不同的问法。还有一张同义词表,把口头叫法对应到正式名称。检索用关键词加语义的混合方式。
踩过的坑
- 内存:虚拟机一开始只给了 3G 多,知识库软件空着就要占 2G 多,后来调到 8G。
- 接口报错:模型接口偶尔返回"访问量过大",原始报错会直接显示给提问的人。所以在前面加了一层程序,报错时自动重试一次,再不行就给一句人能看懂的提示。
- 回答太长:一开始每个回答都是一两千字,没人看得完。后来在提示词里规定了结构和篇幅,中位数降到七八百字,答完的时间也短了一半。
- 代理:电脑上设了代理的环境变量,用命令行访问内网地址时请求会被送去代理。测试内网服务时要记得绕开代理。
前面那层小程序做什么
登记提问的人是谁、限制提问次数、保存提问记录、让回答边生成边显示,以及在回答发出去之前做一遍检查。知识库和模型都在后面,这层程序本身不存任何资料。