Definição de banco de dados vetorial

Um banco de dados vetorial é um banco de dados que armazena informações como vetores, que são representações numéricas de objetos de dados, também conhecidos como embeddings vetoriais. Ele aproveita o poder dessas embeddings vetoriais para indexar e buscar em um enorme conjunto de dados não estruturados e dados semiestruturados, como imagens, texto ou dados de sensores. Os bancos de dados vetoriais são construídos para gerenciar embeddings vetoriais e, portanto, oferecem uma solução completa para o gerenciamento de dados não estruturados e semiestruturados.

Um banco de dados vetorial é diferente de uma biblioteca de busca vetorial ou de um índice vetorial: é uma solução de gerenciamento de dados que permite armazenamento e filtragem de metadados, é escalável, permite alterações dinâmicas nos dados, realiza backups e oferece recursos de segurança.

Um banco de dados vetorial organiza os dados por meio de vetores de alta dimensão. Os vetores de alta dimensão contêm centenas de dimensões, e cada dimensão corresponde a um recurso ou propriedade específica do objeto de dados que ela representa.

O que são embeddings vetoriais?

Os embeddings vetoriais são uma representação numérica de um sujeito, palavra, imagem ou qualquer outro dado. Os embeddings vetoriais (também conhecidos como embeddings) são gerados por grandes modelos de linguagem e outros modelos de IA.

A distância entre cada embedding vetorial é o que permite que um banco de dados vetorial, ou um mecanismo de busca vetorial, determine a similaridade entre os vetores. As distâncias podem representar diversas dimensões de objetos de dados, habilitando o machine learning e a compreensão de padrões, relações e estruturas subjacentes pela IA.

Saiba como implantar seus embeddings de texto

Como funciona um banco de dados vetorial?

Um banco de dados vetorial funciona usando algoritmos para indexar e consultar embeddings vetoriais. Os algoritmos habilitam a busca do vizinho mais próximo aproximado (ANN, pelas iniciais em inglês) por meio de hashing, quantização ou busca baseada em gráfico.

Para recuperar informações, uma busca de ANN encontra o vizinho vetorial mais próximo de uma consulta. Fazendo uso menos intensivo de recursos de computação do que uma busca de kNN (vizinho mais próximo conhecido ou algoritmo de k vizinhos mais próximos verdadeiros), uma busca de vizinhos mais próximos aproximados também é menos precisa. No entanto, funciona de forma eficiente e em escala para grandes conjuntos de dados de vetores de alta dimensão.

Um pipeline de banco de dados vetorial é mais ou menos assim:

