9-Oracle 23 ai Vector Search 特性 知识准备

很多小伙伴是不是参加了免费认证课程(限时至2025/5/15)
Oracle AI Vector Search 1Z0-184-25考试,都顺利拿到certified了没。
各行各业的AI 大模型的到来,传统的数据库中的SQL还能不能打,结构化和非结构的话数据如何和AI交互,是否有一套SQL既可以兼容传统sql同时集成vector。
如何将企业中使用的数据保存成向量、是否有集成嵌入模型的引擎,同时给于RAG提供原料时,可以做到数据不离场、不离安全域,符合数据安全要求么。
在开始AI之前,先了解下基础概念,包括初高中几何、物理中的函数知识。

基本概念:

  1. 向量(Vector)​​:一种数据类型,用于表示嵌入(embedding)。在Oracle 23ai中,使用VECTOR数据类型存储。
  2. 向量嵌入(Vector Embedding)​​:将非结构化数据(如文本、图像)转换为向量表示的过程。
  3. 相似性搜索(Similarity Search)​​:通过计算向量之间的距离来查找相似的数据。支持精确搜索(Exact)和近似搜索(Approximate)。
  4. 向量索引(Vector Index)​​:加速相似性搜索的索引类型。包括:
  • In-Memory Neighbor Graph (HNSW)​​:基于图的索引,适用于高精度搜索。
  • Neighbor Partition (IVF)​​:基于分区的索引,适用于大规模数据。
  1. 混合向量索引(Hybrid Vector Index)​​:结合全文搜索(Oracle Text)和向量搜索的索引。
  2. 距离度量(Distance Metrics)​​:用于计算向量之间距离的函数,包括:
  • 欧几里得距离(Euclidean)
  • 余弦相似度(Cosine)
  • 点积(Dot Product)
  • 曼哈顿距离(Manhattan)
  • 汉明距离(Hamming) - 用于二进制向量
  • Jaccard距离 - 用于二进制向量

    L1_DISTANCE(曼哈顿距离)

    别名:城市街区距离、Taxicab距离
    定义:两点在标准坐标系上各维度绝对差之和,模拟网格路径(如城市街道)的行走距离。
    公式:d(x,y)=∑i=1n∣xi−yi∣
    特点:对异常值敏感,计算高效(无平方运算)。
    应用:棋盘游戏路径规划、稀疏高维数据(如文本分类)。

    L2_DISTANCE(欧几里得距离)

    别名:直线距离、欧氏距离定义:n维空间中两点间的直线最短距离,勾股定理的多维推广。
    公式:d(x,y)=∑i=1n(xi−yi)2
    几何意义:绿色线段为两点间最短路径。
    特点:对数据分布均匀性要求高,方向信息敏感。
    应用:物理空间测量、聚类分析(如K-Means)、图像相似性。

    COSINE_DISTANCE(余弦距离)

    别名:余弦相似度的补(1 - 余弦相似度)
    定义:两向量夹角余弦值的反度量,关注方向差异而非长度。
    公式:\text{cos_dist} = 1 - \frac{\mathbf{x} \cdot \mathbf{y}}{|\mathbf{x}| \cdot |\mathbf{y}|} = 1 - \cos \theta
    几何意义:夹角θ越小,余弦相似度越大,距离越小。
    特点:对幅度不敏感,适合文本、图像等高维稀疏数据。
    应用:文档相似度检索、推荐系统(如用户兴趣方向匹配)。

    INNER_PRODUCT(点积)

    别名:数量积、标量积
    定义:两向量对应分量乘积之和,结果为一标量。
    公式:x⋅y=∑i=1nxiyi几何意义:x⋅y=∥x∥∥y∥cosθ,即模长积与夹角余弦的乘积。
    物理意义:力F在位移s方向做的功 W=F⋅s。
    应用:机器学习特征组合(如神经网络权重计算)、投影分析。

    HAMMING_DISTANCE(汉明距离)

    定义:等长字符串/二进制串中,对应位置字符不同的数量。
    公式:dham(s1,s2)=∑i=1nI(s1[i]\=s2[i])比如:二进制串 10110 与 11010 的汉明距离 = 第2、4位不同 → 2。DNA序列 GAGC 与 GATC 的汉明距离 = 第3位不同 → 1。
    特点:仅适用于等长序列,计算高效(位运算)。
    应用:错误检测编码(如CRC)、密码学、基因序列比对。

    JACCARD_DISTANCE(Jaccard距离)

    别名:Jaccard相异度定义:1减去Jaccard相似系数,衡量集合差异度。
    公式:djaccard(A,B)=1−∣A∪B∣∣A∩B∣
    特点:忽略元素频次,仅关注存在性(适合布尔特征)。
    应用:集合相似性(如文档去重)、购物车分析(剁手党的商品交集)。

    关键函数:

    1. 向量构造函数​:

    • TO_VECTOR:将字符串或数值数组转换为向量。
    • VECTOR:是TO_VECTOR的别名。

    2. ​距离函数​:

    • VECTOR_DISTANCE(vector1, vector2, metric):计算两个向量之间的距离,支持多种度量标准。
    • 简写函数:L1_DISTANCE(曼哈顿距离),L2_DISTANCE(欧几里得距离),COSINE_DISTANCE(余弦距离),INNER_PRODUCT(点积),HAMMING_DISTANCE(汉明距离),JACCARD_DISTANCE(Jaccard距离)。

    3. ​向量生成函数​:

    • VECTOR_EMBEDDING(model_name USING data AS data):使用指定的嵌入模型将数据转换为向量。

    4. ​分块函数​:

    • VECTOR_CHUNKS:将文本分块。

    5. ​向量属性函数​:

    • VECTOR_NORM(vector):计算向量的范数(模长)。
    • VECTOR_DIMENSION_COUNT(vector):返回向量的维度数。
    • VECTOR_DIMS(vector):同上。
    • VECTOR_DIMENSION_FORMAT(vector):返回向量维度的格式(如FLOAT32, BINARY等)。

    6. 聚合函数​:

    • AVG:计算向量的平均值(仅适用于浮点向量)。
    • SUM:计算向量的和(仅适用于浮点向量)。

    7. 混合搜索函数​:

    • DBMS_HYBRID_VECTOR.SEARCH:执行混合搜索。

    是不是分分钟回到了初高中几何时代,浮现“数学最美公式”之一的欧拉公式。

    <think>好的,我现在需要帮用户解决如何在Oracle 23c AI中创建实例对象的问题。首先,我得仔细看看用户提供的引用内容,里面提到了使用Docker运行Oracle 23c的容器镜像,还有安装步骤和一些配置文件的检查。用户可能已经按照这些步骤安装好了Oracle 23c,现在想了解如何创建实例对象,也就是数据库实例。 首先,我得确认用户的环境。引用里提到用户可能通过Docker或者直接安装RPM包来安装Oracle 23c。如果是Docker的话,创建实例的步骤可能和传统安装方式不同,但用户的问题是关于AI功能的,可能涉及到数据库实例的创建以及AI相关配置。 接下来,我需要回忆Oracle数据库创建实例的一般步骤。通常,在Oracle中,创建数据库实例可以通过DBCA(Database Configuration Assistant)工具,或者手动通过SQL语句。但23c版本可能有新的变化,特别是结合AI功能的部分。用户提到的“实例对象”可能指的是数据库实例本身,或者是使用AI特性的对象,比如机器学习模型? 然后,检查提供的引用内容。引用1提到使用Docker运行23c的容器镜像,可能容器已经包含了一个默认的实例,但用户可能需要创建新的实例。不过,在Oracle中,通常一个数据库实例对应一个容器,尤其是在Docker环境下,每个容器通常运行一个实例。因此,用户可能需要的是在已有实例中创建AI相关的对象,比如模型、向量表等。 不过,用户的问题表述有点模糊,“创建实例对象”可能被误解为创建数据库实例本身,或者是创建使用AI功能的数据对象。需要进一步分析。根据Oracle 23c的AI特性,可能引入了新的对象类型,比如AI模型、向量索引等。因此,回答需要涵盖两种情况:如何创建数据库实例,以及如何在实例中创建AI相关的对象。 首先,创建数据库实例的步骤。根据引用3,用户通过RPM安装,可能需要使用“dbca”命令启动数据库配置助手。或者,如果使用Docker容器,可能已经自动创建了一个实例,如FREE。这时候用户可能需要连接到现有实例,然后创建用户和表空间等。 然后,关于AI功能的创建,比如使用Oracle 23c的AI Vector Search功能,需要创建带有向量数据类型的表,或者使用DBMS_VECTOR包。例如,用户可能需要创建向量索引,或者训练机器学习模型。这部分需要参考Oracle 23c的AI文档,但用户提供的引用中没有直接提到,可能需要结合一般知识。 现在,我需要确保步骤正确,并且符合用户的环境。假设用户已经安装好了Oracle 23c,无论是通过Docker还是RPM,接下来需要创建数据库实例。如果使用Docker,可能已经有一个实例在运行,用户只需要连接并创建所需的对象。如果是通过RPM安装,可能需要手动创建实例。 另外,用户提到的“AI中创建实例对象”可能是指在AI环境下配置数据库实例,比如启用AI相关功能,或者创建支持AI的数据结构。例如,Oracle 23c引入了AI Vector Search,允许存储和检索向量数据,用于机器学习。因此,创建实例对象可能包括创建向量表、索引等。 综合来看,回答应该分为两部分:创建数据库实例的基本步骤,以及在实例中创建AI相关对象的步骤。同时,需要引用用户提供的资料,比如使用Docker容器的命令,或者安装后的配置步骤。 最后,生成相关问题,确保问题与主题相关,帮助用户深入理解。</think>### 分步说明:Oracle 23c AI 中创建实例对象 #### 一、创建数据库实例的两种方式 1. **通过Docker容器快速启动(推荐)** ```bash docker run -d --name oracle23c -p 1521:1521 -e ORACLE_PWD=your_password container-registry.oracle.com/database/free:23.3.0.0 ``` 容器会自动创建名为`FREE`的默认数据库实例[^1]。通过以下命令验证: ```bash docker logs oracle23c | grep &#39;DATABASE IS READY TO USE&#39; ``` 2. **通过DBCA手动创建实例(RPM安装场景)** ```bash # 启动数据库配置助手 dbca -silent -createDatabase \ -templateName General_Purpose.dbc \ -gdbName ORCL \ -sid ORCL \ -createAsContainerDatabase true \ -numberOfPDBs 1 \ -pdbName PDB1 \ -storageType FS \ -datafileDestination /opt/oracle/oradata \ -enableArchive true \ -memoryMgmtType AUTO \ -totalMemory 2048 \ -databaseType MULTIPURPOSE ``` 该命令将创建包含CDB和PDB的实例[^3]。 #### 二、创建AI相关对象(以向量搜索为例) 1. **启用AI Vector功能** ```sql ALTER SYSTEM SET vectorscope=ENABLE; ``` 2. **创建含向量列的表** ```sql CREATE TABLE documents ( id NUMBER PRIMARY KEY, text CLOB, embedding VECTOR(1536) -- 1536维向量(例如OpenAI嵌入) ); ``` 3. **创建向量索引** ```sql CREATE VECTOR INDEX doc_vec_idx ON documents(embedding) ORGANIZATION INMEMORY DISTANCE COSINE; ``` 4. **插入向量数据示例** ```sql INSERT INTO documents VALUES ( 1, &#39;Oracle 23c AI特性&#39;, VECTOR(&#39;[0.1, 0.5, ..., -0.2]&#39;) ); ``` #### 三、验证AI功能 ```sql SELECT id, text FROM documents ORDER BY VECTOR_DISTANCE(embedding, VECTOR(&#39;[0.3, 0.6, ..., -0.1]&#39;)) FETCH FIRST 3 ROWS ONLY; ``` ### 关键配置文件说明 - **内存分配**:检查`/etc/security/limits.d/oracle-database-preinstall-23c.conf`确保资源限制合理[^4] - **AI参数**:通过`ALTER SYSTEM`设置`vector_parallel_degree`等参数优化性能
    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值