龙空技术网

Oracle向量数据类型及数据加载

贺友胜 53

前言:

如今兄弟们对“oracle数据导出csv文件”都比较着重,兄弟们都需要剖析一些“oracle数据导出csv文件”的相关知识。那么小编在网摘上汇集了一些有关“oracle数据导出csv文件””的相关资讯,希望我们能喜欢,朋友们快快来了解一下吧!

Oracle 23ai 引入了原生向量数据类型 Vector,Oracle 多模融合数据库从此正式拥有的向量数据库这种新的模态。

--email tableCREATE TABLE emails(    email_id NUMBER PRIMARY KEY,    email VARCHAR2(150) NOT NULL,    embedding VECTOR(*,FLOAT32));

定义表时指定 VECTOR 数据类型,参数是 VECTOR(维度,数字类型),维度和数字类型均可不指定;不指定时维度会根据插入的数据自动计算出来,数字类型则通常默认为 FLOAT32。数字类型最好预先指定,与Embedding模型的输入数字类型一致,避免可能的类型推导错误。

向表中插入数据跟平时的SQL insert 语句并没什么区别,比如:

insert into emails values (1, 'M31', 'abc@company.com', '[0,1,1,0,0]');commit;

向量相似度检索的核心方法是 VECTOR_DISTANCE,比如:

SELECT emailFROM emailsORDER BY VECTOR_DISTANCE( embedding, to_vector('[0,3,3,0,0]'), COSINE )FETCH FIRST 3 ROWS ONLY;

向量数据可以从别的数据库导出,然后再导入Oracle数据库。导出的向量数据可以是文本CSV格式,也可以是更高效的二进制向量格式;其它格式也可以转换为二进制向量格式。

SQL*Loader 是非常高效的数据导入工具,支持直接数据块路径加载方式(Direct path)。这里以导入文本CSV为例,将向量数据导入到Oracle数据库中:

sqlldr parfile=email.par--email tableCREATE TABLE emails(    email_id NUMBER PRIMARY KEY,    email VARCHAR2(150) NOT NULL,    embedding VECTOR(*,FLOAT32));-- email.dat1:john.doe@example.com:[0.816517174243927, 0.9929907321929932,...]2:jane.doe@example.com:[0.816517174243927, 0.9929907321929932,...]3:peter.doe@example.com:[0.816517174243927, 0.9929907321929932, ...]-- email.ctlload data into table emailsinsertfields terminated by ":"trailing nullcols(email_id,email,embedding char(32767) NULLIF EMBEDDING=BLANKS)--email.paruserid=user0/user0@<数据库地址>:1521/ai23pdb.cn.osc.oracle.comcontrol=email.ctllog=email.logbad=email.baddata=email.datdirect=true

更多详细资料以及用二进制方式导入,可以参考文档:

标签: #oracle数据导出csv文件