Diagram of how a vector search engine works using vector embeddings

  1. Indexação. Usando técnicas de hashing, quantização ou baseadas em gráficos, um banco de dados vetorial indexa vetores mapeando-os para uma determinada estrutura de dados. Isso permite uma busca mais rápida.

    • Hashing. Um algoritmo de hashing, como o algoritmo de hashing sensível à localidade (LSH, pelas iniciais em inglês), é mais adequado para uma busca de vizinho mais próximo aproximado porque gera resultados aproximados com agilidade. O LSH usa tabelas hash (pense em um quebra-cabeça Sudoku) para mapear os vizinhos mais próximos. Uma consulta será convertida em hash em uma tabela e então comparada a um conjunto de vetores na mesma tabela para determinar a similaridade.
    • Quantização. Uma técnica de quantização, como a quantização de produto (PQ), dividirá os vetores em partes menores, representará essas partes com código e depois juntará as partes novamente. O resultado é uma representação de código de um vetor e seus componentes. O conjunto desses códigos é denominado livro de códigos. Quando consultado, um banco de dados vetorial que usar quantização dividirá a consulta em código e, em seguida, fará a correspondência com o livro de códigos para encontrar o código mais semelhante e gerar resultados.
    • Com base em gráficos. Um algoritmo gráfico, como o Hierarchical Navigable Small World (HNSW), usa nós para representar vetores. Ele agrupa os nós e desenha linhas ou arestas entre nós semelhantes, criando gráficos hierárquicos. Quando uma consulta for executada, o algoritmo navegará na hierarquia de gráficos para encontrar nós contendo os vetores mais semelhantes ao vetor da consulta.

    Um banco de dados vetorial também indexará os metadados de um objeto de dados. Por esse motivo, um banco de dados vetorial conterá dois índices: um índice vetorial e um índice de metadados.

     

  2. Consulta. Quando um banco de dados vetorial recebe uma consulta, ele compara os vetores indexados com o vetor da consulta para determinar os vizinhos vetoriais mais próximos. Para estabelecer os vizinhos mais próximos, um banco de dados vetorial recorre a métodos matemáticos conhecidos como medidas de similaridade. Existem diferentes tipos de medidas de similaridade:

    • A similaridade de cosseno estabelece a similaridade em um intervalo de -1 a 1. Ao medir o cosseno do ângulo entre dois vetores em um espaço vetorial, ela determina os vetores diametralmente opostos (representados por -1), ortogonais (representados por 0) ou idênticos (representados por 1).
    • A distância euclidiana determina a similaridade em um intervalo de 0 ao infinito medindo a distância em linha reta entre os vetores. Vetores idênticos são representados por 0, enquanto valores maiores representam uma diferença maior entre os vetores.
    • As medidas de similaridade de produto escalar determinam a similaridade vetorial em um intervalo de menos infinito a infinito. Ao medir o produto da magnitude de dois vetores e o cosseno do ângulo entre eles, o produto escalar atribui valores negativos a vetores que apontam para longe um do outro, 0 a vetores ortogonais e valores positivos a vetores que apontam na mesma direção.
  3. Pós-processamento. Às vezes, a etapa final em um pipeline de banco de dados vetorial é o pós-processamento ou pós-filtragem, durante a qual o banco de dados vetorial usará uma medida de similaridade diferente para reclassificar os vizinhos mais próximos. Nessa fase, o banco de dados filtrará os vizinhos mais próximos da consulta identificados na busca com base em seus metadados.

    Alguns bancos de dados vetoriais podem aplicar filtros antes de executar uma busca vetorial. Nesse caso, isso é denominado pré-processamento ou pré-filtragem.

Por que os bancos de dados vetoriais são importantes?

Os bancos de dados vetoriais são importantes porque contêm embeddings vetoriais e habilitam um conjunto de funcionalidades, incluindo indexação, métricas de distância e busca de similaridade. Em outras palavras, os bancos de dados vetoriais são especializados para o gerenciamento de dados não estruturados e dados semiestruturados. Como resultado, os bancos de dados vetoriais são uma ferramenta vital no cenário digital de machine learning e IA.

Componentes principais dos bancos de dados vetoriais

Um banco de dados vetorial pode ter os seguintes componentes principais:

  • Desempenho e tolerância a falhas. Os processos de sharding e replicação garantem que um banco de dados vetorial tenha bom desempenho e seja tolerante a falhas. O sharding envolve particionar os dados em vários nós, enquanto a replicação envolve fazer várias cópias dos dados em nós diferentes. Caso um nó falhe, isso permite contar com tolerância a falhas e desempenho contínuo.
  • Funcionalidades de monitoramento. Para garantir o desempenho e a tolerância a falhas, um banco de dados vetorial precisa de monitoramento do uso de recursos, do desempenho das consultas e da integridade geral do sistema.
  • Funcionalidades de controle de acesso. Os bancos de dados vetoriais também precisam de gerenciamento da segurança dos dados. A regulamentação do controle de acesso garante conformidade, responsabilização e capacidade de auditar o uso do banco de dados. Isso também significa que os dados estão protegidos: eles são acessados por quem tem as permissões e é mantido um registro da atividade do usuário.
  • Escalabilidade e capacidade de ajuste. Boas funcionalidades de controle de acesso influenciam a escalabilidade e a capacidade de ajuste de um banco de dados vetorial. À medida que a quantidade de dados armazenados aumenta, a escalabilidade horizontal torna-se obrigatória. Diferentes taxas de inserção e consulta, bem como diferenças no hardware subjacente, afetam as necessidades da aplicação.
  • Vários usuários e isolamento dos dados. Juntamente com a escalabilidade e as funcionalidades de controle de acesso, um banco de dados vetorial deve acomodar vários usuários (multitenancy). Em conjunto com isso, os bancos de dados vetoriais devem permitir o isolamento dos dados para que qualquer atividade do usuário (como inserções, exclusões ou consultas) permaneça privada para outros usuários, a menos que o contrário seja necessário.
  • Backups. Os bancos de dados vetoriais criam backups regulares dos dados. Esse é um componente importante de um banco de dados vetorial no caso de falha do sistema: se ocorrer perda ou corrupção dos dados, os backups poderão ajudar a restaurar o banco de dados ao estado anterior, minimizando o tempo de inatividade.
  • APIs e SDKs. Um banco de dados vetorial usa APIs para oferecer uma interface amigável. Uma API é uma interface de programação de aplicações ou um tipo de software que permite que as aplicações “conversem” entre si por meio de solicitações e respostas. As camadas da API simplificam a experiência da busca vetorial. Os SDKs (kits de desenvolvimento de software) geralmente incluem as APIs. São as linguagens de programação que o banco de dados usa para comunicação e administração. Os SDKs contribuem para um uso dos bancos de dados vetoriais intuitivo para o desenvolvedor porque eles não precisam se preocupar com a estrutura subjacente ao desenvolver casos de uso específicos (busca semântica, sistemas de recomendação etc.).

