Banco de dados de código aberto da Weaviate para busca vetorial

A Weaviate é um dos nomes quando se fala em desenvolvimento de motores de busca vetorial. Mas, o que significa a busca vetorial e por que ela é relevante?

Nos últimos anos, as áreas de motores de busca, Programação de Linguagem Natural (NLP, pelas siglas em inglês) e Machine Learning (ML, ou aprendizado de máquina) têm passado por várias descobertas e avanços. Isso inclui novas ferramentas e paradigmas para oferecer melhores resultados.

Neste assunto, no momento de pensar em mecanismos de busca, talvez a primeira coisa que vem à mente são mecanismos de busca e indexadores na Internet, como Google ou Bing. No entanto, “a pesquisa vetorial marca uma grande mudança deste método tradicional de recuperação de informações para um futuro no qual todos os dados complexos que compõem os ativos de conteúdo modernos podem ser colocados em funcionamento”, como é explicado neste artigo no site do Search Engine Journal.

 Mas, vamos dividir esses conceitos para entender melhor essa área.

O que são os vector embeddings?

Em poucas palavras, um mecanismo de busca de vetorial funciona com vector embeddings (incorporações vetoriais) no lugar de palavras-chave. Diferente dos algoritmos de “pesquisa tradicional” que verificam uma lista de linhas até encontrar um que se encaixe nos critérios do banco de dados, a busca vetorial usa ML para capturar o contexto e o significado de dados não estruturados. Desta forma, os algoritmos de ML podem analisar e ler diferentes formatos (texto, imagens, áudio e dados) como dados numéricos.

O conceito de  “similaridade vetorial” também é fundamental aqui. Permite comparar a semelhança de objetos capturados por modelos de ML e identifica as semelhanças como os valores mais próximos. Isto habilita buscas semânticas, buscas de imagens e melhores recomendações.

O que são as bibliotecas ANN?

Este documento define uma Approximate Nearest Neighbor (ANN) como “uma biblioteca escrita em C++, que suporta estruturas de dados e algoritmos para a busca exata e aproximada do ‘vizinho mais próximo’ em dimensões arbitrariamente altas”. As bibliotecas ANN têm sido um recurso para motores de busca. Porém, este método apresenta algumas limitações, incluindo a falta de capacidades em tempo real e a mutabilidade. Além disso, é fundamental considerar a quantidade de dados nos quais as empresas precisam pesquisar para concluir essas tarefas.

 “Você pode ter ouvido falar da Annoy do Spotify, da Faiss do Facebook ou da ScaNN do Google. O que todas elas têm em comum é que fazem uma troca consciente entre precisão (exatitude e memória) e velocidade de recuperação (…) No entanto, há ainda um outro trade-off que os engenheiros têm que fazer ao usar modelos ANN. Muitas das bibliotecas comuns da ANN ficam aquém de alguns dos recursos com os quais estamos acostumados ao trabalhar com bancos de dados e mecanismos de busca tradicionais ”, explica Etienne Dilocker, co-fundador e CTO da SeMi Technologies.

 Aqui é onde a busca vetorial entra no jogo, permitindo uma execução mais rápida e gerando resultados mais relevantes.

Motor de busca vetorial da Weaviate

Segundo seus criadores, “um dos desafios mais recorrentes apresentou-se na nomeação e na busca. Como chamamos certos objetos e como poderíamos encontrar dados que foram estruturados de maneiras diferentes?”. Essas primeiras perguntas levaram ao desenvolvimento de Weaeviate, partindo de uma abordagem mais tradicional “onde o elemento semântico (NLP) era uma característica e não a arquitetura central” para uma ferramenta mais refinada com o elemento de busca semântica e classificação semântica como características centrais. Neste contexto, “um dos objetivos ao projetar a Weaviate era combinar a velocidade e as capacidades em larga escala dos modelos ANN com toda a funcionalidade que gostamos sobre bancos de dados”.

Agora, a Weaviate é oficialmente apresentada como “um mecanismo de busca de código aberto com um modelo NLP integrado. (…) O que torna à Weaviate única é que armazena dados em um espaço vetorial em vez de uma estrutura tradicional de colunas de linha ou gráficos, permitindo que você pesquise dados com base em seu significado, em vez de palavras-chave.”

