ClickHouse para busca vetorial!
Sim, o ClickHouse pode realizar busca vetorial.
As principais vantagens de usar o ClickHouse para busca vetorial, em comparação com bancos de dados vetoriais mais especializados, incluem:
- Usar os recursos de filtragem e busca de texto completo do ClickHouse para refinar seus dados antes de realizar uma busca.
- Fazer análises nos seus dados.
- Executar um
JOINcom seus dados existentes. - Não precisar gerenciar mais um banco de dados e complicar sua infraestrutura.
Aqui está um tutorial rápido sobre como usar o ClickHouse para busca vetorial.
Criar embeddings
Seus dados (documentos, imagens ou dados estruturados) devem ser convertidos em embeddings. Recomendamos criar embeddings usando a OpenAI Embeddings API ou a biblioteca Python de código aberto SentenceTransformers.
Você pode pensar em um embedding como um grande vetor de números de ponto flutuante que representa seus dados. Confira este guia da OpenAI para saber mais sobre embeddings.
Armazenar os embeddings
Depois de gerar os embeddings, você precisa armazená-los no ClickHouse. Cada embedding deve ser armazenado em uma linha separada e pode incluir metadados para filtragem, agregações ou analytics. Aqui está um exemplo de uma tabela que pode armazenar imagens com legendas:
CREATE TABLE images
(
`_file` LowCardinality(String),
`caption` String,
`image_embedding` Array(Float32)
)
ENGINE = MergeTree;Buscar embeddings relacionados
Digamos que você queira buscar fotos de cachorros nos seus dados. Você pode usar uma função de distância como cosineDistance para usar o embedding de uma imagem de cachorro como entrada e buscar imagens relacionadas:
SELECT
_file,
caption,
cosineDistance(
-- Um embedding da sua imagem de cachorro de "entrada"
[0.5736801028251648, 0.2516217529773712, ..., -0.6825592517852783],
image_embedding
) AS score
FROM images
ORDER BY score ASC
LIMIT 10Esta consulta retorna os nomes de _file e caption das 10 imagens com maior probabilidade de estarem relacionadas à imagem de cachorro fornecida.
Leitura complementar
Para acompanhar um tutorial mais aprofundado sobre busca vetorial usando ClickHouse, consulte: