news 2026/4/11 5:56:16

WeKnora部署教程:OpenEuler+Ollama+WeKnora信创环境全栈适配指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
WeKnora部署教程:OpenEuler+Ollama+WeKnora信创环境全栈适配指南

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.5bphi3:3.8b等轻量级中文模型(已针对 OpenEuler ARM64/X86 架构预编译)
  • 推理服务桥:为 WeKnora 提供标准的/api/chat接口,屏蔽底层模型差异,让前端只需关注“提问-回答”逻辑

为什么选 Ollama 而非其他?
在信创环境中,模型运行不能依赖 CUDA(NVIDIA 显卡)或 ROCm(AMD 显卡),必须走 CPU 推理或昇腾/寒武纪加速。Ollama 原生支持 llama.cpp 后端,而 llama.cpp 对国产 CPU 的适配最为成熟。更重要的是,它的 CLI 命令(ollama runollama 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-devel
  • openssl-devel
  • zlib-devel
  • gcc(仅编译阶段需要)

3.2 安装必要工具链

OpenEuler 默认不预装curlwgetgitjq,需手动补全:

sudo dnf install -y curl wget git jq tar gzip

如遇dnf command not found,请先启用 epel 源:

sudo dnf install -y epel-release sudo dnf update -y

3.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 higher

4.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_certssl_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 --reload

6. 实际使用演示:三步完成一次精准问答

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),只需两步:

  1. ollama pull qwen2:7b
  2. 修改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星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/27 8:14:53

珠宝首饰识别与分类_Bangle_Earring_Necklace_YOLOv26改进_目标检测实战

1. 珠宝首饰识别与分类系统实战&#xff1a;基于YOLOv26改进的目标检测方案 1.1. 项目概述 &#x1f3af; 想象一下&#xff0c;当你在珠宝店挑选心仪的手镯、耳环或项链时&#xff0c;一个智能系统能够瞬间识别出每件珠宝的类别、材质甚至品牌&#xff01;这不是科幻电影场景…

作者头像 李华
网站建设 2026/4/8 8:59:45

GLM-4-9B-Chat-1M低代码集成方案:通过LangChain+LlamaIndex快速接入现有系统

GLM-4-9B-Chat-1M低代码集成方案&#xff1a;通过LangChainLlamaIndex快速接入现有系统 1. 为什么你需要一个真正能“记住长内容”的大模型&#xff1f; 你有没有遇到过这样的场景&#xff1a; 客服系统要从上百页的产品手册里精准定位某条售后政策&#xff1b;法务团队需要…

作者头像 李华
网站建设 2026/4/8 13:55:54

显存不够怎么办?Hunyuan-MT-7B-WEBUI低资源运行技巧

显存不够怎么办&#xff1f;Hunyuan-MT-7B-WEBUI低资源运行技巧 你刚下载完 Hunyuan-MT-7B-WEBUI 镜像&#xff0c;兴致勃勃地执行 1键启动.sh&#xff0c;结果终端弹出一行刺眼的报错&#xff1a; torch.cuda.OutOfMemoryError: CUDA out of memory. Tried to allocate 2.40…

作者头像 李华
网站建设 2026/4/5 10:45:45

界面三标签设计,功能分区清晰易用

界面三标签设计&#xff0c;功能分区清晰易用 1. 为什么这个界面让人一上手就懂&#xff1f; 你有没有试过打开一个AI工具&#xff0c;面对满屏按钮和参数&#xff0c;愣是不知道从哪开始&#xff1f;很多图像处理工具把所有功能堆在同一个页面&#xff0c;新手点来点去&…

作者头像 李华
网站建设 2026/4/8 15:56:36

ollama部署本地大模型:translategemma-12b-it图文翻译服务多用户隔离方案

ollama部署本地大模型&#xff1a;translategemma-12b-it图文翻译服务多用户隔离方案 1. 为什么需要一个真正可用的本地图文翻译服务 你有没有遇到过这样的场景&#xff1a;手头有一张英文技术文档截图&#xff0c;想快速看懂但又不想上传到在线翻译平台&#xff1f;或者团队…

作者头像 李华
网站建设 2026/4/8 3:38:03

ms-swift性能优化:Ulysses并行技术降低长文本显存

ms-swift性能优化&#xff1a;Ulysses并行技术降低长文本显存 在大模型训练与推理实践中&#xff0c;一个长期困扰工程师的痛点始终挥之不去&#xff1a;处理长上下文时显存爆炸式增长。当模型需要理解一篇万字技术文档、分析整段代码逻辑&#xff0c;或生成连贯的长篇叙事时&…

作者头像 李华