WeKnora 离线 RAG 知识库部署:本地单机跑通文档问答的完整教程

发布时间:2026/9/11 18:48:18

WeKnora 离线 RAG 知识库部署:本地单机跑通文档问答的完整教程 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/WeKnoraWeKnora 是一套开源的 LLM 知识平台核心功能是把 PDF、Word 这类原始文档转成可检索的 RAG 知识库再挂上一个能自主推理的问答 Agent还能自动维护 Wiki。这篇教程演示如何在不依赖任何云端 API的机器上用 Docker Ollama 把整套系统离线跑起来。动手前先对表这套方案适不适合你先用这张表做判断避免白忙一场你的情况结论机器完全无法访问外网文档问答必须本地闭环✅ 按本教程走模型推理、向量检索、文档解析全部本机完成数据涉密不允许流向第三方 API✅ 私有化部署后文件只落在自己的磁盘个人学习 RAG 链路或给小团队做试点✅ 单机 Compose 足够不需要 K8s只是个人尝鲜、不想维护一堆容器❌ 去看单应用零依赖的 Lite 版本更轻文档量极大、多团队高并发生产⚠️ 先看 Helm 编排模板单机方案先别上一句话决策只要数据不能出机器或机器连不上外网中有一条成立就继续往下。开工前的准备清单全部满足再动手省得中途返工软件三件套Docker≥20.10、Docker Composev2、Git。Ollama 不用提前装启动脚本会自动处理但如果目标是离线机器镜像和模型必须先在联网机器上备好用docker save打包再拷过去。硬件底线8 核 CPU 32GB 内存起步推理主要吃内存跑 7B 对话模型时建议留出 16GB 以上可用空间。磁盘预留 200GB镜像、模型权重、解析产物都会往盘上写。⚠️网络窗口首次拉镜像和模型必须联网。真正无网环境的正确姿势是联网机器备齐一切 → 拷贝 → 目标机部署而不是在目标机上现拉。任务一获取代码并生成配置入口git clone https://gitcode.com/GitHub_Trending/we/WeKnora cd WeKnora cp .env.example .env为什么从模板复制而不是手写整套部署只有.env这一个配置入口数据库密码、存储类型、Ollama 地址都收敛在这一个文件里模板里每项都带注释照着填即可。任务二只动三个关键位置打开.env其余保持默认重点确认这几处STORAGE_TYPE保持local——文件直接落在容器挂载的本地目录不引入任何对象存储依赖OLLAMA_BASE_URL保持默认http://host.docker.internal:11434这样容器才能找到宿主机上的 Ollama。⚠️ 容器视角下localhost指的是容器自己写localhost是最常见的坑DB_PASSWORD、REDIS_PASSWORD、SYSTEM_AES_KEY换成自己生成的值别沿用模板里的示例值。另外 config/config.yaml 会被直接挂载进 app 容器后续想微调解析与检索行为时改它就行不用重建镜像。模型侧还要把 docs/QA.md 里提到的INIT_LLM_MODEL_NAME、INIT_EMBEDDING_MODEL_NAME、INIT_EMBEDDING_MODEL_DIMENSION这几个变量指向你实际要用的模型否则文档上传会卡在嵌入环节。任务三在 Ollama 上备齐嵌入和对话两个模型嵌入和对话各需要一个ollama pull bge-m3 # 嵌入模型 ollama pull qwen2.5:7b # 对话模型换成你已有的模型名即可⚠️ 无网机器上这两条命令要在联网机器执行、导出模型文件拷过来再导入。模型没就位时 app 只告警不崩但问答功能暂时不可用先知道这一点别把它当成部署失败。任务四一条命令拉起整套服务./scripts/start_all.sh --no-pull脚本替你把三件事串起来确认 Ollama 存活、校验.env是否齐全、再用 Compose 拉起前端、app、postgres、docreader、redis 这批容器。--no-pull表示不联网拉镜像、直接用本地已有的这正是离线部署的关键开关如果首次就在有网机器上部署去掉这个参数即可。动手前也可以先执行./scripts/start_all.sh -c做一次环境自检。 脚本末尾打印出前端界面: http://localhost和API接口: http://localhost:8080时说明整套集群已经起来了。跑通后的验收五件事全过才算成功按顺序做任何一步卡住就跳到下面的排障速查#动作通过标准1docker compose ps所有容器 Up重点看 WeKnora-app、WeKnora-postgres、WeKnora-docreader2curl -f http://localhost:8080/health返回 200后端健康检查通过3浏览器打开http://localhost默认开放注册注册并登录第一个账号4新建知识库上传一份 PDF解析状态变为完成5问答页问这份文档主要讲什么拿到带引用出处的回答整条链路全通排障速查表高频故障都按现象 → 处理两句话给结论现象处理app 容器反复重启日志全是 Ollama 连不上先在宿主机curl http://localhost:11434/api/tags确认 Ollama 活着再核对.env的OLLAMA_BASE_URL是否写成host.docker.internal上传文档直接被拒默认单文件上限 50MBMAX_FILE_SIZE_MB超限先换小文件没超限就docker compose logs docreader看解析器报的具体格式问题文档传上去了但问答没反应检查任务二里的INIT_LLM_MODEL_NAME/INIT_EMBEDDING_MODEL_NAME是否真的指向 Ollama 里已有的模型名问答太慢无 GPU 时推理全压在 CPU 上换更小的对话模型或把BATCH_EMBED_SIZE调小换内存通常比换硬件见效快要继续压性能优先动三处对话模型规格、嵌入批次大小、知识库 top_k 召回数量——全部集中在.env和 config/config.yaml 里。回滚与清理不想留痕迹时按顺序执行./scripts/start_all.sh --stop # 停掉所有容器 docker volume prune # 清掉数据卷会删数据先确认无备份需求⚠️docker volume prune不可逆生产试点机先docker volume ls确认卷名或改用make clean-db只清数据库。延伸阅读部署到此结束下一步值得做两件运维事给数据卷挂独立磁盘并定期备份把 Ollama 指向内网显存最大的那台机器做负载分担。继续深入可以从这些仓库内材料入手部署脚本scripts/start_all.sh启动、停止、环境检查都在这里配置模板.env.example 与 config/config.yaml常见问题与运维docs/QA.md分块与解析细节docs/CHUNKING.md【免费下载链接】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),仅供参考
延伸阅读

