Pular para o conteúdo principal

Introdução

O conjunto de dados Hacker News contém 28,74 milhões de postagens e seus embeddings vetoriais. Os embeddings foram gerados com o modelo SentenceTransformers all-MiniLM-L6-v2. A dimensão de cada vetor de embedding é 384. Este conjunto de dados pode ser usado para explorar os aspectos de projeto, dimensionamento e desempenho de uma aplicação real de busca vetorial em grande escala, construída sobre dados textuais gerados por usuários.

Detalhes do conjunto de dados

O conjunto de dados completo com embeddings vetoriais é disponibilizado pela ClickHouse como um único arquivo Parquet em um bucket do S3 Recomendamos que os usuários façam primeiro uma análise de dimensionamento para estimar os requisitos de armazenamento e memória desse conjunto de dados, consultando a documentação.

Etapas

1

Criar tabela

Crie a tabela hackernews para armazenar as postagens, seus embeddings e os atributos associados:
O id é apenas um número inteiro sequencial. Os atributos adicionais podem ser usados em predicados para compreender a busca por similaridade vetorial combinada com pós-filtragem/pré-filtragem, conforme explicado na documentação
2

Carregar dados

Para carregar os dados a partir do arquivo Parquet, execute a seguinte instrução SQL:
A inserção de 28,74 milhões de linhas na tabela levará alguns minutos.
3

Criar um índice de similaridade vetorial

Execute o SQL abaixo para definir e criar um índice de similaridade vetorial na coluna vector da tabela hackernews:
Os parâmetros e as considerações de desempenho para a criação do índice e a busca são descritos na documentação. A instrução acima usa os valores 64 e 512, respectivamente, para os hiperparâmetros HNSW M e ef_construction. Você precisa selecionar cuidadosamente os valores ideais para esses parâmetros, avaliando o tempo de criação do índice e a qualidade dos resultados de busca correspondentes aos valores selecionados.A criação e o salvamento do índice podem levar alguns minutos ou até uma hora para o conjunto de dados completo de 28,74 milhões, dependendo do número de núcleos de CPU disponíveis e da largura de banda do armazenamento.
4

Faça uma busca ANN

Depois que o índice de similaridade vetorial for criado, as consultas de busca vetorial usarão automaticamente o índice:
Query
O primeiro carregamento do índice vetorial na memória pode levar alguns segundos/minutos.
5

Gerar embeddings para consulta de busca

Sentence Transformers oferecem modelos de embedding locais e fáceis de usar para capturar o significado semântico de frases e parágrafos.O conjunto de dados do HackerNews contém embeddings vetoriais gerados pelo modelo all-MiniLM-L6-v2.Um exemplo de script Python é fornecido abaixo para demonstrar como gerar vetores de embedding programaticamente usando o pacote Python sentence_transformers. O vetor de embedding de busca é então passado como argumento para a função cosineDistance() na consulta `SELECT`.
Um exemplo da execução do script Python acima e os resultados da busca por similaridade são exibidos abaixo (apenas 100 caracteres de cada um dos 20 posts principais são exibidos):

Aplicativo de demonstração de sumarização

O exemplo acima mostrou a busca semântica e a recuperação de documentos usando o ClickHouse.A seguir, é apresentada uma aplicação de exemplo de IA generativa simples, mas com alto potencial.O aplicativo executa as seguintes etapas:
  1. Aceita um topic fornecido pelo usuário
  2. Gera um vetor de embedding para o tema usando o SentenceTransformers com o modelo all-MiniLM-L6-v2
  3. Recupera posts/comentários altamente relevantes usando busca por similaridade vetorial na tabela hackernews
  4. Usa LangChain e a Chat API gpt-3.5-turbo da OpenAI para resumir o conteúdo recuperado na etapa #3. Os posts/comentários recuperados na etapa #3 são usados como contexto para a Chat API e constituem o principal elo da IA generativa.
Um exemplo da execução do aplicativo de sumarização é listado abaixo, seguido pelo código do aplicativo de sumarização. Para executar o aplicativo, é necessário definir uma API key da OpenAI na variável de ambiente OPENAI_API_KEY. A API key da OpenAI pode ser obtida após o cadastro em https://platform.openai.com.Este aplicativo demonstra um caso de uso de Generative AI aplicável a vários domínios empresariais, como: análise de sentimento de clientes, automação do suporte técnico, mineração de conversas de usuários, documentos jurídicos, prontuários médicos, transcrições de reuniões, demonstrações financeiras etc.
Código do aplicativo acima:
Última modificação em 29 de junho de 2026