借助大语言模型快速学习金仓数据库 KES

2024-06-13 14:12

本文主要是介绍借助大语言模型快速学习金仓数据库 KES,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

alt

基础概念

KES

人大金仓数据库管理系统 KingbaseES(KES) 是由 北京人大金仓信息技术股份有限公司 (以下简称“人大金仓”)自主研发的面向全行业、全客户关键应用的企业级大型通用数据库管理系统。产品融合了人大金仓在数据库领域几十年的产品研发和企业级应用经验,适用于联机事务处理、查询密集型数据仓库、要求苛刻的互联网应用等场景,提供全部应用开发及系统管理功能,提供性能增强特性,可支持主备集群、读写分离集群、多活共享存储集群等全集群架构,具有高性能、高安全、高可用、易使用、易管理、易维护的特点,支持所有国内外主流CPU、操作系统与云平台部署。

人大金仓 成立于1999年,是成立最早的拥有自主知识产权的国产数据库企业,也是 中国电子科技集团 (简称“CETC”)成员企业。

LLM

大语言模型(Large Language Model,LLM)是一种基于深度学习的自然语言处理(NLP)模型,其特点是拥有极其庞大的参数量,通常在几十亿到几百亿个参数之间,有时甚至超过一万亿参数。这些模型通过训练在海量文本数据上学习到语言的规律和模式,从而能够理解和生成人类语言,执行多种自然语言处理任务,如文本生成、问答、文本分类、摘要、翻译、对话系统、代码编写等。

随着技术的发展,大语言模型的性能不断提升,越来越受到学术界和工业界的关注,如何私有化部署大语言模型也提上了议题。

本文将介绍如何在本地使用 LLM 搭建一个私有知识库,并基于此来帮助我们更快速的学习金仓数据库。

Ollama + Open WebUI 搭建知识库

Ollama

Ollama 是一个允许你在本地运行开源LLM的开源软件(OSS)。

目前 Star 数为 67K+

alt

支持常见的LLM,如:

  • Llama 3

Meta Llama 3 是迄今为止最强大的公开可用 LLM,由 Meta 公司开发,提供 8B 和 70B 参数大小。

Llama 3 指令调整模型针对对话/聊天用例进行了微调和优化,在常见基准测试中优于许多可用的开源聊天模型。

Llama 3 比 Llama 2 和其他公开可用的模型有了很大的改进:

  1. 在比 Llama 2 大七倍的数据集上进行训练
  2. Llama 2 的上下文长度是 8K 的两倍
  3. 使用具有 128K 标记的更大标记词汇表更有效地编码语言
  4. 与 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,主要步骤如下。

  1. 下载 Ollama 和 Llama 3

本文所使用的是开源大模型和软件,源代码在 GitHub 上。Linux 环境中只需一条命令即可下载安装。

curl -fsSL https://ollama.com/install.sh | sh

下载完成后,会自动运行。

命令端交互访问示例:

alt
  1. 下载 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
  1. 准备 KES 相关资料

将准备好的人大金仓数据库相关资料导入到模型中。

但需注意的是,在没有 GPU 的条件下,大模型可以使用 CPU 作为算力,但十分消耗资源。

alt

而且 LLM 生成的文字内容准确率有待考证,仍需人工校对。

一起来了解 KES

下面一起来了解学习金仓数据库 KES。

KES 介绍

1. 人大金仓数据库支持几种架构

Llama 3 模型的回答:

alt

看来 llama 3 对中文的响应真的不够好,我们切换到 llama2-chinese 模型看看。

llama2-chinese 模型的回答:

alt

作者回答:

  • KingbaseES 集中式
  • KingbaseRWC 读写分离集群
  • KingbaseRAC 共享存储集群
2. 人大金仓数据库 KES 的产品优势有哪些?

llama2-chinese 模型的回答:

alt

作者回答:

  • 迁移开发 简单高效
  • 高度容错 稳定可靠
  • 性能强劲 表现出众
  • 系统自治 简单易用
  • 纵深防御 确保安全
  • 全面兼容 深度适配
3. 人大金仓数据库如何助力企业完成国产化替代

llama2-chinese 模型的回答:

alt

作者回答:

以下是人大金仓数据库助力企业完成国产化替代的几个关键点:

  1. 技术创新和自主研发
  2. 自主可控、安全可靠的产品体系
  3. 全面的数据库产品线
  4. 降低迁移成本和门槛
  5. 产业链合作,成熟的解决方案

等等。

也许是演示环境的资源有限,或者大模型调试不够,信息提取、处理效果并不理想,还需要各方面的投入才能实现商用。

接下来由我继续为大家介绍 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 的方式很多,这里介绍两种。

  1. 通过 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)
  1. 通过 KStudio 图形化工具连接 KES 服务器。

KStudio 是金仓自主研发的一款功能强大的数据库管理工具,可为数据库开发人员、DBA提供数据库开发、调试、维护等各项功能,完美支持金仓数据库。

alt

管理 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 扩展来管理角色,进行启用或禁用设定。

  1. 安装扩展
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)
  1. 查看角色状态
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)
  1. 新建角色 r1,并禁用角色
kingbase=# create role r`;
CREATE ROLE
kingbase=# alter role r1 disable;
ALTER ROLE
  1. 验证,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 多平台发布

这篇关于借助大语言模型快速学习金仓数据库 KES的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1057532

相关文章

数据库oracle用户密码过期查询及解决方案

《数据库oracle用户密码过期查询及解决方案》:本文主要介绍如何处理ORACLE数据库用户密码过期和修改密码期限的问题,包括创建用户、赋予权限、修改密码、解锁用户和设置密码期限,文中通过代码介绍... 目录前言一、创建用户、赋予权限、修改密码、解锁用户和设置期限二、查询用户密码期限和过期后的修改1.查询用

mysql数据库分区的使用

《mysql数据库分区的使用》MySQL分区技术通过将大表分割成多个较小片段,提高查询性能、管理效率和数据存储效率,本文就来介绍一下mysql数据库分区的使用,感兴趣的可以了解一下... 目录【一】分区的基本概念【1】物理存储与逻辑分割【2】查询性能提升【3】数据管理与维护【4】扩展性与并行处理【二】分区的

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Go语言实现将中文转化为拼音功能

《Go语言实现将中文转化为拼音功能》这篇文章主要为大家详细介绍了Go语言中如何实现将中文转化为拼音功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 有这么一个需求:新用户入职 创建一系列账号比较麻烦,打算通过接口传入姓名进行初始化。想把姓名转化成拼音。因为有些账号即需要中文也需要英

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1