Oracle AI Vector Search:数据库圈的"语义革命"

做了这么多年数据库,咱们打交道最多的还是那些传统的SQL操作。LIKE、FULLTEXT索引、模糊匹配……这些工具我们用了多少年?但随着ChatGPT、大模型这些AI技术的爆发,搜索的方式正在悄悄发生变化。

Oracle这次在AI Database 26ai里搞了个大动作—— AI Vector Search 。说实话,第一次接触这个概念时我也挺纳闷的,这玩意儿到底能干啥?

简单说,它让数据库不再是简单的"关键词匹配",而是能理解"语义"。你搜"可爱的小动物",数据库能聪明地找到"小狗"或"小猫"的内容,就算原文里压根没出现这些字眼。

这就是向量搜索的魔力。

VECTOR数据类型:Oracle的AI新招

Oracle这次直接搞了个新的数据类型叫VECTOR。咱们以前用的是NUMBER、VARCHAR2、CLOB,现在又多了个VECTOR。

来看个简单的例子:


CREATE 
TABLE docs 
(

   doc_id INT ,
   doc_text CLOB ,
   doc_vector VECTOR
) ;

就这么简单!业务数据和向量可以放在一张表里,不用搞什么ElasticSearch、不用额外部署MongoDB,Oracle自己就搞定了。

不过有个前提,你的 COMPATIBLE 参数得调到23.4.0以上。这个参数咱们做DBA的都知道,控制着数据库能用哪些新特性。

有个细节可能大家会忽略:VECTOR不仅能做相似性搜索,还能直接喂给机器学习算法。分类、异常检测、回归、聚类……这些从23.7版本开始都支持了。想想看,以前搞机器学习得把数据导出来,现在在数据库里就能搞定,省了多少事。

向量嵌入:把"意思"变成"数字"

说实话,"向量嵌入"这个词听起来挺玄乎的。但理解了原理其实很简单。

咱们人类理解的"意思",机器把它变成"数字",然后在多维空间里一放,意思相近的东西就靠得近,意思相差悬殊的就离得远。

打个比方:在向量空间里,"狗"和"狼"的距离,比"狗"和"猫"的距离要近。这意味着在机器眼里,狗和狼更像——这跟咱们的直觉是一致的。

这就是向量搜索的核心思想: 距离即相似度

实际上已经在用这些技术了

咱们平时用的很多应用,背后都是这套路子:

  • Siri、小爱同学这些语音助手

  • 各类聊天机器人

  • 翻译软件

  • 推荐系统(电商平台猜你喜欢、视频推荐)

  • 视频搜索和识别

相似性搜索:从"找字"到"找意思"

传统搜索是找字,向量搜索是找意思。

这话什么意思?比如你搜"办公软件",传统搜索只能找包含"办公软件"这四个字的内容。但向量搜索能理解你的意图,可能给你推荐WPS、Office、Google Docs这些相关产品,就算描述里压根没出现"办公软件"这几个字。

搜索是怎么实现的?

技术上叫KNN(K-Nearest Neighbors),就是找K个最近的邻居。流程大概是这样:

  1. 把你的搜索词也变成一个向量

  2. 计算这个向量和数据库里所有向量的距离

  3. 按距离排序,取前K个

距离怎么算?常用的有三种:

  • 欧几里得距离 :就是咱们在初中数学学的两点间距离

  • 余弦相似度 :更关注方向,不看长度

  • 曼哈顿距离 :像是在城市里走路,只能横着走竖着走

精准还是快速?这是个问题

向量数据在空间里不是均匀分布的,而是喜欢"扎堆"。意思相近的都凑在一起,形成一个个的簇群。

这就带来了两种搜索方式:

精确搜索 :挨个儿找,保证不错过,但是慢。就像你在商场里找东西,把每家店都逛一遍。

近似搜索 :利用索引快速定位,可能会有误差,但快多了。就像你有导购告诉你大概在哪个楼层。

生产环境里,一般用近似搜索。为啥?速度快啊!

向量嵌入模型:从人工到AI的进化

现在聊聊向量怎么来的。主要有两种方式。

方式一:人工定义

靠专家经验,手动定义维度。比如形容一个人,可以定义身高、体重、年龄、收入……每个维度给个数值,组合起来就是这个人的向量。

这种方式理论上可行,但问题很明显:太依赖专家经验,而且不同场景定义的维度完全不一样,不好推广。

方式二:神经网络(现在是主流)

现在主流都是用神经网络自动生成向量。文本用Transformer,图像用ResNet,音频转成谱图也能用图像模型处理。

常用的模型有哪些?

数据类型 推荐模型 说明
文本 Sentence Transformers 转换单词、句子、段落
图像 ResNet (Residual Network) 图像识别的老牌模型
音频 视觉谱图 把声音变成图像,再按图像处理

Oracle里怎么用这些模型?

这块Oracle设计得挺灵活,给了两种选择。

选择一:外部生成向量

在外部用Python跑模型,生成向量后存到Oracle。这种方式适合批量处理,或者你已经有一套成熟的外部向量生成流程。

选择二:模型导入Oracle

把ONNX格式的模型直接导入Oracle,用SQL就能生成向量。Oracle在数据库里内置了ONNX运行时。

这种方式的优点:

  • 数据不出库,安全

  • 实时生成向量方便

  • 充分利用数据库算力

  • 架构简单

我的建议:

如果你的数据特别敏感,必须留在数据库里;或者需要实时生成向量;又或者你的数据库硬件很强,那就把模型导入数据库。

反之,如果是批量处理,而且你已经有现成的外部流程,那就保持现状,不用折腾。

说到底,Oracle AI Vector Search代表了一个趋势:数据库厂商不再满足于只做数据的"存储容器",而是向"智能平台"演进。

对于咱们做数据库的来说,这个技术有几个点值得关注:

  1. 技术融合 :传统关系型数据库和AI技术开始深度融合

  2. 架构简化 :不用再搞那么多外部组件,Oracle自己能搞定

  3. 企业级保障 :Oracle的东西,稳定性和可靠性是有保证的

从职业发展的角度看,了解和掌握向量搜索技术,对咱们DBA和数据库开发者来说,是个加分项。毕竟AI已经是不可逆的趋势了。


请使用浏览器的分享功能分享到微信等