使用 @DBFUNCTION 嵌入原生数据库

Oracle GoldenGate 在数据复制期间提供了强大的转换功能,包括通过 @DBFUNCTION 结构调用数据库驻留函数的功能。利用此功能,企业可以直接将 AI 驱动的处理(例如向量嵌入生成)集成到数据复制管道中,从而无需执行单独的后处理步骤,并实现真正的实时 AI 数据扩充。

@DBFUNCTION 功能允许 GoldenGate Replicat 进程在数据应用于目标系统时内联执行数据库端函数。这意味着,在复制每个事务时,可以在数据库上下文中执行其他逻辑(例如从文本生成嵌入)。通过将转换逻辑直接嵌入到复制流中,组织可以确保向量数据与数据摄取同步创建,从而保持一致性并尽可能减少延迟。

使用 GoldenGate 和 @DBFUNCTION 的典型实时嵌入工作流如下所示:

  1. 源事务处理由 GoldenGate 提取流程获取。

  2. 更改数据将使用 GoldenGate 线索文件传输到目标环境。

  3. 复制进程应用事务处理并调用 @DBFUNCTION 来调用驻留在数据库中的嵌入函数。在以下示例中,@DBFUNCTION 调用实际上调用了将执行更复杂的嵌入函数的 PL/SQL 包装函数。

  4. 嵌入是实时生成的,并存储在目标表中,通常存储在下游 AI 和相似性搜索用例的 VECTOR 列中。这种紧密集成的流程可确保嵌入始终与其对应的源数据同步,同时保持事务一致性。以下示例说明如何在 GoldenGate 映射配置中使用 @DBFUNCTION 以从文本数据生成嵌入:

      MAP schema.source_table, TARGET schema.target_table,
            COLMAP (
            USEDEFAULTS,
            vector_col = @DBFUNCTION(
                OGGADMIN.CREATE_VECTOR(@AFTER.address, @AFTER.city)
           )
         );

在此示例中,将针对每个复制的行执行 OGGADMIN.CREATE_VECTOR 函数,使用来自地址和城市的传入数据作为输入,以在应用时将原始文本转换为向量表示。OGGADMIN.CREATE_VECTOR 将嵌入数据。常见的方法是通过 VECTOR_EMBEDDING() 或 DBMS_VECTOR.UTL_TO_EMBEDDING() 程序包调用。

@DBFUNCTION 最佳实践

为了确保高效和可靠的操作,使用 @DBFUNCTION 进行实时嵌入时应遵循几种最佳做法。嵌入函数的设计应该是确定性和高性能的,因为它们在复制路径中执行,并且可以直接影响吞吐量。

在可能的情况下,组织应利用 Oracle AI Vector Search 功能,或通过优化的 PL/SQL 包装来调用外部 AI 服务以生成嵌入。应实施强大的错误处理和重试机制,以解决嵌入生成过程中的瞬态故障,特别是在涉及外部服务时。

最后,应避免或卸载长时间运行或资源密集型的函数,因为它们会引入复制滞后并降低系统的整体可扩展性。嵌入模式摘要:选择 @AISERVICE 表示外部或 GPU 支持的推断,选择 @DBFUNCTION 表示数据库驻留嵌入逻辑,并在同步调用创建应用滞后时考虑异步嵌入。