WeKnora:10 分钟从零部署一个私有 RAG 知识库
2026/9/20 10:55:47 网站建设 项目流程

WeKnora:10 分钟从零部署一个私有 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

WeKnora 是一个开源 LLM 知识平台,能把原始文档变成可检索的 RAG 知识库,还能长出推理 Agent 和自动维护的 Wiki。这篇文章只讲一件事:用 Docker Compose 在一台裸机上,把它从空白环境带到"跑起来、能用"的最短路径。全程只需 3 条核心命令加一次账号注册,顺利的话 10 分钟内能问出第一个带引用来源的回答。

预检|5 分钟环境自检:机器够不够跑

结论先行:只要你的 LLM 走 API(云端或远程 Ollama),4 核 8GB 起步就够;重活是文档解析和向量检索,不在模型上。

场景CPU内存磁盘
本地开发(LLM 走 API)2 核8GB20GB
生产环境4 核16GB100GB
本机跑大模型(Ollama)8 核32GB100GB+

一条命令把四件事查完:

# 一次看清 CPU、内存、磁盘余量和 Docker 版本 nproc; free -h; df -h .; docker compose version

💡 前面三项数字不够用就换机器或加内存;docker compose version报错则通常是 Docker 没装,或当前用户不在 docker 组里,对应排查见启动一节的折叠块。

启动|最小命令集:三步跑起核心服务

第一步:准备

只有一条命令,克隆仓库并复制环境变量模板:

# 克隆代码仓库并复制环境变量模板 git clone https://gitcode.com/GitHub_Trending/we/WeKnora && cd WeKnora && cp .env.example .env

打开.env(模板内每个变量都带中文注释,见 .env.example),只需要动这几项,其余保持默认:

变量默认值说明
DB_PASSWORD示例密码占位符,改成你自己的强密码
REDIS_PASSWORD示例密码同上
SYSTEM_AES_KEY32 字节示例值加密 API Key 等敏感字段的主密钥,用openssl rand -hex 16生成并离线保管
STORAGE_TYPElocal文件存本地卷,最省事;要对象存储再换minio/s3
RETRIEVE_DRIVERpostgres向量检索复用 ParadeDB 版 Postgres,默认即可
OLLAMA_BASE_URLhttp://host.docker.internal:11434指向你的 Ollama,不用可忽略

第二步:执行

# 拉取镜像并后台启动核心服务 docker compose pull && docker compose up -d

第三步:验证

# 查看容器状态,app 显示 healthy 才算真正就绪 docker compose ps

看到WeKnora-app为 healthy 后,浏览器打开http://localhost就是前端,API 在http://localhost:8080。本机用 Ollama 的话先ollama serve并 pull 一个模型;没配也不影响启动,只是首次要进系统设置手动填模型。仓库里的 scripts/start_all.sh 也能一键拉起并顺带装 Ollama,手动docker compose更可控。

常见启动报错排查(4 组)

Q:docker: command not foundA: 装 Docker 后复查docker compose version

Q: 连不上 Docker daemon,提示permission deniedA: 把当前用户加进 docker 组再重开终端:sudo usermod -aG docker $USER

Q: 80 端口被占用,前端起不来 A: 在.env里把FRONTEND_PORT从 80 改成比如 8088,然后docker compose up -d重建。

Q: app 容器反复重启 A:docker compose logs -f app定位,多数是.envDB_USER/DB_PASSWORD/DB_NAME和 postgres 容器对不上。

搞懂|组件都在干什么:5 个容器各自的角色

默认up -d只拉起核心五件套,其余组件按需叠加:

组件作用宿主端口
frontendWeb 界面(Nginx)80
app主应用,API 与业务逻辑8080
postgresParadeDB,关系库与向量库二合一不对外
redis流处理与 Asynq 任务队列不对外
docreader文档解析(gRPC)不对外(仅容器内网 50051)

想加能力就加--profile,多个可组合,例如同时上知识图谱和对象存储:

# 叠加 neo4j 与 minio 两个 profile 拉取并启动 docker compose --profile neo4j --profile minio pull && docker compose --profile neo4j --profile minio up -d

常用 profile:full(全部功能)、neo4j(知识图谱)、minio(对象存储)、langfuse(链路追踪)、searxng(自建网页搜索);完整清单见 README_CN.md 的可选服务一节。

上手|跑通第一个真实任务:上传文档并问出带引用的回答

容器起来只是开始,让系统给出可见反馈才算数。四步走完,你会得到一条能点进原文的问答记录:

  1. 打开http://localhost,注册第一个账号(它同时是系统管理员)。
  2. 进「系统设置」配置一个模型:填 API Key 的云端模型,或指向本机 Ollama。没模型,后面所有环节都是空转。
  3. 新建知识库并上传第一份文档,确认解析完成后能看到分块:

  1. 点「新对话」,选到刚才的知识库,提一个只有文档里才有答案的问题。回答末尾会标注引用来源,点开能定位到具体分块——能命中,说明解析、向量化、检索整条链路都通了。

提速|3 个立竿见影的优化建议

跑通之后最常见的抱怨是"解析慢、答得不准",按收益排序只改这三处:

  1. 模型别将就。回答质量九成取决于 LLM,在系统设置里配一个能力强的模型(API 或 Ollama 均可),这一步免费且收益最大。
  2. 调解析并发。文档解析是异步队列驱动的,.envWEKNORA_ASYNQ_CORE_CONCURRENCY(默认 8)控制解析主链路并发;机器余量大就提到 16,批量导入明显变快。
  3. 日志降级LOG_LEVEL默认debug会很吵,稳定后改info,再用LOG_PATH落盘方便事后翻查;同文件的WEKNORA_MODEL_MAX_CONCURRENCY(默认 32)限制每模型后台并发,一般不用动。

改的是环境变量,必须重建容器才生效:

# 重新加载 .env 并只重建 app 容器 docker compose up -d app

固化|生产化安全与运维清单 ⚠️

默认.env里多处是示例密码,暴露到公网前把下面 5 项全部打勾:

  • 改掉DB_PASSWORDREDIS_PASSWORD.env里的占位值)
  • SYSTEM_AES_KEY换成 32 字节随机值(openssl rand -hex 16)并离线备份——丢了就解不开库里所有加密字段
  • DISABLE_REGISTRATION=true,新用户走管理员邀请
  • 前端挂 HTTPS(反代 nginx/caddy 终止证书即可)
  • 备份方案实际演练过一次,数据都在 Docker 卷里

数据库备份一条命令:

# 导出数据库到本地文件,用户名和库名按 .env 实际值替换 docker compose exec postgres pg_dump -U postgres -d WeKnora > weknora_$(date +%F).sql

升级记住"先 pull 再 up",否则会复用本地旧镜像:

# 拉取与 .env 版本匹配的新镜像并重建容器 docker compose pull && docker compose up -d

日常巡检盯两样就够:docker stats看资源占用,docker compose logs -f app看报错。更多疑难场景见 docs/QA.md。

从预检、三步启动、组件拆解、跑通第一问答,到安全固化,这条路走完,WeKnora 就从"能跑"变成"敢跑"了。下一步,把团队里最常被问到的那批文档灌进知识库——第一批用户就是你自己。

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

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

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

立即咨询