WeKnora:10 分钟从零部署一个私有 RAG 知识库

发布时间:2026/9/20 10:55:51
WeKnora:10 分钟从零部署一个私有 RAG 知识库 WeKnora10 分钟从零部署一个私有 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/WeKnoraWeKnora 是一个开源 LLM 知识平台能把原始文档变成可检索的 RAG 知识库还能长出推理 Agent 和自动维护的 Wiki。这篇文章只讲一件事用 Docker Compose 在一台裸机上把它从空白环境带到跑起来、能用的最短路径。全程只需 3 条核心命令加一次账号注册顺利的话 10 分钟内能问出第一个带引用来源的回答。预检5 分钟环境自检机器够不够跑结论先行只要你的 LLM 走 API云端或远程 Ollama4 核 8GB 起步就够重活是文档解析和向量检索不在模型上。场景CPU内存磁盘本地开发LLM 走 API2 核8GB20GB生产环境4 核16GB100GB本机跑大模型Ollama8 核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定位多数是.env的DB_USER/DB_PASSWORD/DB_NAME和 postgres 容器对不上。搞懂组件都在干什么5 个容器各自的角色默认up -d只拉起核心五件套其余组件按需叠加组件作用宿主端口frontendWeb 界面Nginx80app主应用API 与业务逻辑8080postgresParadeDB关系库与向量库二合一不对外redis流处理与 Asynq 任务队列不对外docreader文档解析gRPC不对外仅容器内网 50051想加能力就加--profile多个可组合例如同时上知识图谱和对象存储# 叠加 neo4j 与 minio 两个 profile 拉取并启动 docker compose --profile neo4j --profile minio pull docker compose --profile neo4j --profile minio up -d常用 profilefull全部功能、neo4j知识图谱、minio对象存储、langfuse链路追踪、searxng自建网页搜索完整清单见 README_CN.md 的可选服务一节。上手跑通第一个真实任务上传文档并问出带引用的回答容器起来只是开始让系统给出可见反馈才算数。四步走完你会得到一条能点进原文的问答记录打开http://localhost注册第一个账号它同时是系统管理员。进「系统设置」配置一个模型填 API Key 的云端模型或指向本机 Ollama。没模型后面所有环节都是空转。新建知识库并上传第一份文档确认解析完成后能看到分块点「新对话」选到刚才的知识库提一个只有文档里才有答案的问题。回答末尾会标注引用来源点开能定位到具体分块——能命中说明解析、向量化、检索整条链路都通了。提速3 个立竿见影的优化建议跑通之后最常见的抱怨是解析慢、答得不准按收益排序只改这三处模型别将就。回答质量九成取决于 LLM在系统设置里配一个能力强的模型API 或 Ollama 均可这一步免费且收益最大。调解析并发。文档解析是异步队列驱动的.env里WEKNORA_ASYNQ_CORE_CONCURRENCY默认 8控制解析主链路并发机器余量大就提到 16批量导入明显变快。日志降级。LOG_LEVEL默认debug会很吵稳定后改info再用LOG_PATH落盘方便事后翻查同文件的WEKNORA_MODEL_MAX_CONCURRENCY默认 32限制每模型后台并发一般不用动。改的是环境变量必须重建容器才生效# 重新加载 .env 并只重建 app 容器 docker compose up -d app固化生产化安全与运维清单 ⚠️默认.env里多处是示例密码暴露到公网前把下面 5 项全部打勾改掉DB_PASSWORD和REDIS_PASSWORD.env里的占位值SYSTEM_AES_KEY换成 32 字节随机值openssl rand -hex 16并离线备份——丢了就解不开库里所有加密字段设DISABLE_REGISTRATIONtrue新用户走管理员邀请前端挂 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),仅供参考