在 OCI GoldenGate 中使用 AI 模型创建向量嵌入
了解如何使用 GoldenGate 26ai 及更高版本在数据复制部署中使用 AI 服务生成向量嵌入。
概述
OCI GoldenGate 包含一个 AI 服务,允许 GoldenGate 流程与来自各种提供商(OCI Generative AI、OpenAI、Google Gemini 和 Voyage AI)的 AI 模型交互,以直接在数据复制管道中生成向量嵌入。
以下步骤将指导您完成如何设置与 AI 模型的连接并使用它们在复制中生成向量嵌入。
开始之前
您必须具有以下项才能继续:
-
现有源数据库。
-
支持向量的现有目标 Oracle AI Database,例如 Oracle Autonomous AI Lakehouse 。
-
如果您使用 Oracle Autonomous AI Database,请解锁 GGADMIN 用户。
-
源数据库和目标数据库必须位于同一租户和区域中。
-
如果需要示例数据,请下载 Archive.zip ,然后按照练习 1,任务 3:加载 ATP 方案中的说明进行操作。
-
现有 OCI API 密钥。
-
包含私有 API 密钥内容的现有 OCI Vault 。
-
使用 OCI GoldenGate 的最低建议策略。
-
使用 OCI Generative AI 的最低建议策略。
任务 1:设置的环境
-
使用 SQL 工具对源数据库启用补充日志记录:
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; -
在 SQL 工具中运行以下查询,以确保对源数据库中的所有表的支持 _mode=FULL:
select * from DBA_GOLDENGATE_SUPPORT_MODE where owner = 'SRC_OCIGGLL'; -
在目标 ALK 数据库上创建下表,以存储将使用 OpenAI 文本嵌入 -3-small 模型创建的向量嵌入:
CREATE TABLE "SRCMIRROR_OCIGGLL"."SRC_CITY_VECTOR" ( "CITY_ID" NUMBER(10,0), "CITY" VARCHAR2(50 BYTE), "REGION_ID" NUMBER(10,0), "POPULATION" NUMBER(10,0), "CITY_EMBED" VECTOR(1536,FLOAT32) );
任务 2:配置 AI 模型
-
创建 AI 模型连接
-
名称:OCI_GenAI_TextEmbeddingSmall
-
类型:AI 模型
-
提供商类型:OCI Generative AI
-
验证类型:OCI Generative AI
-
用户:使用当前租户和用户
-
指定区域
-
提供或创建包含 OCI API 密钥的密钥
-
输入 API 密钥指纹
-
从列表中选择一个嵌入模型,例如 openai.text-embedding-3-small
-
选择创建
-
-
查看连接详细信息
-
将 AI 模型连接分配给您的部署:
-
转到“部署详细信息”页,选择分配的连接
-
在 "Assigned AI model connections"(分配的 AI 模型连接)部分中选择 Assign connection(分配连接),然后选择 AI Model 连接。
-
选择分配连接以确认分配
-
-
确保 "Assigned AI model connections"(分配的 AI 模型连接)部分中列出了新的 AI 模型连接。
-
将 AI 模型连接分配给部署会自动在 GoldenGate 中配置 AI 服务
-
登录 OCI GoldenGate 控制台,转到 AI 模型并查看 AI 模型列表。
-
请注意模型名称,因为您需要它在复制中使用 @AISERVICE 函数来创建向量嵌入
-
@AISERVICE函数中的模型名称必须与 OCI GoldenGate AI 模型中显示的模型名称匹配。它可能与连接名称不同。
-
任务 3:创建集成提取
集成提取捕获对源数据库的持续更改。
-
在“部署详细信息”页上,选择启动控制台。
-
如果需要,输入 oggadmin 以显示用户名和创建部署时使用的密码,然后选择登录。
-
添加事务处理数据和检查点表:
-
打开导航菜单,然后选择 DB Connections(DB 连接)。
-
选择 Connect to database SourceDB 。
-
在导航菜单中,选择 Trandata ,然后选择 Add Trandata (加号图标)。
-
对于方案名称,输入
SRC_OCIGGLL,然后选择提交。 -
要进行验证,请在“搜索”字段中输入
SRC_OCIGGLL,然后选择搜索。 -
打开导航菜单,然后选择 DB Connections(DB 连接)。
-
选择 Connect to database TargetDB(连接到数据库 TargetDB)。
-
在导航菜单中,选择检查点,然后选择添加检查点(加号图标)。
-
对于检查点表,输入
"SRCMIRROR_OCIGGLL"."CHECKTABLE",然后选择提交。
-
-
添加提取。
注:有关可用于指定源表的参数的详情,请参阅附加提取参数选项。
在“提取参数”页上,在
EXTTRAIL <trail-name>下附加以下行:-- Capture DDL operations for listed schema tables ddl include mapped -- Add step-by-step history of to the report file. Useful when troubleshooting. ddloptions report -- Write capture stats per table to the report file daily. report at 00:01 -- Rollover the report file weekly. Useful when IE runs -- without being stopped/started for long periods of time to -- keep the report files from becoming too large. reportrollover at 00:01 on Sunday -- Report total operations captured, and operations per second -- every 10 minutes. reportcount every 10 minutes, rate -- Table list for capture table SRC_OCIGGLL.*; -
检查长耗时事务处理。在源数据库上运行以下脚本:
select start_scn, start_time from gv$transaction where start_scn < (select max(start_scn) from dba_capture);如果查询返回任何行,则必须找到事务处理的 SCN,然后提交或回退事务处理。
任务 4:添加和运行非集成复制
-
Add and run a Replicat (添加和运行复制)。
在 Parameter File 屏幕上,将
MAP *.*, TARGET *.*;替换为以下脚本:-- Capture DDL operations for listed schema tables ddl include mapped -- -- Add step-by-step history of ddl operations captured -- to the report file. Very useful when troubleshooting. ddloptions report -- -- Write capture stats per table to the report file daily. report at 00:01 -- -- Rollover the report file weekly. Useful when PR runs -- without being stopped/started for long periods of time to -- keep the report files from becoming too large. reportrollover at 00:01 on Sunday -- -- Report total operations captured, and operations per second -- every 10 minutes. reportcount every 10 minutes, rate -- -- Table map list for apply MAP SRC_OCIGGLL.SRC_CITY, TARGET SRCMIRROR_OCIGGLL.SRC_CITY_VECTOR, COLMAP ( USEDEFAULTS, CITY_EMBED = @AISERVICE(embed,'OCI_GenAI_TextEmbeddingSmall',CITY) );注意
@AISERVICE 函数使用前面定义的 AI 模型连接从 CITY 列中存储的数据创建向量嵌入。
-
对源数据库执行插入:
-
返回 Oracle Cloud 控制台,然后使用导航菜单导航回 Oracle AI Database 、 Autonomous AI Transaction Processing 和 SourceDB 。
-
在 "SourceDB Details"(源数据库详细信息)页面上,选择 Database actions(数据库操作),然后选择 SQL 。
-
输入以下插入,然后选择运行脚本:
Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1000,'Houston',20,743113); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1001,'Dallas',20,822416); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1002,'San Francisco',21,157574); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1003,'Los Angeles',21,743878); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1004,'San Diego',21,840689); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1005,'Chicago',23,616472); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1006,'Memphis',23,580075); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1007,'New York City',22,124434); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1008,'Boston',22,275581); Insert into SRC_OCIGGLL.SRC_CITY (CITY_ID,CITY,REGION_ID,POPULATION) values (1009,'Washington D.C.',22,688002); -
在 OCI GoldenGate 部署控制台中,选择 Extract name (UAEXT) ,然后选择 Statistics 。验证 SRC_OCIGGLL.SRC_CITY 列出了 10 个插入。
-
返回到 "Overview" 屏幕,选择 Replicat name (REP) ,然后选择 Statistics 。确认 SRCMIRROR_OCIGGLL.SRC_CITY 列出了 10 个插入
-
转到目标自治 AI 数据湖仓详细信息页,选择数据库操作,然后选择 SQL
-
在 SQL 中,运行
select * from SRCMIRROR_OCIGGLL.SRC_CITY_VECTOR;并查看结果,包括 OCI GoldenGate 使用 AI 服务创建的向量嵌入。
-
SRCMIRROR_OCIGGLL.SRC_CITY_VECTOR 表包含从 SRC_OCIGGLL.SRC_CITY 复制的行,CITY_EMBED 列包含为每个城市生成的向量嵌入。
疑难解答
-
如果 Replicat 无法调用模型,请验证 AI 模型连接是否已成功分配给部署。
-
如果验证失败,请验证 OCI API 密钥、指纹、用户、租户和区域。
-
如果复制了行但未生成嵌入,请确认
@AISERVICE中的模型名称与 OCI GoldenGate AI 模型中列出的模型名称匹配。 -
如果目标表上的复制失败,请验证目标数据库是否支持向量列,以及是否为
CITY_EMBED定义了与所选嵌入模型兼容的维。 -
如果捕获失败或跳过表,请确认已启用补充日志记录并且源表支持模式为
FULL。