Bancos de Dados Vetoriais

From Systems analysis Wiki
Jump to navigation Jump to search

Bancos de dados vetoriais são sistemas especializados de armazenamento e busca, otimizados para trabalhar com representações numéricas de alta dimensão (vetores) de dados não estruturados[1]. No contexto de grandes modelos de linguagem (LLMs), eles permitem uma busca semântica eficiente e são um componente-chave dos sistemas modernos de inteligência artificial, especialmente na arquitetura RAG.

Diferentemente dos bancos de dados relacionais tradicionais, focados em correspondências exatas, os bancos de dados vetoriais se especializam na busca por vizinhos mais próximos aproximados (Approximate Nearest Neighbor, ANN), encontrando objetos semanticamente similares em um espaço de alta dimensão[2].

Fundamentos dos Bancos de Dados Vetoriais

Representações Vetoriais (Embeddings)

Representações vetoriais (embeddings) são representações numéricas de texto, imagens, áudio e outros tipos de dados na forma de vetores. O princípio fundamental é que objetos semanticamente próximos (por exemplo, palavras com significados semelhantes) estão localizados próximos uns dos outros nesse espaço vetorial[3].

Os embeddings de texto modernos são criados usando modelos baseados na arquitetura transformer, que aplicam mecanismos de atenção (self-attention) para compreender o contexto. A dimensionalidade de tais representações varia de 256 a 1024 dimensões ou mais para a maioria dos modelos atuais[4].

Métricas de Similaridade

Para medir a "distância" ou a similaridade entre vetores, são utilizadas diversas métricas:

  • Similaridade de cosseno (cosine similarity): Mede o cosseno do ângulo entre dois vetores. É especialmente eficaz para embeddings de texto, pois considera a direção dos vetores, e não a sua magnitude[5].
  • Distância Euclidiana (L2): A distância em linha reta padrão entre dois pontos no espaço.
  • Produto escalar (dot product): Semelhante à similaridade de cosseno, mas não normalizado[6].

Algoritmos de Indexação

Para uma busca rápida em espaços de alta dimensão, são utilizados algoritmos ANN especializados.

HNSW (Hierarchical Navigable Small World)

O algoritmo HNSW utiliza o conceito de "mundo pequeno" e uma estrutura hierárquica de grafos em várias camadas. As camadas superiores contêm conexões longas para uma navegação rápida pelo espaço (busca aproximada), enquanto as camadas inferiores possuem conexões curtas para encontrar vizinhos com precisão. O HNSW demonstra uma complexidade de tempo logarítmica de O(log N) e é a escolha preferida para a maioria dos bancos de dados vetoriais modernos[7].

IVF (Inverted File)

O algoritmo IVF divide o espaço em clusters usando a clusterização k-means. A busca ocorre em um número limitado de clusters mais próximos, o que acelera significativamente o processo. O número de clusters geralmente é escolhido como √N, onde N é o número total de vetores no conjunto de dados[8].

LSH (Locality-Sensitive Hashing)

O algoritmo LSH utiliza uma família de funções de hash que, com alta probabilidade, geram hashes idênticos para vetores próximos. Isso permite agrupar rapidamente objetos similares[9].

Bancos de Dados Vetoriais Populares

  • Pinecone: Um banco de dados vetorial em nuvem totalmente gerenciado com arquitetura serverless.
  • Qdrant: Um banco de dados de alto desempenho, escrito em Rust, com suporte a filtragem avançada e transações compatíveis com ACID.
  • Milvus: Um banco de dados open-source escalável com arquitetura nativa da nuvem. Suporta múltiplos tipos de índices, incluindo variantes aceleradas por GPU.
  • Weaviate: Um banco de dados vetorial open-source com API GraphQL e suporte a grafos de conhecimento.
  • Chroma: Um banco de dados open-source leve, otimizado para prototipagem rápida e experimentação.
  • FAISS: Uma biblioteca da Meta que não é um banco de dados completo, mas fornece algoritmos de indexação de alto desempenho para dados estáticos.

Aplicação com LLMs: Arquitetura RAG

