惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog
S
SegmentFault 最新的问题
WordPress大学
WordPress大学
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
MyScale Blog
MyScale Blog
A
About on SuperTechFans
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
博客园 - 【当耐特】
The Cloudflare Blog
F
Fortinet All Blogs
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
罗磊的独立博客
量子位
有赞技术团队
有赞技术团队
V
V2EX
Engineering at Meta
Engineering at Meta

博客园 - AlfredZhao

执行新项目 python 脚本前,先用 conda 建一个独立环境 Git 提交代码:从报错到 SSH 免密推送 GitHub 克隆他人私有仓库:从授权到下载 理解Oracle Property Graph:以账户转账示例完成图特性最小测试 APEX 无法分配 SH 用户?一个存储过程轻松解决 SH 中文化样例数据使用手册 Oracle 排除非业务表:一份能直接抄的“全量过滤”SQL 进程都杀了,为什么 `netstat` 还能看到端口? MAC 空间告急?Codex 的 156GB 缓存垃圾,这样清! 人工清理问题数据:先查准,再删除 TK(Trusted Knowledge)为何而生? 使用快捷键快速切换 Mac 外接显示器模式 客户环境 Nginx 配置:流式报表与超时排查要点 Security Central:数据库安全的统一控制与运营平台 Palantir 眼中的一次“订单可能延期”,如何成为实时决策的起点? 从一条订单消息到 Bronze、Silver、Gold:我的第一次 Kafka + Lakehouse 实验 UUID v4 与 v7:同样是唯一 ID,为什么数据库表现可能完全不同? 用 crontab 给 LLM 使用量装上“监控眼” DeepSeek 与 GPT API 价格调整:该关注什么? 查看 Oracle 数据库中的定时任务执行情况 Codex 专用用户登录后自动进入默认项目目录 Mac 小技巧:用方向键优雅处理超长网址 Oracle GDD 与 Raft:别把共识机制和数据主权混为一谈 行业人+AI:真正有价值的四个关键要素 知识库文件解析失败:一次由 Domain Index 引发的定位记录 Unicode 码位数、UTF-8 字节数、中英文差异和 Oracle 长度别再混淆了 Skill 的使用:从路径到能力边界 切换 Embedding 模型时,千万别忽略历史向量维度 kbot 适配 GPT-5.6:一次参数兼容性排查 Git 打 Tag 上传 GitHub 遇到 SSH 超时,如何处理?
在 Oracle APEX 中用 BGE_BASE 生成向量:从模型导入到历史数...
AlfredZhao · 2026-08-24 · via 博客园 - AlfredZhao

2026-08-24 07:39  AlfredZhao  阅读(0)  评论()    收藏  举报

向量检索的第一步,是把文本转成向量。笔者这里使用 Oracle 数据库中的 ONNX 模型 BGE_BASE,并在 APEX 调用匿名块,为历史内容生成或更新向量。

01 | 导入 BGE_BASE ONNX 模型

先将 bge-base-zh-v1.5.onnx 放入数据库目录 DM_DUMP,再通过 DBMS_VECTOR.LOAD_ONNX_MODEL 导入:

BEGIN
  DBMS_VECTOR.LOAD_ONNX_MODEL(
    directory => 'DM_DUMP',
    file_name => 'bge-base-zh-v1.5.onnx',
    model_name => 'BGE_BASE',
    metadata => JSON('{
      "function": "embedding",
      "embeddingOutput": "embedding",
      "input": {"input": ["DATA"]}
    }')
  );
END;
/

导入完成后,可查询模型信息:

SELECT model_name, algorithm, mining_function
FROM user_mining_models
WHERE model_name = 'BGE_BASE';

结果中,BGE_BASE 的算法为 ONNX,挖掘函数为 EMBEDDING

02 | 为历史内容生成或更新向量

模型可通过 VECTOR_EMBEDDING 将文本转换为向量。例如:

SELECT VECTOR_EMBEDDING(BGE_BASE USING 'Hi, Alfred' AS DATA) AS embedding;

在历史表 t_history 中,笔者通过匿名块逐行处理内容:仅处理尚未向量化,或标记为需要更新的记录。

DECLARE
  CURSOR c_history IS
    SELECT rowid AS rid, content
    FROM t_history
    WHERE content IS NOT NULL
      AND (v IS NULL OR v_needs_update = 1);
BEGIN
  FOR r IN c_history LOOP
    UPDATE t_history
    SET v = VECTOR_EMBEDDING(BGE_BASE USING r.content AS DATA),
        v_needs_update = 0
    WHERE rowid = r.rid;
  END LOOP;
  COMMIT;
END;

其中,v 用于保存生成后的向量;v_needs_update 用于标识是否需要重新向量化。内容为空的数据不会参与处理,已完成且无需更新的数据也会被跳过。

关注我,和AI一起成长~