From 855dee048aa1eb339d0aeaad6412c41d2480a691 Mon Sep 17 00:00:00 2001 From: Marcos Lohmann Date: Wed, 13 Aug 2025 11:51:57 -0300 Subject: [PATCH] Create readme.md --- 23AI/readme.md | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 23AI/readme.md diff --git a/23AI/readme.md b/23AI/readme.md new file mode 100644 index 0000000..834fb37 --- /dev/null +++ b/23AI/readme.md @@ -0,0 +1,85 @@ +# Instalação de Modelo ONNX no Oracle Autonomous Database 23AI + +Este script PL/SQL realiza a instalação de um modelo ONNX de embeddings no Oracle Autonomous Database 23AI, utilizando os recursos nativos da OCI e do pacote `DBMS_VECTOR`. + +## 🧩 Objetivo + +Carregar o modelo `all-MiniLM-L12-v2.onnx` a partir de um bucket no Oracle Object Storage e registrá-lo no banco para uso com `DBMS_VECTOR.EMBED_TEXT`. + +--- + +## 📁 Pré-Requisitos + +- Bucket no Oracle Object Storage com o modelo `.onnx` disponível publicamente **ou** configurado com uma `credential_name`. +- Privilégios para usar os pacotes: + - `DBMS_CLOUD` + - `DBMS_VECTOR` + - `DBMS_DATA_MINING` (para drop do modelo) +- Permissão de escrita no diretório `DATA_PUMP_DIR`. + +--- + +## 📜 Script PL/SQL + +```plsql +DECLARE + ONNX_MOD_FILE VARCHAR2(100) := 'all_MiniLM_L12_v2.onnx'; + MODNAME VARCHAR2(500); + LOCATION_URI VARCHAR2(300) := 'https://objectstorage.us-chicago-1.oraclecloud.com/p/YspaXeded3c3ShsteS31GeX_cNCcgUjDHzWt9lqevD9D7FlBRgC1a9vmzFE41X9X/n/idajmumkp9ca/b/lohmann-ai-br/o/LLM/'; + +BEGIN + DBMS_OUTPUT.PUT_LINE('ONNX model file name in Object Storage is: '||ONNX_MOD_FILE); + + -- Define o nome do modelo com base no nome do arquivo + SELECT UPPER(REGEXP_SUBSTR(ONNX_MOD_FILE, '[^.]+')) INTO MODNAME FROM dual; + DBMS_OUTPUT.PUT_LINE('Model will be loaded and saved with name: '||MODNAME); + + -- Drop do modelo anterior, se existir + BEGIN DBMS_DATA_MINING.DROP_MODEL(model_name => MODNAME); + EXCEPTION WHEN OTHERS THEN NULL; END; + + -- Download do modelo do Object Storage para o banco + DBMS_CLOUD.GET_OBJECT( + credential_name => NULL, + directory_name => 'DATA_PUMP_DIR', + object_uri => LOCATION_URI || ONNX_MOD_FILE); + + -- Registro do modelo no banco + DBMS_VECTOR.LOAD_ONNX_MODEL( + directory => 'DATA_PUMP_DIR', + file_name => ONNX_MOD_FILE, + model_name => MODNAME); + + DBMS_OUTPUT.PUT_LINE('New model successfully loaded with name: '||MODNAME); +END; +``` + +--- + +## ✅ Pós-Instalação + +### Validar se o modelo foi carregado: +```sql +SELECT model_name, model_type, created_on +FROM all_models +WHERE model_name = 'ALL_MINILM_L12_V2'; +``` + +### Gerar Embedding de um texto: +```sql +SELECT DBMS_VECTOR.EMBED_TEXT( + 'ALL_MINILM_L12_V2', + 'Exemplo de texto para embedding' + ) AS emb +FROM dual; +``` + +--- + +## 📌 Observações + +- O nome do modelo será sempre o nome do arquivo em maiúsculas, sem a extensão. +- A função `EMBED_TEXT` exige que o modelo seja do tipo embedding ONNX com entrada de string. +- Sessões que usam `DBMS_VECTOR` devem garantir que o modelo foi carregado previamente no ambiente. + +---