更多相关文章

2026/9/11 18:48:18

MEDAI-V2 智能直播盒子

MEDAI-V2 智能直播盒子深度评测:一台设备搞定5路RTMP推流AI人型识别实时绿幕 摘要:传统多平台直播需要多台电脑采集卡OBS复杂配置。MEDAI-V2 将编码、推流、绿幕、AI识别集成进一台118g的铝合金盒子,支持5路RTMP同时推流、H.265硬件编码、AES…

2026/9/11 19:33:25

mybatis使用笔记、生命周期、拦截器等、类型转换

文章目录打印sql日志mybatis-config.xml方式application.yml里面配置配置类配置方式生命周期生命周期-StatementHandler生命周期-ParameterHandler生命周期-Executor生命周期-ResultSetHandlermybatis拦截器其他扫描方式select日志可以打出来,update和delete语句未打…

2026/9/11 19:33:25

DevOps与商业场景实战:从工具链到价值实现

1. 项目概述 "开发运维与商业场景实战"这个标题让我想起了多年前第一次参与企业级项目部署时的场景。当时作为新人,我完全无法理解为什么一个简单的功能上线需要经过那么多复杂流程。直到后来自己踩过各种坑,才真正明白DevOps和商业场景结合的…

2026/9/11 19:33:25

增强缓存错误报告:从模糊日志到精准排障的可观测性实践

1. 为什么缓存错误报告需要“增强”:一次排查事故的反思在数据库或分布式系统的日常运维里,缓存承担着给热数据加速的重任。但缓存不是保险箱,它也会出错:数据满了被逐出、条目意外失效、并发写入互相覆盖、序列化反序列化异常………

2026/9/11 19:33:25

AutoMapper在.NET中的高效对象映射实践指南

1. AutoMapper核心价值与应用场景AutoMapper作为.NET生态中广泛使用的对象映射工具,其核心价值在于消除应用程序中繁琐的对象转换代码。在实际项目中,我们经常遇到DTO(Data Transfer Object)与领域模型、视图模型之间的相互转换需…

2026/9/11 19:33:25

Java开发者转型AI:工程思维与高薪路径

1. 项目概述:Java开发者转型AI的破局之道"Java老鸟破局:转身AI,让多年积累成为高薪底气"这个标题精准捕捉了当前技术圈的一个普遍焦虑——传统Java开发者如何应对AI浪潮的冲击。作为一名在Java和AI交叉领域深耕多年的从业者&#x…

2026/9/11 19:28:24

背包问题-分支限界法求解

1. 分支限界法的基本概念, 与背包问题实例, 相关于(10.2)1.1, 组合优化问题的基础概念。组合优化问题,是关乎在有限的解空间范围之内, 去找到可以满足某种约束条件的最优解的问题。这些问题通常出现在资源分配、路径规划和背包问题等场景中。…

2026/9/10 16:39:38

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/10 11:16:38

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/10 15:49:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码