828华为云征文|部署知识库问答系统 MaxKB

news/2024/12/23 1:19:41/

828华为云征文|部署知识库问答系统 MaxKB

  • 一、Flexus云服务器X实例介绍
    • 1.1 云服务器介绍
    • 1.2 核心竞争力
    • 1.3 计费模式
  • 二、Flexus云服务器X实例配置
    • 2.1 重置密码
    • 2.2 服务器连接
    • 2.3 安全组配置
  • 三、部署 MaxKB
  • 四、总结

一、Flexus云服务器X实例介绍

1.1 云服务器介绍

云服务器是一种通过互联网提供虚拟化计算资源的服务,用户可按需租用存储、数据库、网络等资源。它具有高可用性、可扩展性和灵活性,支持按使用量付费,适合各种规模的企业和个人开发者,以实现成本效益和业务敏捷性。

华为云下一代云服务器Flexus X实例焕新上线,新产品具备柔性算力,六倍性能,旗舰体验,覆盖高科技、零售、金融、游戏等行业大多数通用工作负载场景,从而帮您快速上云!

在这里插入图片描述

Flexus X实例通过和其他服务组合,具备计算、镜像安装、网络、存储、安全等能力,您可根据业务需要灵活配置各资源。

在这里插入图片描述
在这里插入图片描述

本次测评使用的规格是:4核12G-100G-3M规格的Flexus X实例基础模式

在这里插入图片描述

1.2 核心竞争力

  • 柔性算力随心配
    首创CPU内存规格灵活定义,突破1:2次幂的固有配比,实现1:3、2:5等自定义特殊规格,量身匹配业务性能诉求

  • 一直加速一直快
    首创大模型QoS保障,智能全域调度,算力分配长稳态运行,一直加速一直快

  • 越用越省降本多
    针对迁移场景智能资源预画像,帮助用户在华为云上推荐匹配的资源规格,降本可达30%

  • 安全可靠更放心
    拥有国内最大SRE团队之一,基于华为云定性运维理念,确保云服务超高可用性

1.3 计费模式

计费模式包年/包月按需计费
付费方式预付费按照订单的购买周期结算。后付费按照云服务器实际使用时长计费。
计费周期按订单的购买周期计费。秒级计费,按小时结算。
关机是否计费关机对包年/包月的X实例计费无影响。云服务器按订单的购买周期计费。关机后,基础资源(包括vCPU、内存、镜像)不计费。其他绑定资源(如云硬盘、弹性公网IP、带宽等)正常计费。
是否支持变更规格支持变更实例规格。支持变更实例规格。
是否支持备案支持备案。需包月3个月及以上(包含多次续费后累计时长)。不支持备案。
适用场景适用于可预估资源使用周期的场景,价格比按需计费模式更优惠。对于长期使用者,推荐该方式。适用于计算资源需求波动的场景,可以随时开通,随时删除。

二、Flexus云服务器X实例配置

2.1 重置密码

购买完成后,会短信通过你的云服务器信息,重点是公网IP地址和用户名。首先我们需要打开你的服务器控制台,完成重置密码

在这里插入图片描述

勾选自动重启,点击确定即可。

在这里插入图片描述

2.2 服务器连接

  • 方式一:使用控制台提供的VNC方式登录

  • 方式二:使用Putty、Xshell等工具登录Linux弹性云服务器,
    a) 下载安装登录工具,例如Putty。
    b) 输入弹性公网IP。
    c) 输入用户名:root、密码,单击“确定”。

  • 方式三:使用Linux/Mac OS系统主机登录Linux弹性云服务器。
    a) 执行连接命令。
    ssh 弹性公网IP
    例如:ssh 123.xxx.xxx.456
    b) 输入用户名:root、密码,登录服务器。

我个人习惯使用 MobaXterm 这款软件,添加SSH连接,输出公网IP、用户名和端口(默认22),连接即可。

在这里插入图片描述

2.3 安全组配置

安全组是一个逻辑上的分组,为同一个VPC内的云服务器提供访问策略。用户可以在安全组中定义各种访问规则,当云服务器加入该安全组后,即受到这些访问规则的保护。

