Oracle AI理论与实践,企业落地篇干货满满

news2024/12/24 10:02:12

最近也是看到了圈子里的一位DBA好友,领导安排的工作是让负责AI的落地,而且也作为他业绩考核的指标,作为1名15年的DBA老兵来说,让AI落地面临的困难重重。

AI已经逐渐侵入到实际的生活中,最近我也是参加了Oracle官方在中国区举办的首场Oracle Al专家培训,我也在这里谈谈DBA与AI之间的关系,同时分享下这次培训学习到的技能。

1.DBA与AI

了解AI+DB,学习AI+DB,成为AI+DBA,AI展现了越来越多令人惊叹的成果和应用,业界对AI的应用研究与实践探索也步入深水区,数据库作为重要的基础软件,其与AI的应用融合也进一步引起了大家的探索和想象。AI就是这样的一个未来的存在,但最终你会和他融合在一起,接受他给你带来的一切。

AI大模型在制造层面的落地并非一帆风顺。调研了解到,尤其制造类企业的数据量庞大且碎片化严重,导致数据难以被有效汇总和发挥价值,这也给传统DBA带来了严重的挑战。

2.Oracle向量化

2.1 向量检索

Oracle向量检索分为精确检索以及近似检索,使用向量检索使得能够高效地搜索与查询进行语义匹配的文本,那么这两者的区别是?

如果结果的准确性,毫无疑问,在需要遍历的向量数据集较小时,精确检索是较优的方式。

向量检索中,准确率和性能之间,往往需要寻找一个平衡。在大数据集上,为了提高性
能,利用索引进行向量近似检索是常用的方式。

常见的向量索引有HNSW和IVF两种,具体的创建方式查阅官方文档,大家可以对比一下执行计划的不同。

2.2 向量嵌入模型

我们的向量数据是业务系统提供的,向量的维度也很小。那么,在现实环境中,向量数据是如何来的?答案是向量嵌入模型,分为库外向量化操作以及库内向量化操作。局限于数据库硬件资源现状,往往库外向量化方式使用更多。

库外向量化

库外向量化指源数据由外部程序向量化之后,再插入或加载到数据库表中。可以使用
Python 程序将文本数据向量化之后,再调用Oracle客户包将数据插入到数据库中。

库内向量化

Oracle 数据库提供了库内向量化的特性,无需依赖外部的程序,这种方式很大程序的简化了向量数据的加载和检索,非常方便。

1.先将模型文件上传到/u01/models目录
2.创建数据库目录指向模型文件所在目录
create or replace directory MODELS_DIR as '/u01/models';
3.导入模型
BEGIN
DBMS_VECTOR.LOAD_ONNX_MODEL(
directory => 'MODELS_DIR',
file_name => 'bge-base-zh-v1.5.onnx',
model_name => 'mydoc_model'
);
END;
/

