Oracle 23Ai Free 에서 ONNX 모델을 로드하여 데이터를 벡터화 시키고, 유사도 검색을 수행 해 본다. 여기서는 벡터 인덱스에 대해서는 다루지 않고, 기본적으로 Vector 검색이 어떻게 이루어지는지 확인한다.
따라서 해당 문서의 목적은 임의의 샘플 데이터를 통해 데이터를 벡터화 하여 저장하고, 해당 벡터 데이터를 이용하여 어떤 함수를 이용하여 데이터를 가져오는지에 초첨을 맞춘다.
SQL> SELECT VERSION_FULL FROM PRODUCT_COMPONENT_VERSION;
VERSION_FULL
---------------
23.8.0.25.04
Oracle 23ai Free 의 다운로드는 여기 에서 받을 수 있으며, 설치는 Installation Guide for Linux 문서를 참고한다.
ONNX 는 Open Neural Network eXchange 의 약자로, 딥러닝 모델을 다양한 프레임워크 간에 호환되게 하기 위한 표준 포맷이다. 데이터베이스에서 데이터를 Vector 화 시키기 위해서는 이러한 ONNX 모델을 임포트 하여 해당 모델을 통해 데이터를 Vector 화를 수행할 수 있다.
데이터베이스 외부의 어플리케이션에서 데이터를 미리 Vector 화 시켜 데이터베이스에서는 검색만 수행할 시 해당 모델을 로드할 필요는 없으며, VECTOR_DISTANCE 함수를 이용하여 유사도 검색을 수행할 수 있다.
오라클은 Hugging Face all-MiniLM-L12-v2 모델을 ONNX 포맷으로 제공하고 있으며, DBMS_VECTOR.LOAD_ONNX_MODEL 프로시저를 통해 직접 임포트를 수행할 수 있다.
또는, 아래의 오라클 공식 문서를 통해 ONNX 포맷을 다운로드 할 수 있다. [다운로드]
Oracle AI Vector Search User's Guide
다운로드 버튼은 언제든 오라클사에 의해 삭제될 수 있음
Pretrained Model 을 ONNX Model 로 컨버팅하기 위해서는 오라클의 문서 Convert Pretrained Models to ONNX Model: End-to-End Instructions for Text Embedding 을 참고한다.
다운로드 받은 ONNX 파일을 데이터베이스 서버에 위치시고 압축을 해제한다. 압축을 해제하면 .onnx 확장자의 파일이 생성되어 있다.
(oda23ai)/u01/llm/onnx_model> ls -lrt
total 249936
-rw-r--r-- 1 root root 133322334 Jul 15 2024 all_MiniLM_L12_v2.onnx
-rw-r--r-- 1 root root 4232 Jul 15 2024 README-ALL_MINILM_L12_V2-augmented.txt
-rw-r--r-- 1 root root 122597346 Jul 16 2024 all_MiniLM_L12_v2_augmented.zip
오라클 데이터베이스에서 해당 경로로의 디렉토리 오브젝트를 생성한다.