借助大语言模型快速学习金仓数据库 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

相关文章

C#借助Spire.XLS for .NET实现在Excel中添加文档属性

《C#借助Spire.XLSfor.NET实现在Excel中添加文档属性》在日常的数据处理和项目管理中,Excel文档扮演着举足轻重的角色,本文将深入探讨如何在C#中借助强大的第三方库Spire.... 目录为什么需要程序化添加Excel文档属性使用Spire.XLS for .NET库实现文档属性管理Sp

Python实现快速扫描目标主机的开放端口和服务

《Python实现快速扫描目标主机的开放端口和服务》这篇文章主要为大家详细介绍了如何使用Python编写一个功能强大的端口扫描器脚本,实现快速扫描目标主机的开放端口和服务,感兴趣的小伙伴可以了解下... 目录功能介绍场景应用1. 网络安全审计2. 系统管理维护3. 网络故障排查4. 合规性检查报错处理1.

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

C语言逗号运算符和逗号表达式的使用小结

《C语言逗号运算符和逗号表达式的使用小结》本文详细介绍了C语言中的逗号运算符和逗号表达式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习... 在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接其一般形式为:表达

Go语言实现桥接模式

《Go语言实现桥接模式》桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化,本文就来介绍一下了Go语言实现桥接模式,感兴趣的可以了解一下... 目录简介核心概念为什么使用桥接模式?应用场景案例分析步骤一:定义实现接口步骤二:创建具体实现类步骤三:定义抽象类步骤四:创建扩展抽象类步

GO语言实现串口简单通讯

《GO语言实现串口简单通讯》本文分享了使用Go语言进行串口通讯的实践过程,详细介绍了串口配置、数据发送与接收的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录背景串口通讯代码代码块分解解析完整代码运行结果背景最近再学习 go 语言,在某宝用5块钱买了个

MySQL MHA集群详解(数据库高可用)

《MySQLMHA集群详解(数据库高可用)》MHA(MasterHighAvailability)是开源MySQL高可用管理工具,用于自动故障检测与转移,支持异步或半同步复制的MySQL主从架构,本... 目录mysql 高可用方案:MHA 详解与实战1. MHA 简介2. MHA 的组件组成(1)MHA

SpringCloud Stream 快速入门实例教程

《SpringCloudStream快速入门实例教程》本文介绍了SpringCloudStream(SCS)组件在分布式系统中的作用,以及如何集成到SpringBoot项目中,通过SCS,可... 目录1.SCS 组件的出现的背景和作用2.SCS 集成srping Boot项目3.Yml 配置4.Sprin

SpringBoot集成iText快速生成PDF教程

《SpringBoot集成iText快速生成PDF教程》本文介绍了如何在SpringBoot项目中集成iText9.4.0生成PDF文档,包括新特性的介绍、环境准备、Service层实现、Contro... 目录SpringBoot集成iText 9.4.0生成PDF一、iText 9新特性与架构变革二、环