系统为每个网卡默认创建一个默认安全组,默认安全组的规则是对出方向上的数据报文全部放行,入方向访问受限。您可以使用默认安全组,也可以根据需要创建自定义的安全组

在这里插入图片描述

主要需要填写优先级(默认填1即可)、协议端口信息(一般选择你项目需要暴露的端口即可),其他默认点击确定即可。安全组配置主要是暴露端口可以给外网访问。

在这里插入图片描述

如果还不清楚可以参考文档:安全组配置示例

MaxKB_90">三、部署 MaxKB

MaxKB__92">3.1 MaxKB 介绍

MaxKB = Max Knowledge Base,是一款基于大语言模型和 RAG 的开源知识库问答系统,广泛应用于企业内部知识库、客户服务、学术研究与教育等场景。

  • 开箱即用
    支持直接上传文档、自动爬取在线文档,支持文本自动拆分、向量化、RAG(检索增强生成),智能问答交互体验好;

  • 无缝嵌入
    支持零编码快速嵌入到第三方业务系统,让已有系统快速拥有智能问答能力,提高用户满意度;

  • 灵活编排
    内置强大的工作流引擎,支持编排 AI 工作流程,满足复杂业务场景下的需求;

  • 模型中立
    支持对接各种大语言模型,包括本地私有大模型(Llama 3 / Qwen 2 等)、国内公共大模型(通义千问 / 智谱 AI / 百度千帆 / Kimi / 腾讯混元 / DeepSeek 等)和国外公共大模型(OpenAI / Azure OpenAI / Gemini / Claude 等)。

在这里插入图片描述

知识库问答系统 MaxKB 的意义在于,它不仅能够理解自然语言查询,还能从大规模知识库中快速检索相关信息,从而生成高质量的答案。这对于提升客户服务体验、加速企业决策流程、支持科学研究等多个领域都有着重要的应用价值,使得机器能够更加智能地辅助人类解决实际问题。

  • 官网:https://maxkb.cn/
  • Github:https://github.com/1Panel-dev/MaxKB

3.2 Docker 环境搭建

本次服务器环境是ubuntu系统镜像,需要自己安装docker环境

服务器类别系统镜像内网IP地址Docker版本操作系统版本
Flexus云服务器X实例Ubuntu192.168.0.16827.2.0Ubuntu 22.04.4 LTS

使用apt-get命令安装docker及其配置

# 安装必要工具包
$ sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common# 添加Docker GPG秘钥
$ sudo curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -# 配置仓库源
$ sudo add-apt-repository \"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \$(lsb_release -cs) \stable"	# 更新apt包索引
$ sudo apt-get update# 安装docker
$ sudo apt-get install docker-ce docker-ce-cli containerd.io# 添加docker镜像源
$ sudo vim /etc/docker/daemon.json{"registry-mirrors": ["https://ustc-edu-cn.mirror.aliyuncs.com/","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn","https://ccr.ccs.tencentyun.com/","https://docker.m.daocloud.io/","https://dockerproxy.com",]
}
# 重启
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

测试docker安装是否成功

root@flexusx-c6b3:~# docker -v
Docker version 27.2.0, build 3ab4256```

检查docker服务状态

root@flexusx-c6b3:~# systemctl status docker
* docker.service - Docker Application Container EngineLoaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)Active: active (running) since Fri 2024-08-30 15:53:45 CST; 17h ago
TriggeredBy: * docker.socketDocs: https://docs.docker.comMain PID: 24912 (dockerd)Tasks: 13Memory: 24.7MCPU: 3.778sCGroup: /system.slice/docker.service`-24912 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

检查docker compose版本

root@flexusx-c6b3:~# docker compose version
Docker Compose version v2.29.2

MaxKB__200">3.3 MaxKB 部署

version: "3.5"services:maxkb:image: cr2.fit2cloud.com/1panel/maxkbcontainer_name: maxkb restart: unless-stopped ports:- "3456:8080"volumes:- ./maxkb:/var/lib/postgresql/data- ./python-packages:/opt/maxkb/app/sandbox/python-packages
  • volumes:映射容器内部文件路径到本地
  • ports:配置访问端口

