Bancos de dados vetoriais de código aberto
APLICA-SE A: MongoDB vCore
Quando os desenvolvedores selecionam bancos de dados vetoriais, as opções de código aberto oferecem inúmeros benefícios. "Código aberto" significa que o código-fonte do software está disponível livremente, permitindo aos utilizadores personalizar a base de dados de acordo com as suas necessidades específicas. Essa flexibilidade é benéfica para 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 vetoriais de código aberto é o forte apoio da comunidade de que desfrutam. As comunidades de utilizadores ativos contribuem frequentemente para o desenvolvimento destas bases de dados, prestam apoio e partilham boas práticas, promovendo a inovação.
Alguns indivíduos optam por bancos de dados vetoriais 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 vetorial. 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 manutenção, atualizações e escalabilidade. Portanto, usando a camada gratuita de serviços de banco de dados vetorial gerenciados, os usuários podem obter economia de custos enquanto reduzem 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 funcionamento de bancos de dados vetoriais
Os bancos de dados vetoriais são projetados para armazenar e gerenciar incorporações vetoriais, que são representações matemáticas de dados em um espaço de alta dimensão. Neste espaço, cada dimensão corresponde a uma característica dos dados, e dezenas de milhares de dimensões podem ser usadas para representar dados sofisticados. A posição de um vetor neste espaço representa suas características. Palavras, frases ou documentos inteiros, imagens, áudio e outros tipos de dados podem ser vetorizados. Estas incorporações vetoriais são usadas na pesquisa de similaridade, pesquisa multimodal, motores de recomendações, modelos de grandes idiomas (LLMs), etc.
A arquitetura desses bancos de dados geralmente inclui um mecanismo de armazenamento e um mecanismo de indexação. O mecanismo de armazenamento otimiza o armazenamento de dados vetoriais para recuperação e manipulação eficientes, enquanto o mecanismo de indexação organiza os dados para operações rápidas de pesquisa e recuperação.
Em um banco de dados vetorial, as incorporações são indexadas e consultadas por meio de algoritmos de pesquisa vetorial com base em sua distância vetorial ou similaridade. É necessário um mecanismo sólido para identificar os dados mais relevantes. Alguns algoritmos de pesquisa vetorial bem conhecidos incluem Hierarchical Navigable Small World (HNSW), Inverted File (IVF), etc.
Os bancos de dados vetoriais são usados em vários domínios e situações em IA analítica e generativa, 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 vetorial para:
- Identifique imagens, documentos e músicas semelhantes com base em seus conteúdos, temas, sentimentos e estilos
- Identificar produtos semelhantes com base em suas características, recursos e grupos de usuários
- Recomendar conteúdos, produtos ou serviços com base nas preferências individuais
- Recomendar conteúdos, produtos ou serviços com base nas semelhanças dos grupos de utilizadores
- Identificar as opções potenciais mais adequadas a partir de um grande conjunto 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 geração aumentada de recuperação (RAG)
Banco de dados vetorial integrado vs banco de dados vetorial puro
Existem dois tipos comuns de implementações de banco de dados vetorial - banco de dados vetorial puro e banco de dados vetorial integrado em um banco de dados NoSQL ou relacional.
Um banco de dados vetorial puro é projetado para armazenar e gerenciar eficientemente incorporações vetoriais, juntamente com uma pequena quantidade de metadados; ele é separado da fonte de dados da qual as incorporações são derivadas.
Um banco de dados vetorial integrado em um banco de dados NoSQL ou relacional de alto desempenho fornece recursos adicionais. O banco de dados vetorial integrado em um banco de dados NoSQL ou relacional pode armazenar, indexar e consultar incorporações ao lado dos dados originais correspondentes. Essa abordagem elimina o custo extra de replicar dados em um banco de dados vetorial puro separado. Além disso, manter as incorporações vetoriais e os dados originais juntos facilita melhor as operações de dados multimodais e permite maior consistência, escala e desempenho dos dados.
Selecionando o melhor banco de dados vetorial de código aberto
Escolher o melhor banco de dados vetorial de código aberto requer considerar vários fatores. O desempenho e a escalabilidade do banco de dados são cruciais, pois afetam se o banco de dados pode lidar com seus requisitos específicos de carga de trabalho. Bancos de dados com recursos eficientes de indexação e consulta geralmente oferecem um 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 uma ajuda valiosa. Aqui estão alguns bancos de dados vetoriais de código aberto populares:
- Cromo
- Milvus
- Qdrant
- Tecelagem
No entanto, a opção mais popular pode não ser a melhor opção para você. Assim, você deve comparar diferentes opções com base em recursos, tipos de dados suportados, compatibilidade com ferramentas existentes e estruturas que você usa. Você também deve ter em mente os desafios dos bancos de dados vetoriais de código aberto (abaixo).
Desafios dos bancos de dados vetoriais de código aberto
A maioria dos bancos de dados vetoriais de código aberto, incluindo os listados acima, são bancos de dados vetoriais puros. Em outras palavras, eles são projetados para armazenar e gerenciar apenas incorporações vetoriais, juntamente com uma pequena quantidade de metadados. Como eles são independentes da fonte de dados da qual as incorporações são derivadas, usá-los requer o envio de seus dados entre integrações de serviço, o que adiciona custo, complexidade e gargalos extras para suas cargas de trabalho de produção.
Eles também colocam os desafios que são típicos de 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. A otimização de recursos e configuração durante a expansão da operação requer monitoramento e ajustes rigorosos.
- Manutenção: Os usuários devem gerenciar suas próprias atualizações, patches e manutenção. Assim, a perícia 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 com os serviços gerenciados, dependendo mais da assistência da comunidade.
Portanto, embora livres inicialmente, os bancos de dados vetoriais de código aberto incorrem em custos significativos ao serem ampliados. A expansão das operações requer mais hardware, pessoal de TI qualificado e gerenciamento avançado de infraestrutura, levando a maiores despesas em hardware, pessoal e custos operacionais. Dimensionar bancos de dados vetoriais de código aberto pode ser financeiramente exigente, apesar da falta de taxas de licenciamento.
Enfrentar os desafios dos bancos de dados vetoriais de código aberto
Um banco de dados vetorial totalmente gerenciado integrado em um banco de dados relacional ou NoSQL de alto desempenho evita o custo extra e a complexidade dos bancos de dados vetoriais de código aberto. Esse banco de dados armazena, indexa e incorpora consultas ao lado dos dados originais correspondentes. Essa abordagem elimina o custo extra de replicar dados em um banco de dados vetorial puro separado. Além disso, manter as incorporações vetoriais e os dados originais juntos facilita melhor as operações de dados multimodais e permite maior consistência, escala e desempenho dos dados. Enquanto isso, o serviço totalmente gerenciado ajuda os desenvolvedores a evitar os problemas de configurar, manter e confiar na assistência da comunidade para um banco de dados vetorial de código aberto. Além disso, alguns serviços gerenciados de banco de dados vetorial oferecem um nível gratuito vitalício.
Um exemplo é o Banco de Dados Vetorial Integrado no Azure Cosmos DB para MongoDB. Ele permite que os desenvolvedores desfrutem do mesmo benefício financeiro associado aos bancos de dados vetoriais de código aberto, enquanto o provedor de serviços lida com manutenção, atualizações e escalabilidade. Quando é hora de expandir as operações, a atualização é rápida e fácil, mantendo um baixo custo total de propriedade (TCO). Este serviço também pode ser usado para dimensionar convenientemente os aplicativos MongoDB que já estão em produção.