Bancos de Dados Relacionais vs Bancos de Dados Vetoriais
Bancos de dados há muito representam desafios para o desempenho de aplicações, muitas vezes exigindo um ajuste fino extensivo. Em resposta, novos designs de bancos de dados surgiram para melhorar a escalabilidade, o desempenho e a produtividade dos desenvolvedores, simplificando a criação de tipos específicos de aplicações.
Ainda assim, essas novas soluções de bancos de dados vêm com seus trade-offs. Cada design envolve compromissos, nos quais certas vantagens são obtidas às custas de outras. Compreender essas opções e seus trade-offs é essencial para escolher a melhor ferramenta para suas necessidades. Neste artigo, exploraremos bancos de dados vetoriais e os compararemos com bancos de dados relacionais tradicionais para ajudar você a tomar uma decisão bem fundamentada.
Por que escolher um banco de dados especializado para sua aplicação?
Nos últimos anos, houve um aumento de bancos de dados especializados adaptados a casos de uso específicos:
Banco de Dados de Grafos: Projetados para armazenar e analisar com eficiência dados altamente conectados, os bancos de dados de grafos se destacam no gerenciamento de relacionamentos entre pontos de dados (grafo de conhecimento).
Banco de Dados de Busca: Esses bancos de dados lidam com dados não estruturados ou semiestruturados e são otimizados para buscas e consultas rápidas e eficientes.
Banco de Dados de Séries Temporais: Otimizados para alta taxa de gravação e consultas baseadas em tempo, os bancos de dados de séries temporais lidam com cargas de trabalho com entradas de dados com carimbo de data/hora frequentes e em larga escala.
Banco de Dados Chave-Valor: Conhecidos por seu alto desempenho e escalabilidade, os bancos de dados chave-valor armazenam dados como pares simples de chave-valor sem metadados adicionais, tornando-os ideais para operações rápidas de leitura e gravação.
Banco de Dados em Memória: Esses bancos de dados armazenam dados na RAM em vez de no disco, eliminando atrasos de acesso ao disco e melhorando significativamente o desempenho.
Banco de Dados Vetorial: Esses bancos de dados são criados para armazenar embeddings vetoriais e são otimizados para lidar com a busca semântica, que é computacionalmente intensa.
Embora os bancos de dados relacionais (RDBMS) continuem dominantes em participação de mercado, bancos de dados criados para propósitos específicos estão rapidamente ganhando força, com bancos de dados vetoriais, de séries temporais, chave-valor e de grafos apresentando o crescimento mais significativo nos últimos dois anos.
A mudança em direção a bancos de dados especializados é impulsionada por demandas crescentes por desempenho e recursos avançados, à medida que os usuários esperam que o software atenda aos altos padrões estabelecidos por empresas líderes de tecnologia. Além disso, a ascensão das arquiteturas de microsserviços facilitou a adoção de bancos de dados especializados. Microsserviços, implantáveis de forma independente e abstraídos uns dos outros, permitem que as equipes selecionem as melhores ferramentas para funções específicas da aplicação sem amplo conhecimento das tecnologias de outros serviços.
No entanto, integrar outro banco de dados a uma arquitetura adiciona complexidade. É crucial avaliar se as vantagens de um banco de dados especializado superam os custos e as complexidades. Avaliar minuciosamente os prós e contras é essencial antes de tomar decisões que afetarão sua aplicação no longo prazo.
"Na prática, alcançar um sistema unificado de gerenciamento de dados que ofereça suporte a várias cargas de trabalho e aplicações é desafiador. Comparando com a indústria automobilística, não conseguimos imaginar um único veículo que sirva a todos os propósitos—SUVs, caminhões, sedãs e ônibus escolares projetados com funções específicas em mente. Da mesma forma, no mundo dos bancos de dados, os sistemas são otimizados para diferentes necessidades, e uma solução única para todos é improvável. O futuro está no desenvolvimento de bancos de dados mais especializados, adaptados a requisitos específicos. Embora possamos ver interfaces unificadas ou SDKs para interagir com diversos sistemas de bancos de dados, a tendência continuará em direção a soluções cada vez mais especializadas." Charles Xie, Fundador e CEO da Zilliz.**
Visão geral dos bancos de dados relacionais
Bancos de dados relacionais, também conhecidos como bancos de dados tradicionais, são ferramentas versáteis que gerenciam dados em formato tabular. Essa estrutura, organizada em linhas e colunas, permite armazenamento e recuperação eficientes de dados, normalmente gerenciados em disco. O uso de SQL aumenta ainda mais sua versatilidade, oferecendo suporte a uma ampla variedade de consultas. Essa adaptabilidade torna os bancos de dados relacionais adequados para uma variedade de aplicações. Eles são particularmente valorizados por sua capacidade de impor relacionamentos estruturados entre conjuntos de dados, garantindo consistência e integridade dos dados por meio de esquemas predefinidos.
Armazenamento de dados: linhas e colunas
Bancos de dados relacionais utilizam um arranjo sistemático de linhas e colunas para armazenar dados. Cada linha representa um único registro, enquanto cada coluna representa um campo de dados ou atributo. Esse formato organizado facilita o acesso e o gerenciamento dos dados, permitindo que os usuários naveguem pelos armazenamentos de dados e atualizem informações dentro do banco de dados de forma eficiente.
Recursos de consulta
Structured Query Language (SQL) é um recurso-chave dos bancos de dados relacionais, permitindo que os usuários formulem consultas precisas para extrair e manipular dados complexos em conjunto. SQL fornece uma estrutura robusta para filtrar, ordenar e recuperar dados, facilitando a realização de buscas e operações complexas em grandes conjuntos de dados. Ao usar SQL, os usuários podem identificar rapidamente informações relevantes e gerar relatórios detalhados com base em critérios específicos.
Propriedades ACID
As transações de bancos de dados relacionais são regidas por quatro propriedades-chave conhecidas como ACID: atomicidade, consistência, isolamento e durabilidade. A atomicidade garante que todos os aspectos de uma transação sejam concluídos como um todo, sem deixar atualizações parciais. A consistência mantém a integridade dos dados, garantindo que as transações levem a estados válidos. O isolamento impede que as transações afetem umas às outras até que estejam totalmente confirmadas, evitando assim conflitos. Por fim, a durabilidade garante que, uma vez confirmada uma transação, as alterações sejam permanentes, mesmo em caso de falha do sistema.
Visão geral de bancos de dados vetoriais
Então, o que exatamente é um banco de dados vetorial? Em sua essência, um banco de dados vetorial é um sistema especializado projetado para lidar com dados não estruturados aproveitando suas representações vetoriais e embeddings. Essa abordagem permite a recuperação rápida de informações semânticas e buscas por similaridade eficientes.
Bancos de dados vetoriais são cruciais no ecossistema moderno de IA, particularmente em Retrieval Augmented Generation (RAG). RAG aprimora o desempenho de large language models (LLMs) ao integrar conhecimento externo, o que ajuda a mitigar alucinações de IA e melhora a precisão das respostas geradas. Esses bancos de dados gerenciam e recuperam informações contextuais que os LLMs usam para produzir respostas mais confiáveis.
Eles são amplamente aplicados em vários domínios, incluindo chatbots, sistemas de recomendação e buscas multimídia, como recuperação de imagens, vídeos e áudio.
Bancos de dados vetoriais vs bancos de dados relacionais
Bancos de dados relacionais tradicionais se destacam no gerenciamento de dados estruturados, usando esquemas predefinidos e realizando buscas precisas em formatos de dados tabulares. Em contraste, bancos de dados vetoriais, com sua capacidade única de lidar com dados não estruturados, como imagens, áudio, vídeos e texto, representando esses tipos de dados como vetores de alta dimensionalidade, abrem um mundo de possibilidades. Diferentemente dos bancos de dados relacionais, que usam linhas e colunas, bancos de dados vetoriais armazenam dados como vetores com múltiplas dimensões, agrupando-os com base na similaridade.
Embora bancos de dados relacionais como MySQL e PostgreSQL tenham sido há muito tempo a escolha preferida de muitos desenvolvedores, há uma mudança perceptível no setor em direção à incorporação de recursos de busca vetorial nesses sistemas. Usuários do PostgreSQL, por exemplo, estão recorrendo cada vez mais ao Pgvector para suas necessidades de banco de dados vetorial, sinalizando uma tendência crescente no cenário de bancos de dados.
Para oferecer suporte a operações baseadas em vetores, bancos de dados relacionais normalmente adicionam tecnologias de indexação como HNSW (Hierarchical Navigable Small World) para realizar buscas aproximadas de vizinhos mais próximos no espaço vetorial. Isso é essencial para encontrar itens semelhantes em aplicações impulsionadas por IA. Além disso, esses bancos de dados oferecem armazenamento de vetores junto com dados tradicionais e mantêm compatibilidade com SQL, permitindo que os usuários aproveitem comandos SQL familiares para gerenciar e consultar dados vetoriais.
No entanto, ao contrário do Pgvector, que não é um mecanismo completo de busca vetorial, mas sim um plugin para bancos de dados PostgreSQL, bancos de dados vetoriais dedicados, como Milvus e Zilliz Cloud, são criados especificamente desde o início para gerenciar e consultar bilhões de vetores de alta dimensionalidade com desempenho quase em tempo real. Esses bancos de dados especializados aproveitam técnicas avançadas de indexação para lidar com buscas por similaridade de forma eficiente, oferecem desempenho superior para operações baseadas em similaridade e dão suporte ao gerenciamento de dados vetoriais em grande escala. Eles também oferecem APIs robustas adaptadas para aplicações de IA e machine learning, tornando-os bem adequados para necessidades complexas e de grande escala de dados vetoriais.
Por que os índices vetoriais são importantes
Durante a fase de prototipagem, carregar todos os dados na memória é comum para um processamento mais rápido e um desenvolvimento mais direto. No entanto, à medida que os dados escalam em produção, essa abordagem se torna impraticável devido a:
Limitações de memória: A memória é limitada e mais cara do que o armazenamento em disco.
Problemas de capacidade: Grandes conjuntos de dados podem exceder a memória disponível.
Impacto no desempenho: Armazenar todos os dados na memória pode aumentar o tempo de inicialização e o consumo de recursos.
Para lidar com grandes conjuntos de dados de forma eficiente em produção, selecionar a estratégia de indexação correta é crucial e significativo. Um índice vetorial adequado otimiza o desempenho da sua aplicação de Retrieval Augmented Generation (RAG) ao equilibrar velocidade de consulta, necessidades de armazenamento e latência. O diagrama abaixo ajuda a visualizar como diferentes índices se comportam com base em três métricas principais, ressaltando a importância do seu papel no processo.
Índices compatíveis com Milvus
Consultas por segundo (QPS): Mede a capacidade de processamento de consultas do índice por segundo, indicando throughput e eficiência.
Armazenamento: Reflete o espaço em disco necessário para o índice, impactando custos de infraestrutura e escalabilidade.
Latência: Representa o tempo para processar e retornar resultados de consultas, afetando a capacidade de resposta da aplicação.
Ao comparar essas métricas, você pode escolher o índice que melhor se ajusta ao seu caso de uso e às suas necessidades de desempenho.
O Milvus oferece uma estrutura flexível de seleção de índices adaptada a diversos requisitos de armazenamento e desempenho:
Índice GPU: Ideal para ambientes de alto desempenho, dando suporte ao processamento e à recuperação rápidos de dados.
Índice em memória: Oferece um equilíbrio entre desempenho e capacidade, adequado para taxas de consultas por segundo (QPS), e escala até terabytes de armazenamento com uma latência média de cerca de dez milissegundos.
Índice em Disco: Lida com dezenas de terabytes com uma latência de cerca de 100 milissegundos, adequado para conjuntos de dados maiores e menos sensíveis ao tempo. Milvus é único como o único banco de dados vetorial open-source que suporta índices em disco.
Índice Swap: Facilita a troca de dados entre S3 ou outro armazenamento de objetos e a memória, reduzindo os custos em cerca de dez vezes enquanto gerencia a latência. Os tempos de acesso típicos são de cerca de 100 milissegundos, mas podem se estender a alguns segundos para dados acessados com menos frequência, tornando-o adequado para uso offline e aplicações sensíveis a custos.
Após selecionar um índice, avalie seu desempenho com base no tempo de construção, precisão, desempenho e uso de recursos. Por exemplo, um índice não otimizado pode suportar apenas 20 consultas por segundo, enquanto um índice otimizado poderia aumentar o QPS em dez vezes a cada iteração de ajuste, embora isso também possa aumentar o tempo de construção.
Para escolher e ajustar efetivamente seu índice:
Selecione o tipo de índice com base em suas necessidades.
Ajuste os parâmetros do índice para otimização de desempenho.
Faça benchmark dos seus casos de uso para garantir o desempenho esperado.
Ajuste os parâmetros de busca para melhorar ainda mais os resultados.
Para orientação durante o processo de otimização, use ferramentas de benchmark como VectorDBBench. Desenvolvido e disponibilizado como open-source pela Zilliz, o VectorDBBench avalia vários bancos de dados vetoriais, permitindo experimentos abrangentes e ajuste fino do sistema para desempenho ideal.
Uma folha de consulta está disponível para referência rápida, descrevendo o desempenho de cada índice em nosso catálogo de índices de GPU, ajudando você a otimizar o desempenho e a eficiência de custos ao orientá-lo para o melhor índice para sua aplicação.
Uma folha de consulta de índices
Benchmarks de Desempenho de bancos de dados relacionais para busca vetorial
Como mencionado, bancos de dados relacionais tradicionais geralmente usam 1-2 índices vetoriais, o que pode levar a problemas de desempenho ao lidar com dados vetoriais em larga escala. Para destacar esse desafio, VectorDBBench é uma ferramenta open-source projetada para benchmark de bancos de dados vetoriais. Ela avalia vários bancos de dados, índices vetoriais e serviços em nuvem mainstream, fornecendo métricas imparciais sobre consultas por segundo (QPS), consultas por dólar (QP$) e latência P99.
Por exemplo, VectorDBBench pode comparar Pgvector com Milvus ou Zilliz. Os resultados de benchmark mostram consistentemente que Milvus e Zilliz oferecem desempenho superior em QPS, velocidade e latência em comparação com Pgvector.
Observação: Esta é uma pontuação de 1-100 baseada no desempenho de cada sistema em diferentes casos de acordo com uma regra específica. Uma pontuação mais alta denota melhor desempenho.
Observação: Esta é uma pontuação >1 baseada no desempenho de cada sistema em diferentes casos de acordo com uma regra específica. Uma pontuação mais baixa denota melhor desempenho.
Com o VectorDBBench, você pode entender rapidamente qual banco de dados tem melhor desempenho em termos de várias métricas. Você também pode determinar qual banco de dados atende melhor às suas necessidades específicas.
Casos de Uso de Bancos de Dados Vetoriais
Bancos de dados tradicionais são usados principalmente para processar transações, rastrear inventário ou gerenciar folha de pagamento; bancos de dados vetoriais se destacam no suporte ao desenvolvimento de alguns casos de uso impressionantes impulsionados por IA.
Geração Aumentada por Recuperação (RAG)
Expanda o conhecimento dos LLMs incorporando fontes de dados externas aos LLMs e às suas aplicações de IA.
Sistema de Recomendação
Recomende informações ou produtos aos usuários com base em seus comportamentos e preferências anteriores.
Busca de Similaridade Multimodal
Consulte diferentes modalidades, como textos, vídeos, áudio e imagens.
Busca de Similaridade Molecular
Busque subestruturas, superestruturas e outras estruturas semelhantes para uma molécula especificada.
Conclusão: Banco de dados vetorial vs banco de dados relacional
Escolher o banco de dados certo para sua aplicação não é apenas importante; é essencial. Bancos de dados relacionais são fortes no gerenciamento de dados estruturados e na execução de consultas complexas com SQL. Em contraste, bancos de dados vetoriais são projetados para lidar com dados não estruturados e buscas de alta dimensionalidade, oferecendo melhor desempenho para tarefas de IA e aprendizado de máquina. O peso dessa decisão não pode ser subestimado.
Com seus recursos avançados de indexação e busca, bancos de dados vetoriais frequentemente superam bancos de dados relacionais tradicionais ao lidar com dados de alta dimensionalidade em larga escala. No entanto, adicionar bancos de dados vetoriais especializados pode acrescentar mais à sua configuração e aumentar a complexidade, portanto, é importante avaliar se os benefícios justificam a complexidade adicional.
Selecionar a estratégia de indexação certa e ferramentas de benchmarking como VectorDBBench pode ajudar a otimizar o desempenho e garantir que você faça a melhor escolha para suas necessidades.
Para obter mais informações sobre soluções de banco de dados e desempenho, confira Zilliz Cloud.
Continue lendo

Build Multimodal Search for 3D Assets with Tripo and Zilliz Cloud
Generate 3D assets with Tripo, then search them by text, image, and metadata with multimodal embeddings and Zilliz Cloud.

What Is a Vector Lakebase?
A Vector Lakebase is a unified, lake-native data architecture for AI that combines vector-database-grade serving with open lake storage, reusable lake-level indexes, and a shared semantic layer.

Similarity Metrics for Vector Search
Exploring five similarity metrics for vector search: L2 or Euclidean distance, cosine distance, inner product, and hamming distance.