如果将上述代码片段保存在名为 docker-compose.yml 的文件中,则只需从同一文件夹中运行 docker compose up -d 即可自动拉取 MaxKB 镜像,并创建并启动一个容器。 up 表示启动服务,-d 表示在后台执行。docker-compose down 命令用于停止和清理由 docker-compose up 启动的服务。

  • 配置安全组

在Flexus云服务器X实例的安全组管理页面,添加入方向规则,接下来我们启动服务需要监听3456端口,所以添加安全组为TCP:3456协议端口。

在这里插入图片描述

  • 启动服务

进入项目目录,执行docker compose up -d启动命令,会自动拉取容器并运行

从 Dockerhub 拉取 MaxKB 镜像,地址:https://hub.docker.com/r/1panel/maxkb

root@flexusx-c6b3:~/maxkb# docker-compose up -d
Creating network "maxkb_default" with the default driver
Pulling maxkb (cr2.fit2cloud.com/1panel/maxkb:latest)...
latest: Pulling from 1panel/maxkb
8a1e25ce7c4f: Pull complete
b2be002daccf: Pull complete
71dff0956c31: Pull complete
962627501404: Pull complete
c23077a7a05a: Pull complete
40632b8e7084: Pull complete
cfbec5f1dac7: Pull complete
d1743de7c97b: Pull complete
c9cde040a07c: Pull complete
3a23a8d46005: Pull complete
f499f39f0f2d: Pull complete
2cf0f5381fa5: Pull complete
89f512733a11: Pull complete
45deb7326cc7: Pull complete
4da1588ee668: Pull complete
d3f2ea1b2dc4: Pull complete
a651e1af8a2c: Pull complete
b0f10305f06f: Pull complete
25d51f67048a: Pull complete
2b72b0c37d09: Pull complete
Digest: sha256:25a2f81682da5dff39b95aeb331c069eb29449be809b80b8b0105ea3f1f6e064
Status: Downloaded newer image for cr2.fit2cloud.com/1panel/maxkb:latest
Creating maxkb ... 
Creating maxkb ... done
  • 检查容器状态

检查 MaxKB 容器状态,确保容器正常启动

root@flexusx-c6b3:~/maxkb# docker ps
CONTAINER ID   IMAGE                            COMMAND                  CREATED              STATUS          PORTS                                                 NAMES
b032cd415d31   cr2.fit2cloud.com/1panel/maxkb   "bash -c /usr/bin/ru…"   About a minute ago   Up 53 seconds   5432/tcp, 0.0.0.0:3456->8080/tcp, :::3456->8080/tcp   maxkb
  • 访问地址

内网:http://localhost:3456
外网:http://公网IP:3456

  • 访问结果

在这里插入图片描述

若出现此页面,则部署 maxkb server 成功。

MaxKB__292">3.4 MaxKB 使用

输入默认的用户名和密码,完成登录

默认登录信息
用户名:admin
密码:MaxKB@123…

在这里插入图片描述

登录后需要重新修改密码,修改完成后就可以进入主页面了

在这里插入图片描述

登录 MaxKB 系统后,可以在系统管理 - 模型设置 中添加模型,也可以在创建应用时再添加模型

在这里插入图片描述

在供应商中选择【 Ollama 】,然后点击【添加模型】,进入 Ollama 表单,点击【添加】后校验通过则添加成功,便可以在应用的 AI 模型列表选择该模型

  • 模型名称:MaxKB 中自定义的模型名称。
  • 模型类型:大语言模型或向量模型。
  • 基础模型:供应商的 LLM 模型,支持自定义输入,但需要与供应商的模型名称保持一致,系统会自动下载部署模型。
  • API 域名和 API Key: Ollama 服务地址,例如:http://42.92.198.53:11434 。若没有设置 API Key,可以输入任意字符。

在这里插入图片描述

这里填入的API域名为之前部署的 ollama,可以通过此网址和端口,如http://123.60.144.170:11434,进行测试是否是可用的,出现Ollama is running 则是可用的

在这里插入图片描述

添加完成后,就可以显示在全部模型列表中了,默认是有一个 maxkb-embedding 的向量模型的

在这里插入图片描述

打开 知识库 页面,点击 创建知识库,进入创建知识库页面。 输入知识库名称、知识库描述、向量模型、选择通用型知识库类型