Qual é a diferença entre um banco de dados vetorial e um banco de dados tradicional?

Um banco de dados tradicional armazena informações em formato tabular e indexa os dados atribuindo valores a pontos de dados. Quando consultado, um banco de dados tradicional retorna resultados que correspondem exatamente à consulta.

Um banco de dados vetorial armazena vetores na forma de embeddings e habilita a busca vetorial, que retorna resultados de consulta com base em métricas de similaridade (em vez de correspondências exatas). Um banco de dados vetorial avança onde um banco de dados tradicional não consegue chegar: ele é intencionalmente projetado para operar com embeddings vetoriais.

Um banco de dados vetorial também é mais adequado do que um banco de dados tradicional em determinadas aplicações, como busca de similaridade, inteligência artificial e aplicações de machine learning, porque permite busca em altas dimensões e indexação customizada, além de ser escalável, flexível e eficiente.

Aplicações de bancos de dados vetoriais

Os bancos de dados vetoriais são usados em aplicações de IA, machine learning (ML), processamento de linguagem natural (PLN) e reconhecimento de imagens.

  • Aplicações de IA/ML. Um banco de dados vetorial pode melhorar as funcionalidades de IA com recuperação de informações semânticas e memória de longo prazo.
  • Aplicações de PLN. A busca de similaridade vetorial, um componente-chave dos bancos de dados vetoriais, é útil para aplicações de processamento de linguagem natural. Um banco de dados vetorial pode processar embeddings de texto, o que permite que um computador “entenda” a linguagem humana (ou natural).
  • Aplicações de reconhecimento e recuperação de imagens. Os bancos de dados vetoriais transformam imagens em embeddings de imagens. Com a busca por similaridade, conseguem recuperar imagens semelhantes ou identificar imagens correspondentes.

Os bancos de dados vetoriais também podem servir para detecção de anomalia e aplicações de detecção facial.

Banco de dados vetorial para o Elasticsearch

O Elasticsearch inclui um banco de dados vetorial para busca vetorial. A Elastic possibilita que os desenvolvedores criem seus próprios mecanismos de busca vetorial com o Elasticsearch Relevance Engine (ESRE).

Com as ferramentas do Elasticsearch, você pode criar um mecanismo de busca vetorial capaz de buscar dados estruturados e não estruturados, aplicar filtros e facetamentos, aplicar busca híbrida em dados de texto e vetoriais, e fazer uso da segurança no nível de documento e campo, enquanto executa sua implantação localmente, na nuvem ou em ambientes híbridos.

Explore o banco de dados vetorial do Elasticsearch

Notas de rodapé

1 Gu, Huaping. “Unleashing the Power of Vectors: Embeddings and Vector Databases - Linkedin.” LinkedIn, 2 de abril de 2023, www.linkedin.com/pulse/unleashing-power-vectors-embeddings-vector-databases-huaping-gu