WeKnora部署教程:OpenEuler+Ollama+WeKnora信创环境全栈适配指南
1. 为什么需要在信创环境中部署知识库问答系统?
在政务、金融、能源等关键行业,越来越多的单位开始推进国产化替代——从操作系统到硬件平台,从中间件到应用软件,整个技术栈都在向自主可控演进。但一个现实问题是:大模型应用往往依赖国外生态,比如 macOS 上的 Ollama、Ubuntu 下的 Docker 部署流程,很难直接迁移到 OpenEuler、麒麟、统信等国产操作系统上。
WeKnora 就是在这个背景下诞生的轻量级知识库问答系统。它不追求参数规模,而专注一件事:让 AI 老老实实“只说文本里有的话”。你给一段产品说明书,它就答说明书里的参数;你贴一份会议纪要,它就复述纪要里的结论;你丢一篇法律条文,它就严格引用条款原文。没有编造,没有推测,没有“我觉得可能是……”,只有“原文明确写了……”。
这恰恰契合信创场景的核心诉求:可验证、可追溯、低风险。不是所有业务都需要“全能AI”,很多一线岗位真正需要的,是一个能快速读懂内部文档、准确提取关键信息、回答不出错的“数字助手”。WeKnora + Ollama + OpenEuler 的组合,就是为这类刚需打造的一套开箱即用、全程国产、部署简单、运行稳定的技术方案。
2. 全栈组件说明:它们各自负责什么?
2.1 OpenEuler:信创底座,稳字当头
OpenEuler 是由开放原子开源基金会孵化的开源Linux发行版,已广泛应用于政府、电信、电力等行业的服务器和边缘设备。它不是“另一个Ubuntu”,而是针对国产CPU(鲲鹏、飞腾、海光、兆芯)深度优化的操作系统,内核、驱动、安全模块全部自主可控。
我们选用的是openEuler 22.03 LTS SP3版本,这是目前信创领域最主流的长期支持版本,兼容性好、更新及时、社区活跃。它不提供图形界面,默认以命令行方式管理,但这反而更适合部署服务类应用——资源占用低、攻击面小、运维路径清晰。
2.2 Ollama:本地大模型的“轻量引擎”
Ollama 是一个专为本地运行大模型设计的开源框架。它不像 Llama.cpp 那样需要手动编译量化模型,也不像 vLLM 那样面向高并发推理集群。Ollama 的核心价值在于:极简安装、一键拉取、开箱即用、API 标准。
在 WeKnora 镜像中,Ollama 承担两个关键角色:
- 模型加载器:自动下载并缓存
qwen2:1.5b、phi3:3.8b等轻量级中文模型(已针对 OpenEuler ARM64/X86 架构预编译) - 推理服务桥:为 WeKnora 提供标准的
/api/chat接口,屏蔽底层模型差异,让前端只需关注“提问-回答”逻辑
为什么选 Ollama 而非其他?
在信创环境中,模型运行不能依赖 CUDA(NVIDIA 显卡)或 ROCm(AMD 显卡),必须走 CPU 推理或昇腾/寒武纪加速。Ollama 原生支持 llama.cpp 后端,而 llama.cpp 对国产 CPU 的适配最为成熟。更重要的是,它的 CLI 命令(ollama run、ollama list)简洁直观,运维人员无需理解 GGUF 量化、KV Cache 管理等概念,也能完成日常维护。
2.3 WeKnora:专注“零幻觉”的知识问答前端
WeKnora 不是一个大模型,而是一个高度定制化的 Web 应用层。它的代码量不到 500 行,但每行都服务于一个目标:把用户粘贴的文本,变成 AI 的唯一知识来源,并确保回答严格受限于此。
它通过三重机制实现“零幻觉”:
- Prompt 锁定:每次请求都注入固定系统提示词:“你只能依据用户提供的背景知识作答。若问题超出该范围,请明确回复‘未在提供的知识中找到相关信息’。”
- 上下文截断:自动将用户粘贴的文本切分为 2048 token 以内的片段,避免因过长导致模型注意力偏移
- 答案过滤:后端对模型原始输出做关键词扫描,一旦检测到“可能”、“大概”、“据我所知”等模糊表述,立即触发重试或返回兜底响应
这种“克制的设计哲学”,让它比通用聊天界面更可靠,也更适合嵌入到 OA、知识管理系统、智能客服后台等生产环境。
3. OpenEuler 环境准备与基础依赖安装
3.1 系统检查与网络配置
登录 OpenEuler 服务器后,首先确认系统版本和架构:
cat /etc/os-release | grep -E "NAME|VERSION" uname -m预期输出应类似:
NAME="openEuler" VERSION="22.03 LTS SP3" aarch64 # 或 x86_64确保系统已配置可用的国内镜像源(如华为云、阿里云)。若网络受限,需提前在离线环境下载以下 RPM 包并手动安装:
glibc-developenssl-develzlib-develgcc(仅编译阶段需要)
3.2 安装必要工具链
OpenEuler 默认不预装curl、wget、git和jq,需手动补全:
sudo dnf install -y curl wget git jq tar gzip如遇dnf command not found,请先启用 epel 源:
sudo dnf install -y epel-release sudo dnf update -y3.3 创建专用运行用户(推荐)
为安全起见,不建议使用 root 用户运行服务。创建独立用户weknora并赋予必要权限:
sudo useradd -m -s /bin/bash weknora sudo usermod -aG wheel weknora sudo su - weknora后续所有操作均在此用户下进行。
4. Ollama 本地部署与模型配置
4.1 一键安装 Ollama(OpenEuler 适配版)
WeKnora 镜像已内置适配脚本,但为确保透明可控,我们采用官方推荐方式安装:
# 下载适用于 openEuler 的二进制包(ARM64 示例) curl -fsSL https://ollama.com/install.sh | sh # 若为 x86_64 架构,请替换为: # curl -fsSL https://ollama.com/install.sh | ARCH=x86_64 sh安装完成后,验证是否生效:
ollama --version # 输出应为:ollama version is 0.3.10 or higher4.2 启动 Ollama 服务并设置开机自启
Ollama 默认以当前用户身份运行,需手动启用 systemd 服务:
# 生成用户级 service 文件 mkdir -p ~/.config/systemd/user curl -o ~/.config/systemd/user/ollama.service https://raw.githubusercontent.com/ollama/ollama/main/systemd/ollama.service # 启用并启动 systemctl --user daemon-reload systemctl --user enable ollama systemctl --user start ollama # 检查状态 systemctl --user status ollama注意:OpenEuler 默认禁用用户级 systemd,如报错
Failed to connect to bus,请执行:sudo loginctl enable-linger weknora
4.3 拉取并测试中文轻量模型
WeKnora 推荐使用qwen2:1.5b(通义千问 1.5B 量化版),它在 16GB 内存的服务器上可流畅运行,且中文理解能力优于同级别模型:
ollama pull qwen2:1.5b等待下载完成后,用一条简单指令测试模型是否就绪:
echo '{"model":"qwen2:1.5b","messages":[{"role":"user","content":"你好,请用一句话介绍你自己"}]}' | curl -X POST http://localhost:11434/api/chat -H "Content-Type: application/json" -d @-若返回包含"message":{"role":"assistant","content":"我是通义千问..."}的 JSON,则说明 Ollama 已正常工作。
5. WeKnora Web 应用部署与配置
5.1 获取 WeKnora 镜像并解压
WeKnora 提供预编译的静态 Web 包(含后端 API),适配 OpenEuler 的完整镜像可通过 CSDN 星图镜像广场获取。此处演示手动部署方式:
cd ~ wget https://github.com/weknora/weknora/releases/download/v0.4.2/weknora-openEuler-aarch64.tar.gz tar -xzf weknora-openEuler-aarch64.tar.gz cd weknora目录结构如下:
weknora/ ├── app.py # Flask 后端(已编译为可执行二进制) ├── static/ # 前端 HTML/CSS/JS ├── config.yaml # 配置文件(指定 Ollama 地址、默认模型等) └── start.sh # 启动脚本5.2 修改配置以匹配本地环境
编辑config.yaml,确保 Ollama 地址与实际一致(默认为http://localhost:11434):
ollama: host: "http://localhost:11434" model: "qwen2:1.5b" timeout: 120 server: host: "0.0.0.0" port: 8080 debug: false如需绑定域名或启用 HTTPS,可在server区块下添加ssl_cert和ssl_key字段,WeKnora 原生支持。
5.3 启动 WeKnora 服务
执行启动脚本:
chmod +x start.sh ./start.sh该脚本会:
- 检查 Python 运行时(WeKnora 使用内置 Python 3.11,无需额外安装)
- 启动 Flask 服务(监听 8080 端口)
- 自动重定向 HTTP 请求至 HTTPS(如已配置证书)
启动成功后,终端将显示:
* Running on http://0.0.0.0:8080 * WeKnora is ready. Visit http://<your-server-ip>:8080 in your browser.5.4 防火墙放行端口(OpenEuler 默认开启 firewalld)
sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload6. 实际使用演示:三步完成一次精准问答
6.1 访问 Web 界面
在浏览器中输入http://<服务器IP>:8080,即可看到 WeKnora 简洁的双栏界面:左侧是“背景知识”输入框,右侧上方是“你的问题”,下方是“AI 的回答”。
6.2 粘贴知识并提问(真实案例)
我们以一份虚构的《某市政务云平台接入规范(V2.3)》节选为例:
背景知识粘贴内容:
“政务云平台支持两种接入方式:① API 直连:调用/v1/auth/token获取访问令牌,有效期 2 小时;② SSO 单点登录:通过 OIDC 协议对接统一身份认证中心。所有 API 请求必须携带Authorization: Bearer <token>头。平台不支持 Basic Auth 方式。”
提出问题:
政务云平台支持哪几种接入方式?
点击“提问”按钮,2–3 秒后,右侧将显示:
政务云平台支持两种接入方式: 1. **API 直连**:调用 `/v1/auth/token` 获取访问令牌,有效期 2 小时; 2. **SSO 单点登录**:通过 OIDC 协议对接统一身份认证中心。6.3 验证“零幻觉”机制
尝试一个知识中未提及的问题:
问题:
API 请求的超时时间是多少秒?
WeKnora 将明确返回:
未在提供的知识中找到相关信息。而不是猜测“可能是30秒”或“一般为60秒”。这种确定性的拒绝,正是信创场景中最需要的“可信边界”。
7. 运维与扩展建议
7.1 日志查看与问题排查
WeKnora 默认将日志输出到logs/app.log。当遇到响应慢或无响应时,优先检查:
- Ollama 是否仍在运行:
systemctl --user status ollama - 模型是否加载成功:
ollama list - 网络连通性:
curl -v http://localhost:11434/api/tags
7.2 模型升级与切换
如需更换为更大参数模型(如qwen2:7b),只需两步:
ollama pull qwen2:7b- 修改
config.yaml中的model字段为qwen2:7b
WeKnora 会在下次请求时自动加载新模型,无需重启服务。
7.3 与现有系统集成
WeKnora 提供标准 RESTful API,可轻松嵌入:
- OA 系统:在公文阅读页增加“智能摘要”按钮,调用
/api/summarize接口 - 知识库平台:将“全文检索结果”作为背景知识传入
/api/chat,实现语义问答 - 客服工单系统:将工单描述 + 产品手册片段合并为背景知识,辅助坐席快速定位解决方案
所有接口均返回标准 JSON,无额外依赖,适配任何国产化中间件。
8. 总结:一套真正“能用、好用、敢用”的信创AI方案
WeKnora 不是又一个炫技的大模型玩具,而是一套经过信创环境反复验证的生产力工具。它用最朴素的方式解决了最棘手的问题:如何让 AI 在不胡说的前提下,真正帮人读懂文档、提取信息、回答问题。
这套方案的价值,不在于参数多大、效果多炫,而在于:
- 能用:在 OpenEuler + 国产 CPU 上稳定运行,内存占用低于 4GB,对硬件要求极低;
- 好用:Ollama 提供统一接口,WeKnora 提供零学习成本的 Web 界面,运维人员半小时即可完成交付;
- 敢用:通过 Prompt 锁定、上下文截断、答案过滤三重机制,把“幻觉”关进笼子,让每一次回答都可审计、可追溯、可追责。
对于正在推进国产化替代的单位来说,WeKnora 不是“未来选项”,而是今天就能上线、明天就能见效的务实选择。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。