Introdução
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
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 O
hackernews para armazenar as postagens, seus embeddings e os atributos associados: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ção2
Carregar dados
Para carregar os dados a partir do arquivo A inserção de 28,74 milhões de linhas na tabela levará alguns minutos.
Parquet, execute a seguinte instrução SQL:3
Criar um índice de similaridade vetorial
Execute o SQL abaixo para definir e criar um índice de similaridade vetorial na coluna 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
vector da tabela hackernews: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:O primeiro carregamento do índice vetorial na memória pode levar alguns segundos/minutos.
Query
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 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):Código do aplicativo acima:
sentence_transformers. O vetor de embedding de busca
é então passado como argumento para a função cosineDistance() na consulta `SELECT`.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:- Aceita um topic fornecido pelo usuário
- Gera um vetor de embedding para o tema usando o
SentenceTransformerscom o modeloall-MiniLM-L6-v2 - Recupera posts/comentários altamente relevantes usando busca por similaridade vetorial na tabela
hackernews - Usa
LangChaine a Chat APIgpt-3.5-turboda 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.
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.