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
Criar tabela
Crie a tabelahackernews 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çãoCarregar dados
Para carregar os dados a partir do arquivoParquet, execute a seguinte instrução SQL:Criar um índice de similaridade vetorial
Execute o SQL abaixo para definir e criar um índice de similaridade vetorial na colunavector 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.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
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 Pythonsentence_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.