ONNX Model

2024. 8. 26.·Oracle/Vector

Oracle 23ai부터 DBMS_VECTOR 패키지로 ONNX 모델을 데이터베이스에 로드할 수 있습니다.

 

테스트를 위해 all-MiniLM-L12-v2 ONNX 모델를 다운로드하고 압축을 해제하겠습니다.

$ unzip /home/oracle/onnx/all_MiniLM_L12_v2_augmented.zip
Archive:  all_MiniLM_L12_v2_augmented.zip
  inflating: all_MiniLM_L12_v2.onnx
  inflating: README-ALL_MINILM_L12_V2-augmented.txt

 

아래와 같이 디렉토리를 생성하고 DBMS_VECTOR.LOAD_ONNX_MODEL 프로시저를 사용하여 all-MiniLM-L12-v2 ONNX 모델을 데이터베이스에 로드하겠습니다.

-- 1-1
DROP DIRECTORY dir_onnx;
CREATE OR REPLACE DIRECTORY dir_onnx AS '/home/oracle/onnx';

-- 1-2
BEGIN
    DBMS_VECTOR.DROP_ONNX_MODEL (
        model_name => 'ALL_MINILM_L12_V2'
      , force      => true
    );

    DBMS_VECTOR.LOAD_ONNX_MODEL (
        directory  => 'DIR_ONNX'
      , file_name  => 'all_MiniLM_L12_v2.onnx'
      , model_name => 'ALL_MINILM_L12_V2'
    );
END;
/

 

아래 쿼리로 ONNX 모델에 대한 정보를 조회할 수 있습니다.

-- 2-1
SELECT mining_function, algorithm, algorithm_type
  FROM user_mining_models
 WHERE model_name='ALL_MINILM_L12_V2';

MINING_FUNCTION ALGORITHM ALGORITHM_TYPE
--------------- --------- --------------
EMBEDDING       ONNX      NATIVE

1 row selected.

-- 2-2
SELECT view_name, view_type
  FROM user_mining_model_views
 WHERE model_name='ALL_MINILM_L12_V2';

VIEW_NAME              VIEW_TYPE
---------------------- -------------------------
DM$VMALL_MINILM_L12_V2 ONNX Model Information
DM$VPALL_MINILM_L12_V2 ONNX Parsing Information
DM$VJALL_MINILM_L12_V2 ONNX Metadata Information

3 rows selected.

-- 2-3
SELECT name, REGEXP_REPLACE (value, '\s+', ' ') AS value
  FROM dm$vmall_minilm_l12_v2;

NAME              VALUE
----------------- -------------------------------------------------------------
Producer Name     onnx.compose.merge_models
Graph Name        tokenizer_main_graph
Graph Description Graph combining tokenizer and main_graph tokenizer main_graph
Version           1
Input[0]          input:string[?]
Output[0]         embedding:float32[?,384]

6 rows selected.

 

아래 예제는 VECTOR_EMBEDDING 함수로 벡터를 생성합니다. VECTOR_DIMENSION_COUNT 함수는 벡터의 차원 수,  VECTOR_DIMENSION_FORMAT 함수는 벡터의 포맷 타입을 반환합니다.

-- 3
SELECT vector_data
     , VECTOR_DIMENSION_COUNT (vector_data) AS dimension_count
     , VECTOR_DIMENSION_FORMAT (vector_data) AS dimension_format
  FROM (SELECT VECTOR_EMBEDDING (all_minilm_l12_v2 USING 'Hello, world!' AS data) AS vector_data);


VECTOR_DATA                                                                              DIMENSION_COUNT DIMENSION_FORMAT
---------------------------------------------------------------------------------------- --------------- ----------------
[-5.59846461E-002,4.63369973E-002,-3.38232215E-003,-5.67258932E-002,-2.68842839E-002,...             384 FLOAT32

1 row selected.

 

관련 링크

  • Oracle Blog - Now Available! Pre-built Embedding Generation model for Oracle Database 23ai
  • Oracle Blog - Real Time Conversion: Transform Relational Data into Vector Data
저작자표시 비영리 변경금지 (새창열림)
'Oracle/Vector' 카테고리의 다른 글
  • Relational Data Vectorization
  • FLOAT32 Vector Generator
  • AI Vector Search #3 - IVF 벡터 인덱스
  • AI Vector Search #2 - HNSW 벡터 인덱스
정희락
정희락
2007년부터 Oracle Database 성능 최적화에 관심을 가져왔습니다. 현재 한국오라클 Engineered Systems Solution Engineering 팀에서 Solution Engineer로 근무하고 있습니다. 이 블로그는 개인적인 연구 목적으로 운영되며 Oracle 사의 공식적인 입장을 대변하지 않습니다.
  • 정희락
    TunA
    정희락
  • 전체
    오늘
    어제
    • 분류 전체보기 (206)
      • Oracle (177)
        • SQL (36)
        • PLSQL (10)
        • Performance (75)
        • Administration (37)
        • Installation (3)
        • Utilities (1)
        • JSON (8)
        • Vector (7)
      • Exadata (16)
      • SQL*Plus (2)
      • Linux (5)
      • Resources (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 도서

    • 불친절한 SQL 프로그래밍
    • 불친절한 PL/SQL 프로그래밍
  • 링크

    • Connor McDonald
    • Frits Hoogland
    • Jonathan Lewis
    • Julian Dontcheff
    • Julian Dyke
    • Kun Sun
    • Maria Colgan
    • Martin Bach
    • Mike Dietrich
    • Tanel Poder
  • 공지사항

  • 인기 글

  • 태그

    12c
    19c
    21c
    23ai
    case study
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
정희락
ONNX Model
상단으로

티스토리툴바