WeKnora 本地部署教程:30 分钟搭出一个私有 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,数据全程留在本地。本教程以标准版为主线、Lite 版标注差异,全程约 30 分钟(标准版首次拉镜像另计 10–20 分钟,取决于网络),完成后你得到一台可提问的本地知识库实例。
动手前先定方案
两条部署路线的差别决定后续步骤和硬件预算,先看表再选:
| 对比维度 | 标准版(Docker Compose) | Lite 单二进制 |
|---|---|---|
| 外部依赖 | Docker + Compose,多容器栈 | 零外部服务,单二进制 + 一个 SQLite 文件 |
| 账号与协作 | 多空间,注册登录,RBAC 权限 | 单空间,开箱即用 |
| 文档解析 | 多种解析引擎可选 | 内置 Simple 解析引擎 |
| 硬件基线 | 4 核 8GB 起步 | 同机可跑,4 核 8GB 更从容 |
| 适用场景 | 团队共享知识库(团队场景,推荐) | 个人本机试用、隐私优先(个人场景,推荐) |
一句话:多人协作选标准版,个人试用选 Lite 版。两条路线都建议搭配 Ollama(本地大模型运行器)做完全离线的推理;已有云端模型 API 的,Lite 用OPENAI_BASE_URL指向它,标准版在.env里填对应地址与密钥即可。
主线步骤
步骤 1:获取源码
目标:把项目文件放到本地磁盘。
克隆仓库并进入目录:
git clone https://gitcode.com/GitHub_Trending/we/WeKnora cd WeKnora步骤 2:生成配置文件并填密钥
目标:拿到一份专属配置文件,并把两处留空的安全密钥换成自己的值。
若走标准版路线执行cp .env.example .env;若走 Lite 路线执行cp .env.lite.example .env.lite。然后生成两个密钥填入:
openssl rand -hex 32 openssl rand -hex 16前一个填JWT_SECRET,后一个填SYSTEM_AES_KEY(标准版要求 32 字节)。SYSTEM_AES_KEY要存档保存,丢失后旧凭据无法解密。若走 Lite 路线,确认OLLAMA_BASE_URL保持http://127.0.0.1:11434;若走标准版路线,容器内地址是http://host.docker.internal:11434,两者都是默认值,Ollama 端口不是 11434 时才需要改。
步骤 3:准备模型服务
目标:确保对话模型和向量化模型都可用。
完全本地化时,安装并启动 Ollama,拉取一个对话模型(7B–8B 规格任选)和一个用于文档向量化的 embedding 模型:
ollama serve ollama pull qwen2.5:7b ollama pull nomic-embed-text已有 OpenAI 兼容云端模型 API 的,跳过本步,在配置文件里填服务地址和密钥即可。
步骤 4:启动服务
目标:让全部组件进入运行状态。
若走标准版路线,依次执行:
docker compose pull docker compose up -d预期结果:docker compose ps中 frontend、app、docreader、postgres、redis 全部 healthy/running;首次拉镜像 10–20 分钟。若走 Lite 路线执行make run-lite,它先构建前端再构建 Go 二进制,首次约 5–10 分钟,需要本机装好 Go 1.26 与 Node。
步骤 5:首次进入并初始化模型
目标:完成账号与模型接通,进入可提问状态。
浏览器打开http://localhost(标准版后端 API 在http://localhost:8080)。若走标准版路线,会落在注册页,先创建第一个账号;若走 Lite 路线,页面直接可用,单空间免注册。在初始化向导或设置页的模型配置里填 LLM 与 Embedding 的地址和模型名,各做一次连通性测试,预期结果:两项都返回成功。
跑通自检
四项全过再开始导资料:
| 检查项 | 通过标准 | 不通过时去哪查 |
|---|---|---|
| Web 页面打开 | http://localhost出现注册/登录页;标准版 5 个容器均为 running | docker compose ps、docker compose logs -f app |
| 模型连通 | 设置页 LLM 与 Embedding 测试均返回成功 | 确认 Ollama 在跑;容器内地址是否用了host.docker.internal |
| 文档上传 | 建文档知识库传一份 PDF,几秒内从处理中变为完成 | 文档详情页的解析追踪时间线,看卡在哪一阶段 |
| 问答带引用 | 问文档内的事实性问题,回答末尾有原文引用段 | 知识库的检索配置与文档索引状态 |
跑通后立刻能做的 3 件事
把散落文档变成可搜索的库。新建文档知识库后直接拖入制度文档与技术手册,原目录结构会保留成侧栏的文件夹树,支持框选多选和批量打标签;检索时向量与关键词并行召回,返回带出处的原文片段。
追问一个答案的出处。在知识库问答模式下提一个事实性问题,模型先检索相关段落再组织回答,你可以逐段回溯到原文分块;对高频问题,把答案单独固定进 FAQ 类知识库,以后直接命中。
修正一个错误的检索块。进入文档详情页的分块编辑,改掉错误分块并保存,索引自动重建,下一次检索立刻生效;界面保留版本历史,支持 diff 对比和一键回滚。
排障速查 + 扩容参数
| 症状 | 最常见原因 | 一句话处理 |
|---|---|---|
| Web 页面打不开 | 端口被占或容器未就绪 | 查.env中FRONTEND_PORT,用docker compose logs -f app看报错 |
| 模型测试失败 | Ollama 未启动或地址写错 | 标准版容器内用host.docker.internal:11434,Lite 用127.0.0.1:11434 |
| 上传后停在"处理中" | Embedding 模型没配好或解析任务挂住 | 核对向量模型配置;追踪时间线里挂死可直接中止解析 |
| 图片显示无效链接 | 存储后端对外不可达 | Lite 默认本地存储不会遇到;标准版用 MinIO 时配一个可达地址 |
| 刚保存的配置消失 | 登录账号与空间归属不一致 | 切回自己创建的空间再操作 |
更多按现象定位的问题,见 website-docs/01-getting-started/05-troubleshooting.md。
数据量上来之后
文档量上来后,按顺序调这四个参数:
BATCH_EMBED_SIZE设 64:批量入库时一次请求向量化 64 条,明显减少与 Ollama 的往返次数。DOCREADER_GRPC_MAX_WORKERS设 CPU 核数(默认 4):文档解析是 CPU 密集型任务,并行度直接缩短排队时间。CONCURRENCY_POOL_SIZE控制在 3–8(标准版默认 5):并发太高挤占内存拖慢在线问答,太低拖慢入库。- Ollama 模型参数
num_ctx按模型上限调大:上下文足够时检索片段不被截断,长文档问答质量更稳。
用 8B 级本地模型时记住权衡:要单条回答质量就加大num_ctx,要整体吞吐就压低并发、分批入库,两者不能同时要满。
下一步建议:先导入 10–20 份最高频的文档,用 5 个真实问题校准检索与回答质量;确认满意后再考虑给标准版加--profile minio、--profile langfuse等可选服务。
仓库内相关资料:
- docs/LITE.md:Lite 与标准版逐条差异,选型摇摆时看这篇
- website-docs/01-getting-started/04-configuration.md:环境变量与配置项完整清单
- client/example.go:Go 客户端示例,写上传与检索脚本直接照抄结构
【免费下载链接】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),仅供参考