Alguns exemplos de implementações incluem:

●   Classificação de boletos em categorias.

●   Busca por documentos para conceitos específicos em vez de palavras-chave.

●   Busca nos sites.

●   Gráficos de conhecimento do produto.

Como funciona Weaviate?

Etienne Dilocker também sinaliza que “qualquer objeto importado para a Weaviate pode ser consultado imediatamente — seja por meio de uma pesquisa por seu id, uma pesquisa por palavra-chave usando o índice invertido ou uma busca vetorial. Isso faz da Weaviate um mecanismo de busca vetorial em tempo real. E como a Weaviate também usa um modelo ANN subyacente, a pesquisa de vetores será tão rápida quanto com uma biblioteca”.

Um diagrama sobre a estrutura Weaviate. Fonte.

Esta análise da Analytics Vidhya listou algumas considerações e detalhes sobre Weaviate:

●   Weaviate é um banco de dados persistente e tolerante a falhas.

●   Internamente, cada classe no esquema definido pelo usuário da Weaviate resulta no desenvolvimento de um índice. Um tipo de classificação que consiste em um ou mais fragmentos é chamado de índice, e fragmentos são unidades de armazenamento autônomas dentro de um índice.

●   Vários fragmentos podem ser utilizados para dividir automaticamente a carga entre vários nós do servidor, atuando como um balanceador de carga. Cada seção de fragmentos consiste em três componentes principais: armazenamento de objetos, índice invertido e armazenamento de índice vetorial.

●   O armazenamento de objetos e o armazenamento invertido foram desenvolvidos usando uma arquitetura LSM-Tree. Isso significa que os dados podem ser consumidos na velocidade da memória e, se um limite for atingido, Weaviate gravará a memória completa (ordenada) em um segmento de disco.

●   A Weaviate examinará primeiro a Memtable para a atualização mais recente para um objeto específico ao receber uma solicitação de leitura. A Weaviate verificará todos os segmentos escritos anteriormente, começando pelo mais recente, se não estiver presente na Memtable. Os filtros “Bloom” impedem o exame de segmentos que não contêm os objetos solicitados.

●   O armazenamento invertido/objetos emprega uma técnica LSM baseada em segmentação. O índice vetorial, por outro lado, não é afetado pela segmentação e é independente desses armazenamentos de objetos.

●   Hierarchical Navigable Small-World graph (HNSW) é o primeiro tipo de índice vetorial suportado pela Weaviate para atuar como um gráfico multicamadas.

Vantagens do uso da Weaviate

●       Métodos e linguagens: funciona com diferentes métodos, como GraphQL, REST e várias linguagens de programação, como Python, Javascript e Go.

●   Acessibilidade e escalabilidade: A Weaviate é nativa da nuvem e de código aberto. Além disso, oferece um modelo de preços inspirado no “pay-as-you-grow”, de acordo com o uso.

●   Modularidade: A Weaviate pode cobrir uma grande variedade de bases e vem com módulos opcionais para texto, imagens e outros tipos de mídia. Esses módulos podem fazer a vetorização. É possível combinar módulos e estabelecer uma relação entre eles. Por exemplo: um objeto de texto e um objeto de imagem correspondente.

●   Agnóstica: Weaviate é agnóstica por padrão. “Isso significa que equipes com experiência em ciência de dados e ML podem simplesmente continuar usando seus modelos bem ajustados e importar seus objetos de dados junto com suas posições vetoriais existentes”.

Algumas vantagens dos bancos de dados:

●  Suporte para CRUD.

●  Resultados em tempo real, ou quase em tempo real.

●  Mutabilidade.

●  Persistência.

●  Consistência e resiliência.

Primeiros passos

Os engenheiros de software estão usando a Weaviate como um banco de dados ML-first para suas aplicações. Dessa forma, os engenheiros de dados podem usar um banco de dados vetorial construído do zero com ANN em seu núcleo, e os cientistas de dados podem implantar seus aplicativos de pesquisa com MLOps.

Existem três maneiras de executar:

  1. Weaviate Cloud Service
  2. Docker
  3. Kubernetes

 Para saber mais sobre a Weaviate, confira esta documentação.

Scroll to Top