在这里插入图片描述

然后将离线文档通过拖拽方式或选择文件上传方式进行上传,支持文本文件格式为:Markdown、TXT、PDF、DOCX、HTML

在这里插入图片描述

设置分段规则,目前 MaxKB 支持智能分段以及高级分段两种分段方式。

智能分段
(1)MarkDown 类型的文件智能分段规则:
根据标题逐级下钻式分段(最多支持 6 级标题),每段的字符数最大为 4096 个字符;
当最后一级的文本段落字符数超过设置的分段长度时,会查找分段长度以内的回车进行截取。
(2)HTML、DOCX 类型的智能分段规则:
识别标题格式转换成 markdown 的标题样式;
逐级下钻进行分段(最多支持 6 级标题)每段的字符数最大为 4096 个字符。
(3)TXT和 PDF 类型的文件智能分段规则:
按照标题# 进行分段,若没有#标题的则按照字符数4096个字符进行分段;
查找分段长度以内的回车进行截取。

在这里插入图片描述

还可以选择高级分段,需要自己更根据上传的文件设置规则

高级分段
用户可以根据文档规范自定义设置分段标识符、分段长度及自动清洗。

  • 分段标识支持:#、##、###、####、#####、######、-、空行、回车、空格、分号、逗号、句号,还可以手动输入分段标识符。
  • 分段长度:支持最小 50个字符,最大 4096 个字符。
  • 自动清洗:开启后系统会自动去掉重复多余的符号如空格、空行、制表符等。

在这里插入图片描述

开始导入后,会先索引中,等待文件状态变成成功即可

在这里插入图片描述

点击 创建应用,输入应用名称,选择 简易配置应用,点击 创建

在这里插入图片描述

应用创建完成,进入简易配置应用的设置页面,左侧为应用信息,右侧为调试预览界面

  • 应用名称:用户提问时对话框的标题和名字。
  • 应用描述:对应用场景及用途的描述。
  • AI模型:在【系统设置】-【模型管理】中添加的大语言模型。
  • 提示词:系统默认有智能知识库的提示词,用户可以自定义通过调整提示词内容,可以引导大模型聊天方向.
  • 多轮对话:开启后当用户提问时,将携带用户在当前会话中最后3个问题;不开启则仅向大模型提交当前问题。
  • 关联知识库:用户提问后会在关联的知识库中检索分段。
  • 开场白:用户打开对话时,系统弹出的问候语。支持 Markdown 格式;[-]后的内容为快捷问题,一行一个。
  • 问题优化:对用户提出的问题先进行一次 LLM 优化处理,将优化后的问题在知识库中进行向量化检索;开启后能提高检索知识库的准确度,但由于多一次询问大模型会增加回答问题的时长。

在这里插入图片描述

知识库还可以进行参数设置,比如检索模式

  • 检索:使用向量模型通过向量距离计算与用户问题最相似的文本分段;
  • 全文检索:通过关键词检索,返回包含关键词最多的文本分段;
  • 混合检索:同时执行全文检索和向量检索,再进行重排序,从两类查询结果中选择匹配用户问题的最佳结果。

在这里插入图片描述

应用信息设置完成后,可以在右侧调试预览中进行提问预览

在这里插入图片描述

在应用列表页面,在概览页面点击演示或在浏览器中复制公开访问链接进入问答页面进行提问

在这里插入图片描述

访问公开访问链接,可以分享给他人使用

在这里插入图片描述

我们来查看下 MaxKB 的映射文件路径下的结构

