OCI GoldenGate의 AI 모델을 사용하여 벡터 임베딩 생성
GoldenGate 26ai 이상을 사용하여 데이터 복제 배포에서 AI 서비스를 사용하여 벡터 임베딩을 생성하는 방법을 알아봅니다.
개요
OCI GoldenGate에는 GoldenGate 프로세스가 다양한 제공업체(OCI Generative AI, OpenAI, Google Gemini, Voyage AI)의 AI 모델과 상호 작용하여 데이터 복제 파이프라인 내에서 직접 벡터 임베딩을 생성할 수 있는 AI 서비스가 포함되어 있습니다.
다음 단계에서는 AI 모델에 대한 연결을 설정하고 이를 사용하여 Replicat에서 벡터 임베딩을 생성하는 방법을 안내합니다.
시작하기 전에
계속하려면 다음이 있어야 합니다.
-
기존 소스 데이터베이스입니다.
-
Oracle Autonomous AI Lakehouse와 같은 벡터를 지원하는 기존 대상 Oracle AI Database입니다.
-
Oracle Autonomous AI Database를 사용하는 경우 GGADMIN 사용자의 잠금을 해제합니다.
-
소스 및 대상 데이터베이스는 동일한 테넌시 및 지역에 있어야 합니다.
-
샘플 데이터가 필요한 경우 Archive.zip을 다운로드한 다음 실습 1, 태스크 3: ATP 스키마 로드의 지침을 따릅니다.
-
기존 OCI API 키입니다.
-
프라이빗 API 키 콘텐츠를 포함하는 기존 OCI Vault입니다.
-
OCI GoldenGate를 사용하기 위한 최소 권장 정책.
-
OCI Generative AI를 사용하기 위한 최소 권장 정책입니다.
작업 1: 환경 설정
-
소스 Oracle Autonomous AI Transaction Processing(ATP) 연결을 생성합니다.
-
SQL 툴을 사용하여 원본 데이터베이스에서 보완 로깅을 활성화합니다.
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; -
SQL 도구에서 다음 query를 실행하여 원본 데이터베이스의 모든 테이블에 대해 support_mode=FULL이 되는지 확인합니다.
select * from DBA_GOLDENGATE_SUPPORT_MODE where owner = 'SRC_OCIGGLL'; -
대상 ALK 데이터베이스에 다음 테이블을 생성하여 OpenAI 텍스트 임베딩 3-소형 모델을 사용하여 생성할 벡터 임베딩을 저장합니다.
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 생성형 AI
-
인증 유형: OCI Generative AI
-
사용자: 현재 테넌시 및 사용자 사용
-
영역 지정
-
OCI API 키를 포함하는 암호 제공 또는 생성
-
API 키 지문 입력
-
리스트에서 openai.text-embedding-3-small과 같은 포함 모델을 선택합니다.
-
생성을 선택합니다
-
-
접속 세부정보 검토
-
배치에 AI Model 접속을 지정합니다.
-
배치 세부정보 페이지로 이동하여 지정된 접속을 선택합니다.
-
지정된 AI 모델 연결 섹션에서 연결 지정을 선택한 다음 AI 모델 연결을 선택합니다.
-
연결 지정을 선택하여 지정을 확인합니다.
-
-
Assigned AI model connections(지정된 AI 모델 연결) 섹션에 새 AI 모델 연결이 나열되는지 확인합니다.
-
배치에 AI 모델 접속을 지정하면 GoldenGate에서 AI 서비스가 자동으로 구성됩니다.
-
OCI GoldenGate 콘솔에 로그인하고 AI 모델로 이동하여 AI 모델 목록을 검토합니다.
-
Replicat에서 @AISERVICE 함수를 사용하여 벡터 임베딩을 생성하는 데 필요한 모델 이름을 기록해 둡니다.
-
@AISERVICE함수의 모델 이름은 OCI GoldenGate AI 모델에 표시된 모델 이름과 일치해야 합니다. 연결 이름과 다를 수 있습니다.
-
작업 3: 통합 Extract 생성
통합 추출은 소스 데이터베이스에 대한 지속적인 변경사항을 캡처합니다.
-
배치 세부정보 페이지에서 콘솔 실행을 선택합니다.
-
필요한 경우 사용자 이름으로 oggadmin을 입력하고 배치를 생성할 때 사용한 암호를 입력한 다음 사인인을 선택합니다.
-
트랜잭션 데이터 및 체크포인트 테이블 추가:
-
탐색 메뉴를 열고 DB 접속을 선택합니다.
-
데이터베이스 SourceDB에 접속을 선택합니다.
-
탐색 메뉴에서 Trandata를 선택한 다음 Trandata 추가(더하기 아이콘)를 선택합니다.
-
스키마 이름에
SRC_OCIGGLL을 입력한 다음 제출을 선택합니다. -
확인하려면 검색 필드에
SRC_OCIGGLL을 입력하고 검색을 선택합니다. -
탐색 메뉴를 열고 DB 접속을 선택합니다.
-
데이터베이스 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);query에서 행을 반환하면 트랜잭션의 SCN을 찾은 다음 트랜잭션을 커밋하거나 롤백해야 합니다.
작업 4: 통합되지 않은 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 세부 정보 페이지에서 데이터베이스 작업을 선택한 다음 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 배치 콘솔에서 이름 추출(UAEXT)을 선택한 다음 통계를 선택합니다. SRC_OCIGGLL.SRC_CITY가 10개의 삽입과 함께 나열되는지 확인합니다.
-
Overview 화면으로 돌아가서 Replicat name (REP)을 선택한 다음 Statistics를 선택합니다. 10개의 삽입과 함께 SRCMIRROR_OCIGGLL.SRC_CITY가 나열되는지 확인합니다.
-
대상 자율운영 AI 레이크하우스 세부정보 페이지로 이동하여 데이터베이스 작업을 선택한 다음 SQL을 선택합니다.
-
SQL에서
select * from SRCMIRROR_OCIGGLL.SRC_CITY_VECTOR;를 실행하고 AI 서비스를 사용하여 OCI GoldenGate가 생성한 벡터 임베딩을 포함한 결과를 검토합니다.
-
SRCMIRROR_OCIGGLL.SRC_CITY_VECTOR 테이블에는 SRC_OCIGGLL.SRC_CITY에서 복제된 행이 포함되고, CITY_EMBED 열에는 각 도시에 대해 생성된 벡터 포함이 포함됩니다.
문제 해결
-
Replicat가 모델을 호출할 수 없는 경우 AI 모델 접속이 배치에 성공적으로 지정되었는지 확인하십시오.
-
인증에 실패하면 OCI API 키 암호, 지문, 사용자, 테넌시 및 지역을 확인합니다.
-
행이 복제되었지만 임베딩이 생성되지 않은 경우
@AISERVICE의 모델 이름이 OCI GoldenGate AI 모델에 나열된 모델 이름과 일치하는지 확인합니다. -
대상 테이블에서 Replicat가 실패할 경우 대상 데이터베이스가 벡터 열을 지원하고
CITY_EMBED가 선택한 포함 모델과 호환되는 차원으로 정의되었는지 확인하십시오. -
캡처가 실패하거나 테이블을 건너뛰는 경우 보완 로깅이 활성화되어 있고 소스 테이블 지원 모드가
FULL인지 확인합니다.