大家好,我是 JiekeXu,江湖人称“强哥”,荣获 Oracle ACE Pro 称号,墨天轮 MVP,墨天轮年度“墨力之星”,拥有 Oracle OCP/OCM 认证,MySQL 5.7/8.0 OCP 认证以及 PCA、PCTA、OBCA、OGCA、KCP 等众多国产数据库认证证书,今天和大家一起来看看 Oracle All In AI 国产数据库跟不跟?欢迎点击最上方蓝字“JiekeXu DBA之路”关注我的微信公众号,然后点击右上方三个点“设为星标”置顶,更多干货文章才能第一时间推送,谢谢!
前 言
众所周知,Oracle 在 2018 年的时候就宣称发布了自治数据库 Autonomous Database(ADB),ADB 是基于人工智能和机器学习技术的数据库产品,该产品的推出标志着 Oracle 进入了一个新的时代——数据库的“自动驾驶”时代,可惜的是这是一款云数据库产品,本地部署模式无法使用,但在今年 5 月发布的 Oracle 23ai Free 版本的本地数据库中,我们可以体验向量相关能力,旨在增强数据库的 AI 处理能力和数据检索效率,因为目前如果想体验 AI 自然语言查询等相关功能,需要借助 GPT 功能才可以。Oracle 迟迟没有发布本地部署的 Oracle 23ai 版本,AI 相关的具体能力暂时只能通过官方文档捕获。
顺便说一句,Oracle 23ai 在 Oracle Exadata 数据库服务、Oracle Exadata Cloud@Customer 和 Oracle Base Database Service 上的 OCI 以及 Oracle Database@Azure 上提供,本地部署暂未发布,仅可使用开发测试 23ai Free 版本。
Oracle AI
在过去的一年时间里,Oracle 在 AI 方面的新闻隔三差五的接踵而来,最劲爆的当属今年四月份花 80 亿美元在日本投资 AI 和云计算,接着在今年五一发布 Oracle 23ai 版本,支持向量搜索等 300 多项新特性,后面接着又与 OpenAI、AWS、Google、Azure 等云厂商合作,几乎就是 All in AI,紧跟互联网热潮,如下是今年 Oracle 与 AI 相关的新闻标题,详细信息可在官网 news 板块查看。
https://www.oracle.com/news/
4 月 17 日,Oracle 将在日本投资超过 80 亿美元用于云计算和 AI;
5 月 2 日,Oracle Database 23ai 将 AI 的强大功能引入企业数据和应用
https://www.oracle.com/news/announcement/oracle-announces-availability-database-23ai-with-ai-vector-search-2024-05-02/
6 月 11 日,OpenAI 选择 Oracle 云基础设施来扩展 Microsoft Azure AI 平台;
6 月 20 日,Oracle 将在西班牙投资超过 10 亿美元用于 AI 和云计算;
9 月 8 日,Oracle 和 AWS(Amazon Web Services) 宣布建立战略合作伙伴关系;
9 月 8 日,Oracle 和 Google Cloud 宣布全面推出 Oracle Database@Google Cloud;
9 月 10 日,Oracle 提供强大的生成式 AI RAG 代理和增强的 AI 服务来帮助客户解决业务问题;
9 月 11 日,Oracle 通过 AWS、Google Cloud 和 Microsoft Azure 扩展多云功能;
内置向量数据库:
向量数据类型:Oracle 23ai 引入了新的向量数据类型 VECTOR,可以用于存储和处理复杂的非结构化数据,如文档、图像等。
向量索引:支持创建向量索引,提高向量数据的查询性能。
向量搜索 SQL 运算符:提供了专门的 SQL 运算符,用于执行向量相似性查询,如 VECTOR_DISTANCE、VECTOR_AVG、VECTOR_DIMENSIONS_COUNT 和 VECTOR_NORM。
AI 能力:
内置 ONNX 模型数据处理:支持 ONNX(Open Neural Network Exchange)模型,可以在数据库内部直接处理和应用机器学习模型。
Text2SQL:内置的 Text2SQL 功能,可以将自然语言查询转换为 SQL 语句,简化数据查询和应用开发。
持续增强的机器学习算法:提供了更多的机器学习算法和工具,支持更复杂的 AI 应用。
RAG 技术:
检索增强生成(RAG):结合大模型和私有商业数据,提高生成内容的准确性和商业价值。RAG 技术通过将私有数据包含在大模型训练数据中,避免泄露私有数据,同时提高生成内容的质量。
Oracle AI Vector Search 使用案例流程图
OceanBase
2024 年 10 月 23 日,OceanBase 年度发布会在北京望京顺利召开。本次发布会上,OceanBase 推出了两个里程碑版本:面向 OLTP、多模融合一体化的全新长期支持版本 OceanBase 4.2.5 LTS 版本和面向实时 AP 场景的首个 GA 版本 4.3.3,对分析处理(AP)场景进行了大幅性能优化,特别是在海量数据分析时,显著缩短响应时间并提升吞吐能力。同时,4.3.3 引入了向量检索能力,通过向量多模一体化能力,极大简化 AI 应用的技术栈,帮助企业高效构建 AI 应用。
那么,对于这两个新版本我这里简单介绍一下,更多详细信息请查看官方发布会或者官网。OB 4.2.5 LTS 版本相对于 4.2.1 LTS 版本的 Sysbench 基准测试读写性能提升 26%,批量写入性能提升 54%;在 Oracle 和 MySQL 兼容性方面得到加强,Oracle 租户引入了 SPM,优化了复杂查询能力等,另外 4.2.5 新增了对 OBKV-Redis 模型的支持,提升了 HBase 的兼容性。
OB 4.3.3 在向量融合查询的关键能力上取得显著突破,能够构建 1 PB 的实时数仓,对于 OLAP 场景进行大幅性能优化,推出全新向量检索功能,文档检索,实现 SQL+AI一体化,加速 RAG (Retrieval-Augmented Generation) 检索增强生成、智能推荐、多模态搜索等业务场景的落地。接下来是 OB 25 年的产品路线图。
在 OB 发布会现场,除了 AI 这块我比较感兴趣,还有 OB 新的一体机 OceanBase Data Machine,ODM 也比较有兴趣,午饭后在场地和展台的工程师也简单聊了聊,¼ 配置,½ 配置,¾ 配置以及满配 12 台节点搭载企业版 OB 4.2 或者 4.3 版本的数据库。满配情况下 tpmC 达到 465w, SQL 吞吐量达到 187GB 每秒,IOPS 达到 8709w。
另外还有 AI 动手实验室看着也不错,也在其展台驻足了许久,通过智谱和 OB 数据库可以搭建自己的 AI 聊天机器人,但由于时间关系我这里先不介绍了,感兴趣的朋友可以参考 gitee 文档自行体验,文档地址:https://gitee.com/oceanbase-devhub/ai-workshop-2024#oceanbase-ai-%E5%8A%A8%E6%89%8B%E5%AE%9E%E6%88%98%E8%90%A5
接下来的一点儿事件我们来挖一下 OB 官方文档,看看 4.3.3 版本对于向量检索能力都有哪些实验特性。
OB 向量检索
OceanBase 提供了存储、索引、检索 Embedding 向量数据的能力,支持将向量数据与其他数据一起存储,但此特性仅为实验特性,可应用于 RAG 和个性化推荐、图搜图/文本搜图等场景。OB 通过支持 16000 维度的向量数据类型以及基于内存的 Hierarchical Navigable Small World,HNSW 向量索引和向量搜索 SQL 运算符,它是一种内存索引,需要完整载入内存,支持 DML 和实时查询。这些向量特性和 Oracle 5 月份发布的向量搜索能力差不多,通过内存参数启用向量检索功能。
示例如下:
--启用向量检索功能
ALTER SYSTEM SET ob_vector_memeory_limit_percentage = 30;
--创建向量数据类型表
CREATE TABLE t1(
c1 INT,
c2 VECTOR(3),
PRIMARY KEY(c1),
VECTOR INDEX idx1(c2) WITH (distance=L2, type=hnsw)
);
--插入向量数据
INSERT INTO t1 VALUES(1, '[0.203846, 0.205289, 0.880265]');
INSERT INTO t1 VALUES(2, '[0.735541, 0.670776, 0.903237]');
INSERT INTO t1 VALUES(3, '[0.327936, 0.048756, 0.084670]');
--使用近似最近邻查询向量数据
SELECT * FROM t1
ORDER BY l2_distance(c2, [0.712338, 0.603321, 0.133444])
APPROXIMATE LIMIT 1;
OB 提供距离函数 L2_distance 欧几里得距离函数和 L1_distance 曼哈顿距离函数以及 cosine_distance 余弦相似度(cosine similarity),Inner_product 内积又称为点积或数量积函数,vector_distance 向量距离函数,Vector_norm 函数用于计算向量的欧几里得范数(模),Vector_dims 函数等七个函数来进行向量的计算,这也和 Oracle 今年发布的 23ai 版本差不多,但有一点就是 HNSW 索引能够支持 DML,Oracle 23ai 版本不能进行 DML 操作。
增量数据过多的情况下,查询性能会下降,为减小增量数据表的数据量,OceanBase 引入了 DBMS_VECTOR 对向量索引进行维护,可以使用增量刷新,如果建立索引后更新或删除数据较多,建议使用全量刷新。示例如下:
CREATE TABLE vector_index_test(c1 INT, c2 VECTOR(3), PRIMARY KEY(c1),
VECTOR INDEX idx1(c2) WITH (distance=l2, type=hnsw, lib=vsag));
INSERT INTO vector_index_test VALUES(1, '[0.203846,0.205289,0.880265]');
INSERT INTO vector_index_test VALUES(2, '[0.484526,0.669954,0.986755]');
INSERT INTO vector_index_test VALUES(3, '[0.327936,0.048756,0.084670]');
INSERT INTO vector_index_test VALUES(4, '[0.148869,0.878546,0.028024]');
INSERT INTO vector_index_test VALUES(5, '[0.334970,0.857377,0.886132]');
INSERT INTO vector_index_test VALUES(6, '[0.117582,0.302352,0.471198]');
INSERT INTO vector_index_test VALUES(7, '[0.551185,0.231134,0.075354]');
INSERT INTO vector_index_test VALUES(8, '[0.185221,0.315131,0.558301]');
INSERT INTO vector_index_test VALUES(9, '[0.928764,0.254038,0.272721]');
-- 触发增量更新
call dbms_vector.refresh_index('idx1', 'vector_index_test', 'c2', 1, 'FAST');
-- 触发全量更新
call dbms_vector.rebuild_index('idx1','t1','c2');
值得注意的是 OceanBase 未来计划会支持内置的 Embedding 方法和内置的模型算法,目前不支持,向量这个实验特性也是仅支持 MySQL 租户,OB Oracle 租户无法使用。
OB 一体化架构图
后面如果有时间,在找机会聊聊 OB 一体化架构,下图是一个 OceanBase 年度大事记。
大家也都知道,数据库发展的三个时代,成就了三种商业形态:
商业数据库时代:成就了商业软件行业; 开源数据库时代:成就了互联网; 云数据库时代:也是商业和开源的混合时代,成就了云企业和数字化企业。
最后,我只看到了 OB 对 AI、向量进行了简单的实验特性跟进并进行了相关的应用,Oracle 23ai 五月份才发布的新特性,OB 用了不到五个月的时间就快速跟进并实现了 HNSW,并会在明年上半年实现基于磁盘的向量算法,实属难得,点个赞。如果还有其他国产数据库也有 AI、向量相关的技术是我不知道的,这里有点抱歉了,也欢迎在评论区一起交流讨论。
参考链接
https://docs.oracle.com/en/database/oracle/oracle-database/23/vecse/oracle-ai-vector-search-workflow.html
https://www.oracle.com/news/announcement/oracle-announces-availability-database-23ai-with-ai-vector-search-2024-05-02/
https://gitee.com/oceanbase-devhub/ai-workshop-2024#oceanbase-ai-%E5%8A%A8%E6%89%8B%E5%AE%9E%E6%88%98%E8%90%A5
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001484238
https://www.oceanbase.com/conference2024?activityCode=4923042&officerId=3881#agenda
https://mp.weixin.qq.com/s/bC1dIANLqQOYXkOBguBB1Q
全文完,希望可以帮到正在阅读的你,如果觉得有帮助,可以分享给你身边的朋友,同事,你关心谁就分享给谁,一起学习共同进步~~~
欢迎关注我的公众号【JiekeXu DBA之路】,一起学习新知识!
分享几个数据库备份脚本
一文搞懂 Oracle 统计信息
我的 Oracle ACE 心路历程
MOP 系列|MOP 三种主流数据库索引简介
Oracle 主流版本不同架构下的静默安装指南
关机重启导致 ASM 磁盘丢失数据库无法启动
Oracle SQL 性能分析(SPA)原理与实战演练
Oracle 11g 升级到 19c 需要关注的几个问题
Windows 10 环境下 MySQL 8.0.33 安装指南
SQL 大全(四)|数据库迁移升级时常用 SQL 语句
OGG|使用 OGG19c 迁移 Oracle11g 到 19C(第二版)
Oracle 大数据量导出工具——sqluldr2 的安装与使用
Oracle ACE 视角下的国产数据库现状与选型及应对策略
从国产数据库调研报告中你都能了解哪些信息及我的总结建议
使用数据泵利用 rowid 分片导出导入 lob 大表及最佳实践
在归档模式下直接 rm dbf 数据文件并重启数据库还有救吗?
——————————————————————————
公众号:JiekeXu DBA之路
墨天轮:https://www.modb.pro/u/4347
CSDN :https://blog.csdn.net/JiekeXu
ITPUB:https://blog.itpub.net/69968215
腾讯云:https://cloud.tencent.com/developer/user/5645107——————————————————————————