数据库管理-第149期 Oracle Vector DB AI-01(20240210)

2024-02-12 14:20

本文主要是介绍数据库管理-第149期 Oracle Vector DB AI-01(20240210),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据库管理149期 2024-02-10

  • 数据库管理-第149期 Oracle Vector DB & AI-01(20240210)
    • 1 机器学习
    • 2 向量
    • 3 向量嵌入
    • 4 向量检索
    • 5 向量数据库
    • 5 专用向量数据库的问题
    • 总结

数据库管理-第149期 Oracle Vector DB & AI-01(20240210)

作者:胖头鱼的鱼缸(尹海文)
Oracle ACE Associate: Database(Oracle与MySQL)
网思科技 DBA总监
10年数据库行业经验,现主要从事数据库服务工作
拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证
墨天轮MVP、认证技术专家,ITPUB认证专家,OCM讲师
圈内拥有“总监”、“保安”、“国产数据库最大敌人”等称号,非著名社恐(社交恐怖分子)
公众号:胖头鱼的鱼缸;CSDN:胖头鱼的鱼缸(尹海文);墨天轮:胖头鱼的鱼缸;ITPUB:yhw1809。
除授权转载并标明出处外,均为“非法”抄袭。

在龙年到来之际,祝大家龙行龘龘,前程朤朤,生活鱻鱻。新的一年开始新的系列,来探索一下Oracle Vector DB(向量数据库)以及AI Vector Search(AI向量搜索)。本系列内容在Oracle DB 23c正式发布前仍可能出现变化,最终以Oracle DB 23c正式发布内容为准。

1 机器学习

首先,机器学习根据不同事物的特征来区分不同的事务。
例如:区分不同种类的狗,就可以通过体型大小、毛发长度、鼻子长短等特征来区分。如下面这张照片按照体型排序,可以看到体型越大的狗越靠近坐标轴右边,这样就能得到一个体型特征的一维坐标和对应的数值,从 0 到 1 的数字中得到每只狗在坐标系中的位置。
然而单靠一个体型大小的特征并不够,像图中哈士奇、金毛和拉布拉多的体型就非常接近,我们无法区分。
image.png
继续观察其它的特征,例如毛发的长短。这样每只狗对应一个二维坐标点,我们就能轻易的将哈士奇、金毛和拉布拉多区分开来。
image.png
只要维度够多,我们就能够将所有的事物区分开来,世间万物都可以用一个多维坐标系来表示,它们都在一个高维的特征空间中对应着一个坐标点。

2 向量

Vector,向量(也称为欧几里得向量、几何向量),指具有大小和方向的量。可以使用带箭头的线段表示,箭头指向即为向量的方向,线段的长度表示向量的大小。两个向量的距离或者相似性可以通过汉明距离、欧式距离或者余弦距离得到。

3 向量嵌入

Vector Embedding,一种自动化提取事物特征值的方法,用来生成高纬度的向量数据;图像、文本和音视频这种非结构化数据都可以通过某种变换或者嵌入学习转化为向量数据;使用深度学习嵌入模型来生成向量数据。

4 向量检索

图片、文本、视频和语音等非结构化数据,通过人工智能技术提取出特征向量,然后通过对这些特征向量的计算和检索来实现对非结构化数据的分析和检索。向量检索通常是近似查找,要权衡搜索精度和速度。
对比第一个节中的例子,不同种类的狗就会有有一系列诸如体型大小、毛发长度、鼻子长短等特组成的向量,首先我们会建立一个向量数据库用于存放各种狗的基础向量信息,由于狗存在变异的情况,那么一种狗可能存在多条向量条目。而当我们需要通过图像去判断狗的种类时,就需要通过与基础向量生产方式一样的算法来将图像内容嵌入成向量信息,并与向量数据库中的向量信息进行匹配,得到最接近的向量,对比对应的狗信息得到结果。

5 向量数据库

向量数据库是一种专门用于存储、索引和查询向量数据的数据库系统。
向量数据库能够将向量存储为高维点并进行检索。可以高效、快速地查找N维空间中的最近邻。
这些功能通常由 近似最近邻(ANN)索引提供支持,构建索引的算法有:分层可导航小世界(HNSW)和倒排文件索引(IVF)算法等。
向量数据库提供了其他功能,例如数据管理、容错、身份验证、访问控制以及查询引擎等。

与传统关系型数据库相比:

  • 数据类型:向量数据库专门用于存储和管理向量数据,而传统数据库则可以存储各种标量类型的数据,例如文本、数字、日期等。
  • 数据规模:通常向量数据库数据量比较大,一般要考虑可线性扩展的系统。
  • 查询方式:传统的数据库查询通常是一种精确查找,即查询得到的结果要么符合条件要么不符合条件;而向量数据库的向量查询通常是近似查找,即查询得到的结果是与输入条件最相似的,而近似比较对计算能力要求非常高。向量查询通常是计算密集型的。

image.png
下面是一些比较常见向量数据库及其对比(这里是从群聊聊天记录抽取,冯若航发的):
ca6a2798730489caf53f25cb716ba50.jpg

5 专用向量数据库的问题

其实在去年SACC上海站,我也大概讲过Oracle Vector DB的相关内容,业余国内外大型互联网公司深入探讨过向量数据库。专用的向量数据库确实可以针对AI向量检索场景提供非常好的功能与性能;但是当场景中需要对向量进行调整(即update)的时候,专用向量数据库就会出现无法更新的情况,只能标记并将修改内容新增至向量数据库中。这就造成了,需要调整向量的场景需要预留一定空间用于“更新”操作,另一方面向量数据库中会存在无效数据,不仅增大了空间占用也增加了性能损耗。
那么Oracle Vector DB是如何解决这些问题的呢,后面会深入讲解。

总结

本期简单讲解了机器学习、向量、向量数据库的基本概念,下一期将针对LLM进行简单介绍。
老规矩,知道写了些啥。

这篇关于数据库管理-第149期 Oracle Vector DB AI-01(20240210)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

SpringBoot 多环境开发实战(从配置、管理与控制)

《SpringBoot多环境开发实战(从配置、管理与控制)》本文详解SpringBoot多环境配置,涵盖单文件YAML、多文件模式、MavenProfile分组及激活策略,通过优先级控制灵活切换环境... 目录一、多环境开发基础(单文件 YAML 版)(一)配置原理与优势(二)实操示例二、多环境开发多文件版

如何通过try-catch判断数据库唯一键字段是否重复

《如何通过try-catch判断数据库唯一键字段是否重复》在MyBatis+MySQL中,通过try-catch捕获唯一约束异常可避免重复数据查询,优点是减少数据库交互、提升并发安全,缺点是异常处理开... 目录1、原理2、怎么理解“异常走的是数据库错误路径,开销比普通逻辑分支稍高”?1. 普通逻辑分支 v

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

使用shardingsphere实现mysql数据库分片方式

《使用shardingsphere实现mysql数据库分片方式》本文介绍如何使用ShardingSphere-JDBC在SpringBoot中实现MySQL水平分库,涵盖分片策略、路由算法及零侵入配置... 目录一、ShardingSphere 简介1.1 对比1.2 核心概念1.3 Sharding-Sp