diff --git a/23AI/example/xpto-store-vector-search-funcs.sql b/23AI/example/xpto-store-vector-search-funcs.sql new file mode 100644 index 0000000..320dd38 --- /dev/null +++ b/23AI/example/xpto-store-vector-search-funcs.sql @@ -0,0 +1,78 @@ +-- Vector Search Function for CLIENTES +CREATE OR REPLACE FUNCTION xpto_store.search_clientes_vetoriais( + termo_busca VARCHAR2, + n_resultados NUMBER DEFAULT 5 +) RETURN SYS_REFCURSOR +IS + resultado SYS_REFCURSOR; +BEGIN + OPEN resultado FOR + SELECT + id_cliente as DOCID, + nome as BODY, + COSINE_DISTANCE( + vetor_nome_email, + VECTOR_EMBEDDING(ALL_MINILM_L12_V2 USING termo_busca AS DATA) + ) AS SCORE + FROM + xpto_store.xpto_clientes + WHERE + vetor_nome_email IS NOT NULL + ORDER BY + SCORE + FETCH FIRST n_resultados ROWS ONLY; + RETURN resultado; +END; + +-- Vector Search Function for PRODUTOS +CREATE OR REPLACE FUNCTION xpto_store.search_produtos_vetoriais( + termo_busca VARCHAR2, + n_resultados NUMBER DEFAULT 5 +) RETURN SYS_REFCURSOR +IS + resultado SYS_REFCURSOR; +BEGIN + OPEN resultado FOR + SELECT + id_produto as DOCID, + nome as BODY, + COSINE_DISTANCE( + vetor_descricao, + VECTOR_EMBEDDING(ALL_MINILM_L12_V2 USING termo_busca AS DATA) + ) AS SCORE + FROM + xpto_store.xpto_produtos + WHERE + vetor_descricao IS NOT NULL + ORDER BY + SCORE + FETCH FIRST n_resultados ROWS ONLY; + RETURN resultado; +END; + +-- Vector Search Function for CATEGORIAS +CREATE OR REPLACE FUNCTION xpto_store.search_categorias_vetoriais( + termo_busca VARCHAR2, + n_resultados NUMBER DEFAULT 5 +) +RETURN SYS_REFCURSOR +IS + resultado SYS_REFCURSOR; +BEGIN + OPEN resultado FOR + SELECT + id_categoria as DOCID, + nome as BODY, + COSINE_DISTANCE( + vetor_nome_descricao, + VECTOR_EMBEDDING(ALL_MINILM_L12_V2 USING termo_busca AS DATA) + ) AS SCORE + FROM + xpto_store.xpto_categorias + WHERE + vetor_nome_descricao IS NOT NULL + ORDER BY + SCORE + FETCH FIRST n_resultados ROWS ONLY; + RETURN resultado; +END;