4.相似度检索
select document,
json_value(cmetadata, '$.source') as src_file
from lab_vecstore2
where dataset_name='oracledb_docs'
order by 
VECTOR_DISTANCE(embedding, 
VECTOR_EMBEDDING(mydoc_model USING 'Oracle
23ai有哪些新特性?' as data), COSINE)
FETCH APPROX FIRST 3 ROWS ONLY;

3.Oracle向量与RAG应用

在RAG的解决方案中,组件要素主要包括:大语言模型(LLM)、向量嵌入模型(embedding model)、向量数据库 以及 Rerank模型。

3.1 LLM对话

近年来,大语言模型 (LLM) 在语言理解和生成方面展现出了革命性的能力,但同时也面临着幻觉和内部知识过时等固有局限性。鉴于 RAG 在提供最新和有用辅助信息方面的强大能力,检索增强大语言模型应运而生,它利用外部权威知识库而不是仅仅依靠模型的内部知识来增强 LLM 的生成质量。

从下图可以看出,使用了RAG结合LLM后,输出的结果更为精准

3.2 向量化流水线

Oracle数据库提供一系列工具,让用户可以用极简单的方式将源数据向量化并加载到数据库中,在这里可以给大家分享一个文件加载检索的案例,比如
PDF文件 --> 文件文件 --> 文件分块 --> 生成向量数据

Oracle 数据库提供了一系列的工具方法,以方便向量的操作。
这些方法主要封装在 DBMS_VECTOR 
DBMS_VECTOR_CHAIN 这两个包中,可以直接调用。
例如:
1.dbms_vector_chain.utl_to_text:
将文件转换为文本格式,如PDF格式转换为文本格式。
2.dbms_vector_chain.utl_to_chunks: 
将文档以块的形式拆分成多个块
3.dbms_vector_chain.utl_to_embeddings:
将文档块进行向量化(批量形式)。
4.dbms_vector_chain.utl_to_generate_text:
调用大语言模型,生成RAG结果。

对于RAG应用,能否生成高质量的回答,除了大语言模型本身的能力外,还取决于高质量的输入文档和文档拆分技术或方式、构建相对合理的提示词(提示工程)、等等其它诸多方面,需要结合实际情况综合考虑。

4.总结

AI的发展趋势是我们无法左右的,AGI将会逐渐成熟,并深度影响整个世界,因此DBA要做好与AGI共存的准备,AI就是这样的一个未来的存在,但最终你会和他融合在一起,接受他给你带来的一切。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2160641.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大模型下载、本地部署和调用攻略

零、下载大模型——以Qwen/Qwen2.5-7B为例 1、下载前的准备工作 1.1 仔细阅读模型的Model card介绍 里面会有支持的上下文长度、模型结构、参数量等基本信息 1.2 查看模型文件 Tokenizer相关的文件: merges.txt:这是用于Byte Pair Encoding&#xff…

git笔记之重置本地仓库所有分支和远程保持一致、工作区恢复干净,像刚clone下来一样

git笔记之重置本地仓库所有分支和远程保持一致、工作区恢复干净,像刚clone下来一样 code review! 文章目录 git笔记之重置本地仓库所有分支和远程保持一致、工作区恢复干净,像刚clone下来一样1.实现该功能的 Bash 脚本示例2.改进版:增加了gi…

【第十八章:Sentosa_DSML社区版-机器学习之协同过滤】

【第十八章:Sentosa_DSML社区版-机器学习之协同过滤】 1.算子介绍 协同过滤是推荐系统中常用的一种方法。该算法旨在填补用户-产品关联矩阵中缺少的项。在算法中,用户和产品都是通过一组少量的潜在因素描述,这些潜在因素可以用于预测用户-产…

彻底掌握Android中的ViewModel

彻底掌握Android中的ViewModel ViewModel 属于Android Jetpack库的一部分,是一种业务逻辑或屏幕状态容器。它提供了在配置更改(如屏幕旋转)后依旧保留相应状态的特性,帮助开发者以更加清晰和可维护的方式处理UI相关的数据&#x…

MySQL安装文档-Windows

文章目录 MySQL安装1. 安装2. 配置 MySQL安装 1. 安装 1). 双击官方下来的安装包文件 2). 根据安装提示进行安装 安装MySQL的相关组件,这个过程可能需要耗时几分钟,耐心等待。 输入MySQL中root用户的密码,一定记得记住该密码 2. 配置 安装好MySQL之后…

从零开始构建GPT风格的LLM分类器 微调GPT模型进行垃圾邮件分类

在这篇文章中,我想向您展示如何将预训练的大型语言模型(LLM)转变为强大的文本分类器。 为什么专注于分类? 首先,将预训练模型微调为分类器提供了一种温和而有效的微调入门方式。其次,许多现实世界和商业挑…

SpringBoot技术栈的网上超市开发实践

2 系统开发技术 这部分内容主要介绍本系统使用的技术,包括使用的工具,编程的语言等内容。 2.1 Java语言 Java语言自公元1995年至今,已经超过25年了,依然在软件开发上面有很大的市场占有率。当年Sun公司发明Java就是为了发展一门跨…

python类的call方法与init方法

