WeKnora 离线部署实战:内网 6 步跑通文档问答

📅 发布时间:2026/9/6 20:19:40
WeKnora 离线部署实战:内网 6 步跑通文档问答 WeKnora 离线部署实战内网 6 步跑通文档问答【免费下载链接】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你的内网服务器接不上外网但团队需要把 PDF、Word 传上去直接提问找答案。WeKnora 是一个开源知识库问答平台文档解析、向量检索、模型推理全部能落在本地。下面 6 步走一遍部署照着敲命令跑完就能在内网里正常用。部署前环境自检硬件、软件、网络三项清单检查项建议规格验证命令CPU / 内存8 核 / 32GB本地推理 7B 模型nproc free -h磁盘100GB 可用镜像 模型df -h .Docker引擎 compose v2 插件docker compose version端口占用80、8080、11434 空闲ss -tlnp \| grep -E :(80\|8080\|11434)\b离线镜像weknora 镜像已在本地docker images \| grep weknora端口那条命令没有任何输出行说明三个端口都是空闲的可以继续。WeKnora 架构速览数据是怎么流动的一句话数据只在一个方向上走。你在浏览器传文档前端容器把请求代理给 app 服务app 调 docreaderPython 写的文档解析微服务抽出文本并切块再调宿主机上的 Ollama本地大模型运行时负责嵌入和对话向量化元数据和向量一起存进 Postgres用的是 ParadeDB 镜像内置向量索引扩展不用再单挂一套向量库。提问时反查相关片段喂给 LLM生成带出处的回答——全程不出内网。分步部署从拉代码到容器拉起第 1 步拿到代码生成配置文件。git clone https://gitcode.com/GitHub_Trending/we/WeKnora cd WeKnora cp .env.example .env预期目录下出现 .env 文件第 2 步核对 .env 里的关键变量。模板默认值对内网友好跑一条 grep 确认三项即可grep -E ^(STORAGE_TYPE|RETRIEVE_DRIVER|OLLAMA_BASE_URL|DB_PASSWORD) .env预期STORAGE_TYPElocal、RETRIEVE_DRIVERpostgres、OLLAMA_BASE_URLhttp://host.docker.internal:11434⚠️ 启动前把DB_PASSWORD、REDIS_PASSWORD改成自己的值并用openssl rand -hex 16生成 32 字节的SYSTEM_AES_KEY填上否则模型密钥等加密字段日后无法恢复变量说明见 .env.example 模板注释。第 3 步宿主机装 Ollama 并拉模型。Ollama 不进容器是宿主进程app 容器通过host.docker.internal访问它curl -fsSL https://ollama.com/install.sh | sh ollama pull bge-m3 # 嵌入模型 ollama pull qwen2.5:7b # 对话模型预期ollama list 输出里能看到这两个模型完全离线的机器就在能上网的机器上执行上面命令再把~/.ollama/models目录整体拷贝过去覆盖。第 4 步拉起服务集群。 项目自带启动脚本--no-pull表示只用本地镜像、不访问镜像仓库正是离线环境要的./scripts/start_all.sh --no-pull预期结尾打印「前端界面: http://localhost:80」和「API接口: http://localhost:8080」脚本先确保 Ollama 在跑再用 docker compose 拉起 app、frontend、docreader、postgres、redis启动脚本 还支持-c参数做环境诊断。第 5 步健康检查。docker compose ps curl -s http://localhost:8080/health预期ps 表格里各容器均为 Uphealth 返回正常第 6 步注册账号配置模型。打开 http://localhost 注册初始化向导里把 LLM 选 qwen2.5:7b、嵌入模型选 bge-m3保存后模型即接入。 内存紧张可把对话模型换成更小的如 3B 级拉模型和向导选择都改名字即可其他步骤不变。跑通验证5 项功能检查 1 条性能抽检新建知识库成功列表里能看到上传一份 PDF/Word处理状态最终变为已完成提问能拿到回答且回答带来源引用进入分块编辑页能看到切好的文本片段docker compose restart重启后上面的数据都还在性能抽检用 health 端点探后端响应底数time curl -s -o /dev/null http://localhost:8080/health预期wall 时间在 0.1 秒内若真实问答超过 5 秒往下看调优部分调优与运维检索速度、解析并发和备份高频调优项现象调整变量方向入库向量化慢、内存冲高BATCH_EMBED_SIZE调小批量文档解析慢DOCREADER_GRPC_MAX_WORKERS按核数取 1~4并发入库吞吐不够WEKNORA_ASYNQ_CORE_CONCURRENCY8 → 16单文件上传上限MAX_FILE_SIZE_MB默认 50MB改动需重启全链路备份脚本怎么挂 cron备份两份数据库和文件存储local 模式挂在 app 容器的 /data/files#!/usr/bin/env bash mkdir -p /backup docker compose exec -T postgres pg_dump -U postgres WeKnora /backup/weknora_$(date %F).sql docker compose exec -T app tar czf - -C /data/files . /backup/files_$(date %F).tar.gz说明crontab -e 追加「0 2 * * * /path/to/backup.sh」即可每天凌晨备份排障两条思路界面提示连不上模型先在宿主机curl http://localhost:11434/api/tags通的话再查 .env 里OLLAMA_BASE_URL是否还是host.docker.internal容器内的 localhost 不等于宿主机。文档卡在「处理中」看docker compose logs docreader重点核对文件大小是否超过MAX_FILE_SIZE_MB或 gRPC 消息超限报错。延伸方向用--profile qdrant或--profile milvus加独立向量库NEO4J_ENABLEtrue--profile neo4j开启知识图谱接入内置 MCP Server让外部 Agent 调你的知识库【免费下载链接】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),仅供参考