企业内网 30 分钟部署 WeKnora:把部门文档变成 RAG 问答知识库
2026/9/7 5:18:48 网站建设 项目流程

企业内网 30 分钟部署 WeKnora:把部门文档变成 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

这篇指南面向中小型企业内网:把散落在各部门的产品手册、制度文档、FAQ 变成一套可检索、可问答的 RAG(检索增强生成)知识库。用 Docker Compose 一条命令拉起 WeKnora,注册即用,支持多部门权限隔离与知识图谱。部署完成后,员工直接提问"退款流程是什么",系统从文档里召回对应章节,给出带出处的回答。

开始之前:一份自检清单 📋

硬件、软件、网络合并成一张清单,逐项打勾即可,不必逐节展开。

  • 硬件:4 核 CPU / 8GB 内存起步(docreader 内含 LibreOffice、Playwright,较吃内存);磁盘按知识库规模预留,要装下 Postgres 数据卷和/data/files文件卷。
  • 软件:Docker 20.10+、Docker Compose v2(v1 的docker-compose也兼容,启动脚本会自动探测)。
  • 网络:如需让全公司访问,向网管申请开放前端 80、后端 8080 两个端口入站;纯内网单机可跳过。
  • 模型:二选一——本机装 Ollama,或准备一个 OpenAI 兼容 API(DeepSeek、通义、智谱等)。

先跑一条命令确认环境就绪:

# 确认 Docker 与 Compose 已安装且版本可用 docker --version && docker compose version

动手实录:四步拉起企业内网 RAG 知识库

步骤一:拉取仓库并生成 .env

做什么:把代码拉到内网服务器,造出 compose 依赖的环境文件。

怎么做

# 克隆 WeKnora 仓库并进入目录 git clone https://gitcode.com/GitHub_Trending/we/WeKnora cd WeKnora
# 从模板生成 .env(app 服务的 env_file 依赖它,缺失会导致 compose 解析失败) cp .env.example .env

接着编辑.env,只改必填项。示例值如下,生产环境请换成强随机值:

# .env 必填项(占位值请替换为强随机值) DB_USER=weknora DB_PASSWORD=换成强密码 DB_NAME=weknora REDIS_PASSWORD=换成强密码 JWT_SECRET=用 openssl rand -hex 32 生成 SYSTEM_AES_KEY=用 openssl rand -hex 32 生成(必须 32 字节)

如何确认成功DB_USER/DB_PASSWORD/DB_NAME/REDIS_PASSWORD/JWT_SECRET/SYSTEM_AES_KEY六项都已填、无残留占位符。

步骤二:拉取镜像并启动服务

做什么:下载与版本匹配的镜像,后台拉起核心服务(frontend、app、docreader、postgres、redis)。

怎么做

# 拉取镜像再后台启动核心服务(只 up -d 会复用缓存旧镜像,务必先 pull) docker compose pull docker compose up -d

如何确认成功

# 查看容器状态,等待全部变为 healthy / running docker compose ps

再用curl http://localhost:8080/health确认后端返回就绪。

步骤三:注册账号、建库、传文档

做什么:建第一个知识库、选好模型、把真实文档传进去。

怎么做:浏览器打开http://<服务器IP>,首次访问落到登录页。注册是同一页上的一个页签(默认self_serve模式才会显示),注册后会自动得到一个属于你自己的工作空间,你在其中是 Owner。登录后新建一个知识库,在弹出的初始化向导里为这个库选模型(对话模型、向量模型、重排模型)。WeKnora 的模型是按知识库走的,没有全局一次性初始化。保存后上传部门文档。

如何确认成功:文档列表里上传的文档状态变为"已完成",说明已解析、切块并入库。

步骤四(可选):开启多部门权限与知识图谱

做什么:让各部门数据互相隔离,并为文档建立实体关系图谱。

怎么做

# 需要知识图谱时,追加 neo4j 服务(配合 .env 中 NEO4J_ENABLE=true) docker compose --profile neo4j up -d

部门权限走空间(Tenant)机制:默认允许普通用户自助创建空间,每个空间一套独立的知识库与成员。到「设置 → 成员」里把对应同事请进本部门空间即可。

如何确认成功docker compose ps里出现neo4j且为 running;成员页能看到各部门空间与角色。

场景调优:只改这 3 处配置 ⚙️

企业内网和公网部署的差别主要在存储、上传上限、注册策略,其余保持默认。

  • MAX_FILE_SIZE_MB:默认 50MB。企业里常有上百页的产品手册、培训课件,把这行改成MAX_FILE_SIZE_MB=200,改完重启appfrontend两个容器才生效。
  • STORAGE_TYPE=local+LOCAL_STORAGE_BASE_DIR:内网通常没有云对象存储,保持local,并把LOCAL_STORAGE_BASE_DIR指向一块共享挂载目录,文件就落在本地卷data-files上,不依赖外网。
  • WEKNORA_TENANT_SELF_SERVICE_CREATION_ENABLED=trueDISABLE_REGISTRATION:先保持自助建空间为true,让各部门自己开户;等人员到位、确认要锁入口时,把DISABLE_REGISTRATION设为true,只留邀请链接一条注册通路。

验收:用两个部门协作场景验证

场景一:跨成员文档问答。部门 A 管理员上传《产品操作手册.pdf》,部门 B 成员在对话里问"如何申请退款",系统应从手册里召回对应章节,给出带引用的回答。

场景二:权限隔离。新成员注册后自动获得个人空间,在检索框里搜本部门关键词,只应返回本空间的文档,看不到其他部门内容。

验证点期望结果检查方式
文档入库上传文档状态变"已完成"文档列表页
语义检索提问能召回相关章节并带出处对话页引用抽屉
空间隔离只返回本空间文档用两个不同账号分别搜索
健康检查后端/health正常curl http://<IP>:8080/health

踩坑日志:内网部署最常见的 5 个问题 ⚠️

  1. 现象docker compose up -d报解析错误。原因app服务用了env_file: .env,文件缺失时 compose 直接失败。解法:先执行cp .env.example .env再启动;start_all.sh会自动兜底,但手动跑 compose 时要自己建。

  2. 现象:容器反复unhealthy,或界面版本和刚下载的 release 对不上。原因:只跑up -d会复用本地缓存的旧镜像。解法docker compose pull拉新镜像后再docker compose up -d

  3. 现象:初始化向导里 Ollama 检测失败、首次问答无结果。原因:容器默认连http://host.docker.internal:11434,Linux 上需extra_hostshost-gateway生效。解法:确认映射生效,或改用远程 Ollama / OpenAI 兼容 API 地址。

  4. 现象:上传大文件返回 413 或被拒。原因:Nginx 上传上限由MAX_FILE_SIZE_MB控制。解法:调大该值,并重启appfrontend两个容器。

  5. 现象:升级或重建后,某些已保存的密钥显示为空、无法解密。原因SYSTEM_AES_KEY缺失或长度不足 32 字节,已加密字段不可恢复。解法:生产环境用openssl rand -hex 32生成并妥善保管,切勿用默认值上线。

收尾

WeKnora 让企业内网的文档从"存着"变成"答得上来",核心靠一条docker compose up -d和多部门空间隔离。细节参数见 安装文档、快速开始、配置说明 与 RBAC 说明。

【免费下载链接】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),仅供参考

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

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

立即咨询