root@flexusx-c6b3:~/maxkb# tree -L 1
.
|-- docker-compose.yml
|-- maxkb
`-- python-packages2 directories, 1 file
  • maxkb 即为 postgresql 数据库目录
  • python-packages 即为python库依赖目录

基于MaxkB搭建本地知识库问答系统,能够实现对敏感数据的本地化存储与管理,确保信息安全。同时,该系统支持快速检索与智能生成,帮助企业或个人高效利用已有知识,提升工作效率。适用于教育培训、企业内部知识分享等多种场景,促进知识积累与创新应用。MaxkB的基本使用就操作到此了,添加模型、添加知识库、添加应用和使用应用操作,其中对文档文件的检索设置还需要仔细研究下,还有更多有趣的设置和功能就需要自行探索了。

四、总结

基于大型语言模型和检索增强生成(RAG, Retrieval-Augmented Generation)的知识库问答系统结合了深度学习的强大文本生成能力和结构化数据的精确检索优势,能够在回答复杂问题时提供更准确、上下文相关的响应。此次使用的Flexus X实例配置还是很高的4核12G-100G-3M规格基础模式,在回答过程中,输出比较缓慢,我这里将ollama部署在了同一个服务器上了,使用的模型的是llama2:7b,没有限制最大CPU和内存使用,使用纯CPU推理的,回答问题时CPU和内存都会上升,但整体负载评估是运行流畅。

在这里插入图片描述

华为云服务器,以卓越的性能和稳定性著称,提供灵活的资源配置,满足不同业务需求。现在正值828 B2B企业节,享受限时优惠,免费试用和专属技术支持,让您的业务更上一层楼。立即行动,体验华为云的高效与便捷,助力您的企业快速成长。

在这里插入图片描述


http://www.ppmy.cn/news/1526522.html

相关文章

Java API 搜索引擎测试报告

一、测试项目介绍 基于SpringBoot开发的 Java API 文档搜索引擎,输入具体的类名或包名就能找到对应相关的搜索结果,点击标题即可跳转到对应官方网页。 二、测试 测试环境:Windows11,Google chrome浏览器 128.0.6613.138 (正式版…

自动驾驶自动泊车场景应用总结

自动泊车技术是当前智能驾驶技术的一个重要分支,其目标是通过车辆自身的感知、决策和控制系统,实现车辆在有限空间内的自主泊车操作。目前自动泊车可分为半自动泊车、全自动泊车、记忆泊车、自主代客泊车四种产品形态,其中, 根据搭载传感器和使用场景的不同,全自动泊车又可…

《C++位域:在复杂数据结构中的精准驾驭与风险规避》

在 C的广阔编程世界中,位域作为一种强大的工具,可以在复杂数据结构中实现高效的内存利用和特定的数据表示。然而,若使用不当,位域也可能带来未定义行为,成为程序中的潜在隐患。本文将深入探讨 C位域在复杂数据结构中的…

数据清洗-缺失值填充-随机森林填充

目录 一、安装所需的python包二、采用随机森林算法进行缺失值填充2.1可直接运行代码2.2以某个缺失值数据进行实战代码运行过程截屏:填充后的数据截屏: 三、随机森林算法 (Random Forest) 介绍3.1随机森林的定义3.2随机森林的基本思想3.3随机森林的工作原…

嵌入式硬件基础知识

嵌入式硬件基础知识涵盖了嵌入式系统中的硬件组成及其工作原理,涉及处理器、存储器、外设接口、电源管理等多个方面。这些硬件共同构成了一个完整的嵌入式系统,用于执行特定任务。下面我们来详细介绍嵌入式硬件的基础知识。 1. 嵌入式系统的组成 嵌入式…

Thinkphp5 + Swoole实现邮箱异步通知

在 ThinkPHP 中实现邮箱异步通知的常见做法是通过队列系统来处理异步任务,结合 Swoole 来处理异步发送邮件的请求。这样可以避免同步处理邮件发送导致的阻塞,提高响应速度。 以下是基于 ThinkPHP5 框架和 Swoole 的异步邮件通知实现步骤: 一…

数据结构(2):LinkedList和链表[2]

我们在上一篇文章中着重讨论了单链表的实现。其中我们要注意单链表进行遍历时一步一步走的思想。那么这篇文章我们将继续讨论链表的更多内容,那就让我们开始吧。 1.经典单链表算法题 我们将通过几个经典的题对单链表进行进一步的认识。 (1)反转链表 206. 反转链…

安全区域边界等保测评

1.边界防护 应保证跨越边界的访问和数据流通过边界设备提供的受控接口进行通信。 [测评方法] 1)应核查在网络边界处是否部署访问控制设备;网闸和防火墙2)应核查设备配置信息是否指定端口进行跨越边界的网络通信,指定端口是否配置并启用了安全策略acl 3)应采用其他技术手…