ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

WeKnora 离线部署:Docker + Ollama 跑通文档问答全链路

WeKnora 离线部署:Docker + Ollama 跑通文档问答全链路 WeKnora 离线部署Docker Ollama 跑通文档问答全链路【免费下载链接】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/WeKnoraWeKnora 把 PDF、Word 等原始文档变成可检索的 RAG 知识库检索增强生成先查文档片段再让大模型作答配一个能自主推理的问答 Agent。本文带你在一台无外网的机器上完成 WeKnora 离线部署从克隆代码到拿到带引用出处的回答。这类场景才值得动手机器连不上外网。单位内网、机房服务器调不通云端模型 API离线部署后文档解析、向量检索、模型推理全在本机完成拔网线照样跑。如果只是个人尝鲜、不需要多空间协作看 docs/LITE.md 介绍的单应用 Lite 版本部署更轻。数据不能出机器。金融、政务、医疗文档动辄涉密丢给第三方 API 过不了合规私有化部署后文件只落在自己的磁盘上。如果只是测试云端方案效果直接用官方 SaaS 或自带 API Key 部署更省事。想在单机上吃透整套 RAG 链路。不为生产只为学习检索链路或给小团队做试点单机 Docker 就够不需要 Kubernetes 那套重型编排。动手前的硬条件一张短清单全部满足再开工软件Docker≥ 20.10 Docker Composev2 Git。为什么整套服务用 Compose 编排Ollama 由启动脚本托管缺一个都拉不起来。硬件8 核 CPU 32GB 内存起步。为什么模型推理主要吃内存跑 7B 对话模型建议留 16GB 以上可用。磁盘预留 200GB。为什么镜像、模型、文档解析产物都会往盘上写解析大扫描件时空间消耗比想象的大。⚠️网络窗口首次拉镜像、拉模型必须联网。真正的无网环境正确姿势是一台联网机器下载好所有东西再拷到目标机而不是在目标机上现拉。把服务拉起来的完整操作拿到代码并初始化配置git clone https://gitcode.com/GitHub_Trending/we/WeKnora cd WeKnora cp .env.example .env整个部署只有一个配置入口数据库密码、存储类型、Ollama 地址全在.env模板里每项都带注释照着填就行。改对三个关键变量打开.env重点确认这几处其余保持默认STORAGE_TYPE保持local文件直接存容器挂载的本地目录不引入对象存储OLLAMA_BASE_URL默认http://host.docker.internal:11434让容器找到宿主机的 OllamaDB_PASSWORD、REDIS_PASSWORD、SYSTEM_AES_KEY换成自己生成的值内网部署也别沿用模板示例值。另外 config/config.yaml 会被直接挂载进 app 容器想微调解析和检索行为时改它就行不用重建镜像。一条命令拉起全部容器./scripts/start_all.sh --no-pull这个脚本把三件事串起来确认 Ollama 在跑、检查.env是否齐全、再用 Compose 拉起前端、app、postgres、docreader、redis 这批容器。--no-pull表示不联网拉镜像、直接用本地已有的这正是 WeKnora 离线环境部署的关键开关第一次在有网机器上部署的话去掉这个参数。动手前可以先跑./scripts/start_all.sh -c做一次环境自检。 脚本末尾打印出前端界面: http://localhost和API接口: http://localhost:8080说明集群起来了。灌入本地模型对话和嵌入各需要一个ollama pull bge-m3 # 嵌入模型 ollama pull qwen2.5:7b # 对话模型换成你已有的模型名无网机器上这两步要在联网机器执行、导出模型文件后拷过来再导入。这是 Ollama 模型导入最容易踩的地方ollama pull只负责联网下载离线环境只能走导出—拷贝—导入。模型没就位时 app 只会告警、不会崩但问答功能暂时用不了。跑没跑通5 秒验证执行docker compose ps所有容器状态为 Up重点看 WeKnora-app、WeKnora-postgres、WeKnora-docreader。执行curl -f http://localhost:8080/health返回 200后端健康检查通过。浏览器打开 http://localhost 并注册登录第一个账号默认开放注册能进首页说明前端与 API 已连通。新建知识库、上传一份 PDF等解析状态变成完成docreader 解析、分块、向量化这条链路通了。在问答页问一句这份文档主要讲什么拿到带引用出处的回答整条 RAG 链路全通。高频踩坑两句话解决app 容器反复重启日志全是 Ollama 连不上先在宿主机curl http://localhost:11434/api/tags确认 Ollama 活着 → 再核对.env的OLLAMA_BASE_URL容器内要写host.docker.internal不能写localhost。上传文档直接被拒默认单文件上限 50MBMAX_FILE_SIZE_MB超限直接拒 → 文件没超就看docker compose logs docreader解析器会报具体是哪种格式不支持。问答太慢无 GPU 时推理全压在 CPU 上 → 换一个更小的对话模型或把.env里的BATCH_EMBED_SIZE调小换内存通常比换硬件见效快。性能瓶颈优先动这三个参数对话模型规格、BATCH_EMBED_SIZE嵌入批次大小、知识库 top_k 召回数量——都集中在.env和 config/config.yaml 里。到这里你已经……在一台不碰外网的机器上跑起了完整的 WeKnora 本地化部署文档解析、向量检索、模型推理全在本地完成数据不出机器。继续深入可以从这几份仓库内材料入手部署脚本scripts/start_all.sh启动、停止、环境检查都在这里配置模板.env.example 与 config/config.yaml常见问题与运维docs/QA.md、分块与解析细节docs/CHUNKING.md下一步值得做的事给数据卷挂独立磁盘并定期备份再把 Ollama 指向内网里显存最大的那台机器做模型负载分担。【免费下载链接】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),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进