Hub documentation
Realizar busca de similaridade vetorial
Realizar busca de similaridade vetorial
O recurso de Arrays de Comprimento Fixo foi adicionado na versΓ£o 0.10.0 do DuckDB. Isso permite usar embeddings de vetores em tabelas do DuckDB, tornando sua anΓ‘lise de dados ainda mais poderosa.
AlΓ©m disso, a funΓ§Γ£o array_cosine_similarity foi introduzida. Esta funΓ§Γ£o mede o cosseno do Γ’ngulo entre dois vetores, indicando sua similaridade. Um valor de 1 significa que estΓ£o perfeitamente alinhados, 0 significa que sΓ£o perpendiculares e -1 significa que sΓ£o completamente opostos.
Vamos explorar como usar essa funΓ§Γ£o para buscas de similaridade. Nesta seΓ§Γ£o, mostraremos como realizar buscas de similaridade usando DuckDB.
Usaremos o dataset asoria/awesome-chatgpt-prompts-embeddings.
Primeiro, vamos visualizar alguns registros do conjunto de dados:
FROM 'hf://datasets/asoria/awesome-chatgpt-prompts-embeddings/data/*.parquet' SELECT act, prompt, len(embedding) as embed_len LIMIT 3;
ββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ¬ββββββββββββ
β act β prompt β embed_len β
β varchar β varchar β int64 β
ββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌββββββββββββ€
β Linux Terminal β I want you to act as a linux terminal. I will type commands and you will reply with what the terminal should show. I want you to only reply with the terminal output insidβ¦ β 384 β
β English Translatorβ¦ β I want you to act as an English translator, spelling corrector and improver. I will speak to you in any language and you will detect the language, translate it and answerβ¦ β 384 β
β `position` Interviβ¦ β I want you to act as an interviewer. I will be the candidate and you will ask me the interview questions for the `position` position. I want you to only reply as the inteβ¦ β 384 β
ββββββββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄ββββββββββββ
A seguir, vamos escolher um embedding para usar na busca de similaridade:
FROM 'hf://datasets/asoria/awesome-chatgpt-prompts-embeddings/data/*.parquet' SELECT embedding WHERE act = 'Linux Terminal';
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β embedding β
β float[] β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β [-0.020781303, -0.029143505, -0.0660217, -0.00932716, -0.02601602, -0.011426172, 0.06627567, 0.11941507, 0.0013917526, 0.012889079, 0.053234346, -0.07380514, 0.04871567, -0.043601237, -0.0025319182, 0.0448β¦ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Agora, vamos usar o embedding selecionado para encontrar registros semelhantes:
SELECT act,
prompt,
array_cosine_similarity(embedding::float[384], (SELECT embedding FROM 'hf://datasets/asoria/awesome-chatgpt-prompts-embeddings/data/*.parquet' WHERE act = 'Linux Terminal')::float[384]) AS similarity
FROM 'hf://datasets/asoria/awesome-chatgpt-prompts-embeddings/data/*.parquet'
ORDER BY similarity DESC
LIMIT 3;
ββββββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ¬βββββββββββββ
β act β prompt β similarity β
β varchar β varchar β float β
ββββββββββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββΌβββββββββββββ€
β Linux Terminal β I want you to act as a linux terminal. I will type commands and you will reply with what the terminal should show. I want you to only reply with the terminal output insiβ¦ β 1.0 β
β JavaScript Console β I want you to act as a javascript console. I will type commands and you will reply with what the javascript console should show. I want you to only reply with the terminβ¦ β 0.7599728 β
β R programming Inteβ¦ β I want you to act as a R interpreter. I'll type commands and you'll reply with what the terminal should show. I want you to only reply with the terminal output inside onβ¦ β 0.7303775 β
ββββββββββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ΄βββββββββββββ
Γ isso! VocΓͺ realizou com sucesso uma busca de similaridade vetorial usando DuckDB.
Update on GitHub