WeKnora 本地化部署:30 分钟在离线服务器上跑通 RAG 知识库问答
2026/9/11 17:52:34 网站建设 项目流程

WeKnora 本地化部署:30 分钟在离线服务器上跑通 RAG 知识库问答

【免费下载链接】WeKnoraOpen-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.项目地址: https://gitcode.com/GitHub_Trending/we/WeKnora

内网服务器上搭文档问答系统,最常见的卡壳不是代码,而是模型调用全部失败:.env 填完,容器起来了,一问答就报"连不上 Ollama"。WeKnora 是一个开源 LLM 知识平台,把 PDF、Word 变成可检索的 RAG 知识库,配一个能自主推理的问答 Agent。这篇带你把 WeKnora 本地化部署完整跑通,拔网线也照跑。

先做个决定

动手前花 30 秒回答三件事:

  1. 文档能不能出机器?涉密文档走第三方 API 过不了合规——不能出,才需要私有化部署;
  2. 要不要多人共享空间?标准版带多空间协作,只给一个人用的话,先去看单应用、零依赖、无需注册的 Lite 版本,见 docs/LITE.md;
  3. 机器够不够吃?8 核 CPU + 32GB 内存起步,7B 模型推理时内存是主要瓶颈。

三条都不命中的话,停在这最省事——继续往下,说明你就是那台必须自己扛推理的服务器。

上图是标准版的完整容器化组成:文档解析、混合检索、向量存储、本地模型服务各占一栏,你要跑的就是中间那几组容器。

动手前清点物料

条件要求说明
软件Docker ≥ 20.10 + Compose v2 + GitOllama 不用提前装,启动脚本会自动处理
硬件8 核 CPU + 32GB 内存跑 7B 对话模型建议留 16GB 以上空闲
磁盘预留 200GB镜像、模型权重、解析产物都往盘上写
网络首次拉镜像和拉模型必须联网无其他要求

⚠️ 无网机器的正确做法:找一台联网机器拉好全部镜像和模型,docker save/ 模型导出打包拷过去再导入;不要在目标机上现拉。

把代码和配置模板拉下来

git clone https://gitcode.com/GitHub_Trending/we/WeKnora cd WeKnora cp .env.example .env

整个部署只有一个配置入口,就是.env:数据库密码、存储类型、Ollama 地址都在这一个文件里,模板每项都带注释。先跑一次./scripts/start_all.sh -c做环境自检,它能替你检查 Docker、Compose、磁盘和内存,缺什么一目了然,见 scripts/start_all.sh。

做对了的标志ls .env能看到新文件,自检命令打印"环境检查完成"。

改 .env 里的三处必改项

打开.env,其余保持默认,只盯这三处:

  • STORAGE_TYPE保持默认local,文件直接落容器挂载的本地目录,不引入对象存储;
  • OLLAMA_BASE_URL单机部署写默认值http://host.docker.internal:11434即可——容器内用localhost指向的是容器自己,必须用host.docker.internal才能找到宿主机上的 Ollama;
  • DB_PASSWORDREDIS_PASSWORDSYSTEM_AES_KEY换成自己生成的值,模板里的示例值别沿用。

想调解析和检索行为时,直接改config/config.yaml,见 config/config.yaml;它会挂进 app 容器,改完重启容器生效,不用重建镜像。

做对了的标志:三个密钥不再是示例值,.env能保存无告警。

给 Ollama 备好两个模型

RAG 问答要两个模型:一个嵌入模型把文档变成向量,一个对话模型负责推理。

ollama pull bge-m3 ollama pull qwen2.5:7b

第一个是嵌入模型,第二个是对话模型,换成你已有的模型名也行。

ollama list

做对了的标志:列表里能看到这两个模型。

⚠️ 离线机器:这两步在联网机器上做,模型导出后拷到目标机导入;模型没就位 app 只告警不崩,但问答功能暂时用不了。

一条命令把服务拉起来

./scripts/start_all.sh --no-pull

脚本会先确认 Ollama 在跑、检查.env是否齐全,再用 Compose 拉起前端、app、postgres、docreader、redis 这批容器。--no-pull表示跳过联网拉镜像、直接用本地已有的——离线部署的关键开关;第一次在有网机器上装就去掉这个参数。

🚀做对了的标志:终端打印"前端界面: http://localhost"和"API接口: http://localhost:8080",然后开始滚动容器日志。

一条链路验到底

从浏览器入口到带引用的回答,5 项全过才算跑通:

#检查项怎么做通过标准
1容器状态docker compose ps全部 Up,重点看 WeKnora-app、WeKnora-postgres、WeKnora-docreader
2后端健康curl -f http://localhost:8080/health返回 200
3Web 界面浏览器打开http://localhost出现注册页,注册并登录第一个账号
4文档入库新建知识库,上传一份 PDF解析状态变为完成
5问答带引用问一句"这份文档主要讲什么"回答下方带引用出处

翻车自救手册

现象根因处理
app 反复重启,日志刷 Ollama 连不上容器里localhost指向的是容器自己,不是宿主机宿主机执行curl http://localhost:11434/api/tags确认 Ollama 活着,再把.envOLLAMA_BASE_URL改回host.docker.internal
文档上传直接被拒超过MAX_FILE_SIZE_MB默认上限 50MB.env调大该值并重启 app 与 frontend
上传成功但解析失败格式不受支持或解析服务异常docker compose logs docreader,报错会指明具体格式
问答响应慢无 GPU 时推理全压在 CPU 上换更小的对话模型,或把BATCH_EMBED_SIZE调小省内存

更多故障排查见 docs/QA.md。

到这里,文档解析、向量检索、模型推理全落在本机,数据不出机器。下一步做两件具体的事:给数据卷挂独立磁盘并配定期备份;把OLLAMA_BASE_URL指到内网显存最大的那台机器,分担推理压力。

【免费下载链接】WeKnoraOpen-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.项目地址: https://gitcode.com/GitHub_Trending/we/WeKnora

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询