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

相关文章

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

springboot security快速使用示例详解

《springbootsecurity快速使用示例详解》:本文主要介绍springbootsecurity快速使用示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录创www.chinasem.cn建spring boot项目生成脚手架配置依赖接口示例代码项目结构启用s

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应