Bancos de dados de vetores de código aberto
APLICA-SE AO: MongoDB vCore
Quando os desenvolvedores selecionam bancos de dados de vetores, as opções de código aberto fornecem vários benefícios. “Código aberto” significa que o código-fonte do software está disponível livremente, permitindo que os usuários personalizem o banco de dados de acordo com suas necessidades específicas. Essa flexibilidade é benéfica para as organizações que estão sujeitas a requisitos regulatórios exclusivos sobre dados, como empresas do setor de serviços financeiros.
Outra vantagem dos bancos de dados de vetores de código aberto é o forte suporte da comunidade que eles desfrutam. As comunidades de usuários ativos geralmente contribuem para o desenvolvimento desses bancos de dados, fornecem suporte e compartilham melhores práticas, promovendo a inovação.
Algumas pessoas optam por bancos de dados de vetores de código aberto porque são “gratuitos”, o que significa que não há custo para adquirir ou usar o software. Uma alternativa é usar as camadas gratuitas oferecidas pelos serviços gerenciados de banco de dados de vetores. Esses serviços gerenciados fornecem não apenas acesso gratuito até um determinado limite de uso, mas também simplificam a carga operacional ao lidar com a manutenção, as atualizações e a escalabilidade. Portanto, ao usar a camada gratuita dos serviços gerenciados de banco de dados de vetores, os usuários podem obter economia de custos e reduzir a sobrecarga de gerenciamento. Essa abordagem permite que os usuários se concentrem mais em suas atividades principais do que na administração do banco de dados.
Mecanismo de trabalho de bancos de dados de vetor
Os bancos de dados de vetor são projetados para armazenar e gerenciar inserções de vetores, que são representações matemáticas de dados em um espaço altamente dimensional. Nesse espaço, cada dimensão corresponde a um recurso dos dados e dezenas de milhares de dimensões podem ser usadas para representar dados sofisticados. A posição de um vetor nesse espaço representa as características dele. Palavras, frases ou documentos inteiros e imagens, áudio e outros tipos de dados podem ser vetorizados. Essas inserções de vetor são usadas na pesquisa de similaridade, pesquisa multimodal, mecanismos de recomendações, LLMs (modelos de linguagem grande) etc.
Normalmente, a arquitetura desses bancos de dados inclui um mecanismo de armazenamento e um mecanismo de indexação. O mecanismo de armazenamento otimiza o armazenamento de dados de vetores para recuperação e manipulação eficientes, enquanto o mecanismo de indexação organiza os dados para operações rápidas de busca e recuperação.
Em um banco de dados de vetores, as inserções são indexadas e consultadas por meio de algoritmos de busca em vetores com base em sua distância ou similaridade vetorial. Um mecanismo robusto é necessário para identificar os dados mais relevantes. Alguns algoritmos de busca em vetores conhecidos incluem HNSW (Hierarchical Navigable Small World), IVF (Arquivo Invertido) etc.
Bancos de dados vetoriais são usados em vários domínios e situações em IA analítica e gerativa, incluindo processamento de linguagem natural, reconhecimento de vídeo e imagem, sistema de recomendação, pesquisa etc. Por exemplo, você pode usar um banco de dados de vetores para:
- Identificar imagens, documentos e músicas semelhantes com base em conteúdo, temas, sentimentos e estilos
- Identificar produtos semelhantes com base em características, recursos e grupos de usuários
- Recomendar conteúdo, produtos ou serviços com base nas preferências dos indivíduos
- Recomendar conteúdo, produtos ou serviços com base nas semelhanças dos grupos de usuários
- Identificar as possíveis opções mais adequadas de um grande pool de opções para atender a requisitos complexos
- Identificar anomalias de dados ou atividades fraudulentas diferentes dos padrões predominantes ou normais
- Implementar memória persistente para agentes de IA
- Habilitar o RAG (geração aumentada de recuperação)
Banco de dados vetoriais integrado versus banco de dados vetoriais puro
Há dois tipos comuns de implementações de banco de dados vetoriais: banco de dados vetoriais puro e banco de dados vetoriais integrado em um banco de dados NoSQL ou relacional.
Um banco de dados vetoriais puro foi projetado para armazenar e gerenciar inserções vetoriais com eficiência, juntamente a uma pequena quantidade de metadados; ele é separado da fonte de dados da qual as inserções são derivadas.
Um banco de dados vetoriais integrado em um banco de dados NoSQL ou relacional de alto desempenho fornece recursos adicionais. O banco de dados vetor integrado em um banco de dados NoSQL ou relacional pode armazenar, indexar e consultar inserções junto com os dados originais correspondentes. Essa abordagem elimina o custo extra de replicação de dados em um banco de dados vetoriais puro separado. Além disso, manter as inserções de vetores e os dados originais juntos facilita as operações de dados multimodais e permite maior consistência, escala e desempenho de dados.
Selecionar o melhor banco de dados de vetores de código aberto
Escolher o melhor banco de dados de vetores de código aberto requer a consideração de vários fatores. O desempenho e a escalabilidade do banco de dados são cruciais, pois afetam a capacidade do banco de dados de lidar com requisitos específicos de carga de trabalho. Os bancos de dados com recursos eficientes de indexação e consulta geralmente oferecem desempenho ideal. Outro fator é o suporte da comunidade e a documentação disponível para o banco de dados. Uma comunidade robusta e uma ampla documentação podem fornecer assistência valiosa. Veja alguns bancos de dados de vetores de código aberto populares:
- Chroma
- Milvus
- Qdrant
- Weaviate
No entanto, a opção mais popular pode não ser a melhor opção para você. Compare diferentes opções com base em recursos, tipos de dados com suporte, compatibilidade com ferramentas existentes e estruturas que você usa. Também tenha em mente os desafios dos bancos de dados de vetor de código aberto (abaixo).
Desafios de bancos de dados de vetores de código aberto
A maioria dos bancos de dados de vetor de código aberto, incluindo os listados acima, são bancos de dados de vetor puros. Em outras palavras, eles são projetados apenas para armazenar e gerenciar inserções de vetor, juntamente a uma pequena quantidade de metadados. Como eles são independentes da fonte de dados da qual as inserções são derivadas, usá-los requer o envio de seus dados entre integrações de serviço, o que adiciona custos adicionais, complexidade e gargalos para suas cargas de trabalho de produção.
Eles também representam os desafios típicos dos bancos de dados de código aberto:
- Configuração: os usuários precisam de conhecimento aprofundado para instalar, configurar e operar, especialmente para implantações complexas. Otimizar recursos e configuração ao escalar verticalmente a operação requer monitoramento e ajustes rigorosos.
- Manutenção: os usuários devem gerenciar suas próprias atualizações, patches e manutenção. Portanto, a experiência em ML não seria suficiente; os usuários também devem ter ampla experiência em administração de banco de dados.
- Suporte: o suporte oficial pode ser limitado em comparação aos serviços gerenciados, contando mais com a assistência da comunidade.
Portanto, embora inicialmente gratuitos, os bancos de dados de vetores de código aberto incorrem em custos significativos ao serem escalados verticalmente. A expansão das operações exige mais hardware, equipe de TI qualificada e gerenciamento avançado da infraestrutura, o que leva a despesas mais altas com hardware, pessoal e custos operacionais. A colocação em escala de bancos de dados de vetores de código aberto pode ser financeiramente exigente, apesar da ausência de taxas de licenciamento.
Abordando os desafios dos bancos de dados de vetor de código aberto
Um banco de dados de vetor totalmente gerenciado integrado em um banco de dados NoSQL ou relacional de alto desempenho, evita o custo extra e a complexidade dos bancos de dados de vetor de código aberto. Esse banco de dados armazena, indexa e consulta inserções junto com os dados originais correspondentes. Essa abordagem elimina o custo extra de replicação de dados em um banco de dados vetoriais puro separado. Além disso, manter as inserções de vetores e os dados originais juntos facilita as operações de dados multimodais e permite maior consistência, escala e desempenho de dados. Enquanto isso, o serviço totalmente gerenciado ajuda os desenvolvedores a evitar problemas ao configurar, manter e confiar na assistência da comunidade para um banco de dados de vetores de código aberto. Além disso, alguns serviços de banco de dados de vetor gerenciado oferecem uma camada gratuita em tempo de vida.
Um exemplo é o Banco de Dados de Vetor Integrado no Azure Cosmos DB for MongoDB. Ele permite que os desenvolvedores aproveitem o mesmo benefício financeiro associado aos bancos de dados de vetores de código aberto, enquanto o provedor de serviços lida com manutenção, atualizações e escalabilidade. Na hora de escalar verticalmente as operações, a atualização é rápida e fácil, mantendo um baixo TCO (custo total de propriedade). Esse serviço também pode ser usado para dimensionar convenientemente aplicativos do MongoDB que já estão em produção.