73 lines
2.4 KiB
SQL
73 lines
2.4 KiB
SQL
create or replace function fnc_26ai_manufatura( p_image_id in number,
|
|
p_comp_id in varchar2,
|
|
p_credential in varchar2 default 'OCI_CRED')
|
|
return clob
|
|
as
|
|
/*
|
|
|
|
Criado por: fernando.leal@oracle.com
|
|
Data: Nov/2025
|
|
Objetivo: demonstrar casos de uso do Oracle AI Database 26ai
|
|
|
|
v1 - similaridade e rag para Manufatura - leal
|
|
|
|
SelectAI para pesquisas por texto:
|
|
|
|
begin
|
|
dbms_cloud_ai.create_profile(
|
|
profile_name => 'PROF_26AI_MANUF_V1',
|
|
attributes =>
|
|
'{"provider": "oci",
|
|
"credential_name": "OCI_CRED",
|
|
"oci_compartment_id": "ocid1.compartment.oc1..aaaaaaaaev2ipyek53f7sck5ibvtnqrp5w2k54qiuk2cikbfati5bk54yhka",
|
|
"region": "us-chicago-1",
|
|
"model": "meta.llama-4-maverick-17b-128e-instruct-fp8",
|
|
"oci_apiformat": "GENERIC",
|
|
"object_list": [
|
|
{"owner": "AICHAT1", "name":"TB_26AI_MANUFATURA_CATALOGO_TEXTO"}
|
|
],
|
|
"comments": true,
|
|
"annotations": true,
|
|
"temperature": 0.1
|
|
}'
|
|
);
|
|
end;
|
|
|
|
*/
|
|
messages CLOB;
|
|
v_vector clob;
|
|
p_prompt clob;
|
|
begin
|
|
|
|
SELECT json_value( fnc_26ai_embed_image_cohere(file_name, file_blob, p_credential , p_comp_id) , '$.embeddings[*].vector()')
|
|
INTO v_vector
|
|
from TB_26AI_MANUFATURA
|
|
where id = p_image_id;
|
|
|
|
for message_cursor in (
|
|
|
|
SELECT embed_data
|
|
FROM (
|
|
SELECT 'Part Number: ' || PART_NUMBER || ' Descrição: ' || DESCRIPTION || ' Categoria: ' || CATEGORY || ' SKU: ' || SKU embed_data
|
|
FROM TB_26AI_MANUFATURA_CATALOGO_TEXTO
|
|
)
|
|
ORDER BY VECTOR_DISTANCE( FNC_26AI_EMBED(embed_data,'COHERE') , v_vector , COSINE )
|
|
FETCH EXACT FIRST 5 ROWS ONLY
|
|
|
|
) loop
|
|
|
|
messages := messages || '"' || replace(replace(replace(replace(message_cursor.embed_data,chr(10),null),chr(13),null),'"',''),'''','') || '",' ;
|
|
|
|
END LOOP;
|
|
|
|
-- cuidado com temperatura usando "." ou ","
|
|
--execute immediate('alter session set nls_numeric_characters=''.,'' ');
|
|
|
|
-- sem re-rank (opcao de uso para refinar resultado)
|
|
p_prompt := ' A imagem fornecida tem associacao com descricoes, ou nomes do catalogo vetorizado. Identifique a maior semelhança.' ||
|
|
' A resposta deve ser objetiva, descervendo SKU, Part Number, Categoria e Descricao. Dados do catalogo de produtos: ' || messages;
|
|
|
|
return fnc_26ai_rag_manufatura(p_prompt ,p_credential, p_image_id, p_comp_id);
|
|
|
|
end;
|
|
/ |