Retrieval-Augmented Generation (RAG) é uma arquitetura na qual um LLM é complementado por uma base de conhecimento externa por meio de busca vetorial. Os sistemas RAG consistem em dois componentes principais[10]:

  1. Recuperador (Retriever): O componente de busca que utiliza o banco de dados vetorial para encontrar informações relevantes com base na consulta do usuário.
  2. Gerador (Generator): O LLM que utiliza a consulta original e as informações encontradas pelo recuperador para gerar uma resposta.

Para o funcionamento eficaz do RAG, utiliza-se a busca híbrida — uma combinação de busca semântica (vetorial) e lexical (por palavras-chave, como BM25), o que garante resultados mais precisos e relevantes.

Tendências e Desenvolvimento Futuro

O mercado de bancos de dados vetoriais está demonstrando um crescimento explosivo, projetado para passar de US$ 1,98 bilhão em 2023 para US$ 7,13 bilhões até 2029 (CAGR de 23,7%)[11]. As principais direções de desenvolvimento incluem:

  • Sistemas multimodais: Suporte para busca simultânea em texto, imagens, áudio e vídeo em um único espaço vetorial.
  • Otimização automática: Uso de ML para selecionar automaticamente os índices e parâmetros ideais.
  • Computação de borda (Edge computing): Desenvolvimento de soluções compactas para dispositivos móveis e IoT.
  • Computação quântica: Potencial aceleração exponencial da busca por similaridade.
  • Chips neuromórficos: Imitação do funcionamento do cérebro para um consumo de energia ultrabaixo durante a execução da busca.

Ligações externas

Literatura

  • Malkov, Y.A.; Yashunin, D.A. (2016). Efficient and Robust Approximate Nearest Neighbor Search Using Hierarchical Navigable Small World Graphs. arXiv:1603.09320.
  • Johnson, J.; Douze, M.; Jégou, H. (2017). Billion-Scale Similarity Search with GPUs. arXiv:1702.08734.
  • Datar, M. et al. (2004). Locality-Sensitive Hashing Scheme Based on p-Stable Distributions. SoCG 2004 paper.
  • Guo, N. et al. (2020). ScaNN: Efficient Vector Similarity Search at Scale. In: Proc. ACM SIGKDD 2020, pp. 1571-1580. DOI:10.1145/3394486.3403339.
  • Lewis, P. et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401.
  • Wang, X. et al. (2021). Milvus: A Purpose-Built Vector Data Management System. In: SIGMOD 2021. DOI:10.1145/3448016.3457550.
  • Lee, J. et al. (2022). OOD-DiskANN: Efficient and Scalable Graph ANNS for Out-of-Distribution Queries. arXiv:2211.12850.
  • Fan, D. et al. (2023). Survey of Vector Database Management Systems. arXiv:2310.14021.
  • Ren, R. et al. (2024). Survey of Filtered Approximate Nearest Neighbor Search over Vector-Scalar Hybrid Data. arXiv:2505.06501.
  • Zhao, H. et al. (2024). Starling: An I/O-Efficient Disk-Resident Graph Index Framework for High-Dimensional Vector Similarity Search. arXiv:2401.02116.
  • Liu, Y. et al. (2025). Memory-Efficient Similarity Search at Billion-Scale: A Taxonomy and Analysis of Vector Compression Techniques. ResearchGate preprint.

Notas

  1. «What Is a Vector Database?». CloudRaft. [1]
  2. «What is a Vector Database?». Qdrant Blog. [2]
  3. «What Are Vector Embeddings?». LakeFS. [3]
  4. «What are embeddings?». Zilliz. [4]
  5. Sahoo, A., Maiti, J. «A Comparative Study of Similarity Metrics for Textual Embeddings». arXiv:2501.01234. [5]
  6. «Vector search and dense vector fields». Elastic. [6]
  7. Malkov, Y. A., Yashunin, D. A. «Efficient and robust approximate nearest neighbor search using Hierarchical Navigable Small World graphs». arXiv:1603.09320. [7]
  8. «The index IVF». FAISS Wiki. [8]
  9. Datar, M., et al. «Locality-Sensitive Hashing Scheme Based on p-Stable Distributions». Symposium on Computational Geometry. [9]
  10. Lewis, P., et al. «Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks». arXiv:2005.11401. [10]
  11. «Vector Database Global Market Report 2024». The Business Research Company. [11]