1. call方法 在对象被调用了的时候就会调用call方法a(666) class A:def __call__(self, args):print(call 方法被调用了,args) aA() a(666) 2.init方法 创建对象的时候 init 方法被调用 class A:def __init__(self,args):print(创建对象的时候 init 方法被调用了,args) aA(…

shardingjdbc-读写分离配置

文章目录 1、application.yml2、shardingsphere.yaml3、创建实体类 User4、创建 UserMapper5、添加依赖6、读写分离测试7、事务测试 我们的主从复制已经提前搭建好: mysql-搭建主从复制:https://blog.csdn.net/m0_65152767/article/details/142214434 1…

使用 Python 模拟光的折射,反射,和全反射

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

【一句话点破】【C++重要题目】基类与派生类的成员变量值被对象调用的结果(二)

【一句话点破】基类/派生类的成员变量由哪个对象初始化的&#xff0c;哪个对象调用该成员变量时就用由它初始化的值 [尤其找准是基类对象or派生类对象的值] 【重要例题】15浙工大卷二读程序5题 可运行代码如下 #include "bits/stdc.h" #include<iostream> u…

畅阅读微信小程序

畅阅读微信小程序 weixin051畅阅读微信小程序ssm 摘 要 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用j…

CVE-2024-1112 Resource Hacker 缓冲区溢出分析

漏洞简述 CVE-2024-1112 是 Resource Hacker 软件的一个缓冲区溢出漏洞。该漏洞存在于版本 3.6.0.92 中。由于软件在处理命令行中的文件路径时未对文件字符串长度进行限制&#xff0c;过长的字符串参数导致内存被过度写入&#xff0c;从而引发缓冲区溢出。 漏洞复现 构造长度…

简单的评论系统【JavaScript】

这段代码实现了一个简单的评论系统&#xff0c;用户可以输入评论并提交&#xff0c;评论会显示在页面上&#xff0c;同时可以通过点击“删除”按钮来删除相应的评论。 实现效果&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"zh"><head…

Excel名字查重筛选,查找重复内容原来这么简单

大家好&#xff0c;这里是效率办公指南&#xff01; &#x1f50d; 在处理大量数据时&#xff0c;尤其是人员名单或客户信息时&#xff0c;确保没有重复的名字是非常重要的。在Excel中&#xff0c;有几种方法可以帮助我们快速查找和处理重复的名字。今天&#xff0c;我们将介绍…

2024年9月24日历史上的今天大事件早读

1550年9月24日 明代戏剧家汤显祖出生 1852年9月24日 法国人吉法尔制造的用蒸汽机推进的飞船试飞成功 1884年9月24日 中国近代化学的先驱徐寿逝世 1905年9月24日 吴樾壮炸五大臣&#xff0c;身殉革命 1909年9月24日 京张铁路通车 1910年9月24日 剧作家曹禺诞生 1930年9月2…

Python基础练习题‌100道电子版及源码文件

Python基础练习题‌&#xff0c;旨在帮助学习者巩固和提升Python编程技能。以下是一些精选的练习题目&#xff0c;包括但不限于&#xff1a; 基础语法练习‌&#xff1a;涉及变量定义、数据类型、运算符、条件语句、循环等基础语法结构的应用。例如&#xff0c;编写程序来处理数…

使用Adobe XD进行制作SVG字体

制作SVG字体的办法有很多&#xff0c;我这里选择了Adobe XD进行制作。 1.选择画布尺寸 2 输入文本 设置字体样式 3 设置画布背景 4 转换字体&#xff08;物件&#xff09;路径 5 设置组 复制SVG代码 6 放入到Html中 <!DOCTYPE html> <html lang"zh">&l…

稀疏向量 milvus存储检索RAG使用案例

参考&#xff1a; https://milvus.io/docs/hybrid_search_with_milvus.md milvus使用不方便&#xff1a; 1&#xff09;离线计算向量很慢BGEM3EmbeddingFunction 2&#xff09;milvus安装环境支持很多问题&#xff0c;不支持windows、centos等 在线demo&#xff1a; https://co…

基于单片机的智能窗帘控制系统-设计说明书

设计摘要&#xff1a; 智能窗帘控制系统是一种利用单片机技术实现的智能化控制系统&#xff0c;可以实现窗帘的自动开合和定时控制功能。本系统的设计基于单片机技术&#xff0c;结合传感器、电机和执行器等硬件设备&#xff0c;实现对窗帘的智能化控制。通过传感器采集环境信…