基础概念
KES
人大金仓数据库管理系统 KingbaseES(KES) 是由 北京人大金仓信息技术股份有限公司 (以下简称“人大金仓”)自主研发的面向全行业、全客户关键应用的企业级大型通用数据库管理系统。产品融合了人大金仓在数据库领域几十年的产品研发和企业级应用经验,适用于联机事务处理、查询密集型数据仓库、要求苛刻的互联网应用等场景,提供全部应用开发及系统管理功能,提供性能增强特性,可支持主备集群、读写分离集群、多活共享存储集群等全集群架构,具有高性能、高安全、高可用、易使用、易管理、易维护的特点,支持所有国内外主流CPU、操作系统与云平台部署。
人大金仓 成立于1999年,是成立最早的拥有自主知识产权的国产数据库企业,也是 中国电子科技集团 (简称“CETC”)成员企业。
LLM
大语言模型(Large Language Model,LLM)是一种基于深度学习的自然语言处理(NLP)模型,其特点是拥有极其庞大的参数量,通常在几十亿到几百亿个参数之间,有时甚至超过一万亿参数。这些模型通过训练在海量文本数据上学习到语言的规律和模式,从而能够理解和生成人类语言,执行多种自然语言处理任务,如文本生成、问答、文本分类、摘要、翻译、对话系统、代码编写等。
随着技术的发展,大语言模型的性能不断提升,越来越受到学术界和工业界的关注,如何私有化部署大语言模型也提上了议题。
本文将介绍如何在本地使用 LLM 搭建一个私有知识库,并基于此来帮助我们更快速的学习金仓数据库。
Ollama + Open WebUI 搭建知识库
Ollama
Ollama 是一个允许你在本地运行开源LLM的开源软件(OSS)。
目前 Star 数为 67K+
支持常见的LLM,如:
-
Llama 3
Meta Llama 3 是迄今为止最强大的公开可用 LLM,由 Meta 公司开发,提供 8B 和 70B 参数大小。
Llama 3 指令调整模型针对对话/聊天用例进行了微调和优化,在常见基准测试中优于许多可用的开源聊天模型。
Llama 3 比 Llama 2 和其他公开可用的模型有了很大的改进:
-
在比 Llama 2 大七倍的数据集上进行训练 -
Llama 2 的上下文长度是 8K 的两倍 -
使用具有 128K 标记的更大标记词汇表更有效地编码语言 -
与 Llama 2 相比,错误“拒绝”率不到 1⁄3
-
llama2-chinese
Llama 2 对话中文微调参数模型,是基于 Meta Platform, Inc. 所发布的 Llama 2 Chat 开源模型来进行微调。
根据 Meta,Llama 2 的训练数据达到了两万亿个 token,上下文长度也提升到 4096。对话上也是使用100万人类标记的数据微调。
由于 Llama 2 本身的中文对齐比较弱,开发者采用了中文指令集来进行微调,使其具备较强的中文对话能力。
目前这个中文微调参数模型总共发布了 7B,13B两种参数大小。
-
gemma
Gemma 是 Google DeepMind 构建的轻量级、最先进的开放模型系列。它受到 Google 的 Gemini 模型的启发。
这些模型在多样化的网络文档数据集上进行训练,以使其接触到广泛的语言风格、主题和词汇。这包括用于学习编程语言语法和模式的代码,以及用于掌握逻辑推理的数学文本。
关于硬件要求,Ollama 不强制要求使用 Nvidia GPU,也可以使用 CPU 进行运算。
内存方面: 对于 7B 型号,建议至少使用 8GB RAM; 13B,至少 16GB; 33B,至少 32 GB; 70B,至少 64GB。
Open WebUI
Open WebUI (原 Ollama WebUI) 是一款可扩展、功能丰富且用户友好的自托管图形化页面,旨在完全离线运行。它支持各种 LLM 运行器,包括 Ollama 和 OpenAI 兼容 API。
部署步骤
本文所使用的演示环境为 8c16g,操作系统为 CentOS 7.9。
搭建 Ollama + Llama 3 / llama2-chinese + Open WebUI,主要步骤如下。
-
下载 Ollama 和 Llama 3
本文所使用的是开源大模型和软件,源代码在 GitHub 上。Linux 环境中只需一条命令即可下载安装。
curl -fsSL https://ollama.com/install.sh | sh
下载完成后,会自动运行。
命令端交互访问示例:
-
下载 Open WebUI
docker run -d -p 3000:8080 \
--add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data \
--name open-webui --restart always \
ghcr.io/open-webui/open-webui:main
-
准备 KES 相关资料
将准备好的人大金仓数据库相关资料导入到模型中。
但需注意的是,在没有 GPU 的条件下,大模型可以使用 CPU 作为算力,但十分消耗资源。
而且 LLM 生成的文字内容准确率有待考证,仍需人工校对。
一起来了解 KES
下面一起来了解学习金仓数据库 KES。
KES 介绍
1. 人大金仓数据库支持几种架构
Llama 3 模型的回答:
看来 llama 3 对中文的响应真的不够好,我们切换到 llama2-chinese 模型看看。
llama2-chinese 模型的回答:
作者回答:
-
KingbaseES 集中式 -
KingbaseRWC 读写分离集群 -
KingbaseRAC 共享存储集群
2. 人大金仓数据库 KES 的产品优势有哪些?
llama2-chinese 模型的回答:
作者回答:
-
迁移开发 简单高效 -
高度容错 稳定可靠 -
性能强劲 表现出众 -
系统自治 简单易用 -
纵深防御 确保安全 -
全面兼容 深度适配
3. 人大金仓数据库如何助力企业完成国产化替代
llama2-chinese 模型的回答:
作者回答:
以下是人大金仓数据库助力企业完成国产化替代的几个关键点:
-
技术创新和自主研发 -
自主可控、安全可靠的产品体系 -
全面的数据库产品线 -
降低迁移成本和门槛 -
产业链合作,成熟的解决方案
等等。
也许是演示环境的资源有限,或者大模型调试不够,信息提取、处理效果并不理想,还需要各方面的投入才能实现商用。
接下来由我继续为大家介绍 KES 的其他内容。
安装 KES
将下载好的 KES 安装介质上传到目标服务器,这里使用的是 CentOS 7 系统。
解压安装包,并执行安装。
[shawnyan@centos7 kes]$ ./setup.sh
Now launch installer...
Preparing to install
Extracting the JRE from the installer archive...
Unpacking the JRE...
Extracting the installation resources from the installer archive...
Configuring the installer for this system's environment...
Verifying JVM........
Launching installer...
Graphical installers are not supported by the VM. The console mode should be used instead...
===============================================================================
KingbaseES V8 (created with InstallAnywhere)
-------------------------------------------------------------------------------
Preparing CONSOLE Mode Installation...
===============================================================================
Welcome
-------
This installer will guide you through the installation of KingbaseES V8.
It is strongly recommended that you quit all programs before continuing with
this installation. You may cancel this installation by typing 'quit'.
KingbaseES Version: V8
Kingbase Type:BMJ-NO
Installer Version: V008R006C008B0014
Install DATE:202406030600
Kingbase Inc.
http://www.kingbase.com.cn
...
===============================================================================
Choose License File
-------------------
File Path: /home/shawnyan/license_29296/license_29296_0.dat
License序列号 --- 启用 --- 5B9512C0-C2DA-11ED-B123-000C29CBE49F
生产日期 --- 启用 --- 2023-03-15
产品名称 --- 启用 --- KingbaseES V8
细分版本模板名 --- 启用 --- SALES-企业版 V8R6
产品版本号 --- 启用 --- V008R006C
...
Pre-Installation Summary
------------------------
Please Review the Following Before Continuing:
Product Name:
KingbaseES V8
Install Folder:
/opt/kes
Product Features:
SERVER,
INTERFACE,
DEPLOY,
KINGBASEHA,
KSTUDIO,
KDTS
Install Disk Space Information
Require Disk space : 5378 MB Free Disk Space : 13568 MB
...
===============================================================================
Installation Complete
---------------------
Congratulations. KingbaseES V8 has been successfully installed to:
/opt/kes
If you want to register KingbaseES V8 as OS service, please run
/opt/kes/install/script/root.sh
PRESS <ENTER> TO EXIT THE INSTALLER:
Complete.
有点遗憾的是,这里注册系统服务后,发现使用的仍是古老的service服务,而不是systemd服务。
[shawnyan@centos7 ~]$ systemctl status kingbased
● kingbased.service - LSB: Start and stop the kingbase server
Loaded: loaded (/etc/rc.d/init.d/kingbased; bad; vendor preset: disabled)
Active: failed (Result: exit-code) since Mon 2024-06-03 20:14:00 CST; 16h ago
Docs: man:systemd-sysv-generator(8)
Process: 126960 ExecStart=/etc/rc.d/init.d/kingbased start (code=exited, status=1/FAILURE)
安装完成后,KES 已自行启动,看到默认监听端口 54321。
[shawnyan@centos7 ~]$ sudo ss -antpl | grep king
LISTEN 0 244 *:54321 *:* users:(("kingbase",pid=85947,fd=3))
LISTEN 0 244 [::]:54321 [::]:* users:(("kingbase",pid=85947,fd=4))
连接 KES
连接 KES 的方式很多,这里介绍两种。
-
通过 ksql 客户端连接到 KES 服务器。
[shawnyan@centos7 bin]$ ksql -Usystem kingbase
Password for user system:
Type "help" for help.
kingbase=# select version();
version
----------------------------------------------------------------------------------------------------------------------
KingbaseES V008R006C008B0014 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
(1 row)
-
通过 KStudio 图形化工具连接 KES 服务器。
KStudio 是金仓自主研发的一款功能强大的数据库管理工具,可为数据库开发人员、DBA提供数据库开发、调试、维护等各项功能,完美支持金仓数据库。
管理 KES
KES 的 MySQL 相关参数
安装时可以看到 KES 支持 PG, Oracle, MySQL 三种数据库模式。
Database Mode
-------------
Please enter database mode.
1- PG
->2- ORACLE
3- MySQL
查看设定表,可以看到有3个 MySQL 相关参数。
kingbase=# select name,setting,short_desc from pg_settings where name ~ 'mysql';
name | setting | short_desc
----------------------+---------+------------------------------------------------------------------------------------------------------
mysql5_str_rtrim | off | Convert empty string to null.
mysql_interval_style | off | compatible some mysql interval unit styleon:mysql style,off:default style
mysql_numop_style | on | compatible mysql style about operators of integers and strings as operators of integers and integers
(3 rows)
KES 的插件
查看已安装的插件,共21个。
kingbase=# \dx
List of installed extensions
Name | Version | Schema | Description
-----------------------+---------+--------------+---------------------------------------------------------------------------------------------------------------------
dbms_ddl | 1.0 | sys | DBMS_DDL system package
dbms_output | 1.0 | sys | DBMS_OUTPUT system package
dbms_utility | 1.0 | sys | dbms_utility extension package
kdb_cast | 1.0 | sys | kdb_cast extension
kdb_inherit_functions | 1.0 | sys | copy of kdb_oracle_datatype to seperate from kdb_oracle_datatype
kdb_license | 1.0 | pg_catalog | kdb_license extension
kdb_mysql_datatype | 1.0 | pg_catalog | kdb_mysql_datatype extension
kdb_mysql_functions | 1.1 | sys | Functions of mysql compatible
kdb_tinyint | 1.0 | pg_catalog | Create a new data type tinyint and its functions operators and indexes
kingbase_version | 1.0 | pg_catalog | This is a utility that provides function related to version number, it is used to get the Kingbase version number.
owa_util | 1.0 | sys | owa_util system package
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
plsql | 1.0 | pg_catalog | PL/SQL procedural language
src_restrict | 1.0 | src_restrict | src restrict plugin
sys_anon | 1.0 | anon | provides data masking functionality
sys_freespacemap | 1.2 | sys | examine the free space map (FSM)
sys_hm | 1.0 | pg_catalog | Kingbase Healthy Check
sys_stat_statements | 1.10 | public | track parsing, planning and execution statistics of all SQL statements executed
sysaudit | 1.0 | sysaudit | provides auditing functionality
sysmac | 1.0 | sysmac | Mac for Kingbase
xlog_record_read | 1.0 | pg_catalog | xlog_record_read functions
(21 rows)
其中描述最长的 kingbase_version 插件,可以看到包含了3个方法,分别用于查看构建 KES 时的分支、时间和版本。
kingbase=# \dx+ kingbase_version
Objects in extension "kingbase_version"
Object description
--------------------------
function build_branch()
function build_time()
function build_version()
(3 rows)
kingbase=# select build_branch();
build_branch
--------------------------
HotFix_V009R001C001B0022
(1 row)
kingbase=# select build_time();
build_time
------------------------------
Sat Sep 2 02:27:06 CST 2023
(1 row)
kingbase=# select build_version();
build_version
---------------
fc20f39d407
(1 row)
KES 中如何禁用角色
在 KES 中可以使用 roledisable 扩展来管理角色,进行启用或禁用设定。
-
安装扩展
kingbase=# create extension roledisable;
CREATE EXTENSION
kingbase=# \dx roledisable
List of installed extensions
Name | Version | Schema | Description
-------------+---------+-------------+-----------------------------
roledisable | 1.0 | roledisable | Kingbase role disable Check
(1 row)
-
查看角色状态
kingbase=# select * from roledisable.sys_role_status;
oid | rolename | status
------+---------------------------+--------
4200 | pg_signal_backend | Enable
4102 | kcluster | Enable
4569 | pg_read_server_files | Enable
10 | system | Enable
4570 | pg_write_server_files | Enable
4571 | pg_execute_server_program | Enable
3375 | pg_read_all_stats | Enable
3373 | pg_monitor | Enable
8 | sso | Enable
3374 | pg_read_all_settings | Enable
3377 | pg_stat_scan_tables | Enable
9 | sao | Enable
(12 rows)
-
新建角色 r1,并禁用角色
kingbase=# create role r`;
CREATE ROLE
kingbase=# alter role r1 disable;
ALTER ROLE
-
验证,r1 角色已禁用
kingbase=# select * from roledisable.sys_role_status where rolename = 'r1';
oid | rolename | status
-------+----------+---------
16394 | r1 | Disable
(1 row)
kingbase=# set role r1;
ERROR: ROLE r1 has been disabled.
到此,相信你已经对 KES 有了初步了解,由于篇幅原因,关于 KES 的内容暂且分享到这里。
总结
本文介绍了如何使用 ollma 快速搭建私有 AI 知识库,并借助知识库快速学习金仓数据库 KES。
未来,我们还可筹备更多资源完善大语言模型,并导入更多金仓数据库的学习资料,利用大语言模型整合知识和信息。并基于此,使得初学者在对话交互中理解金仓数据库的基本概念,解决遇到的问题。同时,可以助力金仓数据库进一步解放一线销售或技术支持的生产力。
作为数据库领域的“国家队”,期待人大金仓突破“数据库+AI”的落地,推动新质生产力发展,进一步提升国际市场竞争力。
🌻 往期精彩 ▼
[Oracle]
-
Oracle 数据库全面升级为 23ai -
python-oracledb 已率先支持 Oracle 23ai -
一文带你了解 Oracle 23ai 新特性 Vector 的基础用法
[MySQL]
-
「合集」MySQL 8.x 系列文章汇总 -
如何选择适合的 MySQL Connector/J 版本 -
MySQL 8.4.0 LTS 发布 (MySQL 第一个长期支持版本)
[TiDB]
-
星辰考古:TiDB v1.0 再回首 -
TiDB x KubeBlocks 集成案例 -
TiDB v7.5.0 LTS 升级必读 | 新特性补充说明
[PG]
-
哈喽,国产数据库!Halo DB! -
即将告别PG 12,建议升级到PG 16.3版本 -
后 EL 7 时代,PG 16 如何在 CentOS 7 上运行
-- / END / --
👉 这里可以找到我
-
微信公众号:少安事务所 (mysqloffice) -
墨天轮: 严少安 -
ITPUB: 少安事务所
如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!(๑˃̵ᴗ˂̵)
本文由 mdnice 多平台发布