实战系列之外部表简化AI数据导入

来源:这里教程网 时间:2026-03-03 22:43:52 作者:

外部表的支持简化AI数据导入 痛点场景:构建RAG应用时,企业知识库常存在于PDF、Word等多种格式的非结构化文档中。传统方式需要复杂ETL流程才能将其导入数据库并进行向量化,过程繁琐。 23ai解决方案:使用外部表可以直接连接并查询外部存储的文件。结合Oracle Database 23ai的向量化能力,可以简化数据准备流程。

实验步骤:

数据准备:将产品手册、技术文档等PDF文件存入对象存储。 建立外部表:创建外部表指向这些文件,Oracle数据库可直接读取其内容。 向量化与存储:在OCI Data Science笔记本中使用内嵌模型,将文档内容转化为向量。 入库查询:将生成的向量数据存入Oracle Database 23ai的向量列,后续即可进行相似性搜索。此方案极大降低了AI应用数据预处理的复杂性。

传统ETL流程

-- 1. 传统方式:文件预处理 + 批量插入
CREATE TABLE tech_docs_traditional (
    doc_id NUMBER PRIMARY KEY,
    doc_name VARCHAR2(500),
    content CLOB,
    vector_data VECTOR
);
-- 处理脚本(Python + SQL*Loader)
DECLARE
    v_processing_time NUMBER;
BEGIN
    -- 开始计时
    v_processing_time := DBMS_UTILITY.get_time;
    
    -- 模拟传统ETL:文件解析 + 数据转换 + 批量插入
    -- 使用外部程序处理PDF,生成中间文件,再通过SQL*Loader导入
    
    v_processing_time := (DBMS_UTILITY.get_time - v_processing_time)/100;
    DBMS_OUTPUT.PUT_LINE('传统ETL处理时间: ' || v_processing_time || ' 秒');
END;
/

外部表优化方案

-- 创建目录对象
CREATE OR REPLACE DIRECTORY pdf_dir AS '/data/ai_documents/';
CREATE OR REPLACE DIRECTORY log_dir AS '/data/logs/';
-- 创建外部表
CREATE TABLE tech_docs_external (
    doc_name VARCHAR2(500),
    file_content BLOB
)
ORGANIZATION EXTERNAL (
    TYPE ORACLE_LOADER
    DEFAULT DIRECTORY pdf_dir
    ACCESS PARAMETERS (
        RECORDS DELIMITED BY NEWLINE
        FIELDS (
            doc_name CHAR(500),
            file_content LOBFILE(CONSTANT 'dummy.pdf')
        )
    )
    LOCATION ('file_list.txt')
)
REJECT LIMIT UNLIMITED;
-- 向量化处理(使用内置AI函数)
CREATE TABLE doc_vectors AS
SELECT 
    ROWNUM as doc_id,
    doc_name,
    AI_VECTORIZE(file_content) as document_vector
FROM tech_docs_external;

性能对比数据

相关推荐