Como construir um banco de dados vetorial SQL de alto desempenho MyScale baseado na tecnologia de nuvem Amazon

7340e9f910db95335d816728be3fedf9.gif

MyScale é um banco de dados vetorial eficiente totalmente hospedado na tecnologia de nuvem da Amazon e com suporte para SQL. A vantagem do MyScale é que ele oferece suporte à sintaxe SQL completa e, ao mesmo tempo, fornece desempenho que corresponde ou excede o de bancos de dados vetoriais dedicados. Neste artigo, explicaremos como MyScale usa a infraestrutura da Amazon Cloud Technology para construir um banco de dados em nuvem estável e eficiente.

O que é um banco de dados vetorial

Caso você não tenha notado, os embeddings de vetores estão em toda parte. Eles formam a base de muitos algoritmos de aprendizado de máquina e aprendizado profundo usados ​​em tudo, desde mecanismos de pesquisa até assistentes inteligentes. O aprendizado de máquina e o aprendizado profundo geralmente convertem dados não estruturados, como texto, imagens, áudio e vídeo, em incorporações vetoriais para armazenamento e usam tecnologia de pesquisa de similaridade vetorial para pesquisar relevância semântica. A pesquisa de similaridade baseada em vetores tem sido amplamente utilizada em vários cenários de aplicativos orientados por inteligência artificial, incluindo recuperação de imagens, análise de vídeo, compreensão de linguagem natural, sistema de recomendação, publicidade direcionada, pesquisa personalizada, atendimento inteligente ao cliente e detecção de fraudes. Neste contexto, a gestão de dados vectoriais é particularmente importante e precisamos de ser capazes de armazenar, indexar e pesquisar rapidamente estes dados vectorizados.

Os bancos de dados vetoriais existentes podem ser divididos em duas categorias. Um deles são produtos proprietários de banco de dados de vetores projetados para vetores, como Pinecone, Weaviate, Qdrant, Chroma, Milvus, etc. A outra é expandir produtos de banco de dados SQL ou NoSQL de uso geral. Postgres, um dos bancos de dados SQL mais conhecidos, suporta indexação vetorial e pesquisa por meio do plug-in pgvector; muitos bancos de dados, incluindo ClickHouse, Redis, Elasticsearch e Cassandra Os bancos de dados de código aberto adicionaram recentemente suporte nativo para índices vetoriais.

Geralmente, acredita-se que bancos de dados de vetores proprietários são projetados especificamente para recuperação de vetores e fornecem melhor desempenho de pesquisa. Os produtos de banco de dados gerais que suportam pesquisa vetorial dependem do banco de dados geral original, que pode fornecer gerenciamento de dados mais completo e recursos de consulta de dados estruturados, mas o desempenho de recuperação de vetores é perdido. MyScale é desenvolvido com base no banco de dados de processamento analítico online (OLAP) de código aberto ClickHouse e integra o algoritmo de indexação vetorial de gráfico de árvore multiescala (inglês: gráfico de árvore multiescala, abreviado como MSTG). Ele não apenas herda os excelentes recursos de análise e consulta de dados estruturados do ClickHouse, mas também fornece várias vezes a relação preço-desempenho de bancos de dados vetoriais proprietários, combinando assim as vantagens de ambos, fornecendo às empresas soluções unificadas de gerenciamento de dados estruturados e não estruturados.

Estrutura geral

MyScale é um serviço de banco de dados que depende inteiramente da plataforma de nuvem de tecnologia de nuvem Amazon. Sua arquitetura combina profundamente as diversificadas linhas de produtos da tecnologia de nuvem Amazon, incluindo servidor virtual em nuvem Amazon EC2, gerenciamento de cluster Amazon EKS, armazenamento de objetos Amazon S3, balanceamento de carga Amazon NLB etc. Contando com os poderosos recursos subjacentes fornecidos pela tecnologia de nuvem da Amazon, construímos rapidamente os produtos de serviços em nuvem da MyScale.

Conforme mostrado na figura abaixo, o design da arquitetura do serviço em nuvem MyScale inclui três níveis: plano de controle global, plano de controle regional e plano de dados regional, e cada nível corresponde a um cluster Kubernetes. O sistema de negócios de serviços em nuvem é implantado no plano de controle global, que é responsável pela organização, gerenciamento de usuários e estatísticas gerais de uso. Cada região corresponde a uma zona de disponibilidade de um provedor de serviços em nuvem, como Amazon US-EAST-1. Cada região implanta independentemente um plano de controle e vários planos de dados. O plano de controle fornece a API de gerenciamento de cluster (criar, parar, destruir) e o sistema de cobrança na região, e o plano de dados executa clusters de banco de dados MyScale iniciados pelo usuário em várias zonas de disponibilidade no mesmo plano de dados.

d3cfaf40d82eebcfb0b3489bed476865.jpeg

Todos os serviços do MyScale são implantados no serviço gerenciado Kubernetes EKS da Amazon Cloud Technology. O EKS fornece um ambiente Kubernetes altamente disponível, seguro e escalonável, que permite ao MyScale aproveitar ao máximo as poderosas funções do Kubernetes, como descoberta de serviço, balanceamento de carga, escalonamento automático, isolamento de segurança, etc. Com a ajuda do Cluster Autoscaler no Amazon EKS, o MyScale pode iniciar, interromper e expandir instâncias rapidamente de acordo com as necessidades das cargas de trabalho do usuário e dimensionar o pool de nós do EKS.

Para garantir o isolamento entre clusters de usuários, MyScale aproveita o recurso de namespace do Kubernetes. No plano de dados, cada cluster de banco de dados MyScale criado pelo usuário corresponde a um namespace no Kubernetes, para que a influência mútua entre os clusters possa ser minimizada. O namespace correspondente a cada cluster inclui nós de banco de dados, serviços de balanceamento de carga e serviços de armazenamento de metadados.

Ao usar os serviços em nuvem MyScale, os usuários podem criar e gerenciar clusters MyScale por meio da UI da Web em execução no plano de controle global. Depois que o usuário cria um cluster MyScale na UI da Web, o backend do serviço de nuvem chamará a interface no plano de controle da área correspondente para converter os parâmetros específicos e a configuração do cluster de banco de dados MyScale em um arquivo de configuração de recurso CRD no Kubernetes , e salve-o no plano de controle da área. O Cluster Manager em execução no plano de dados regional correspondente monitorará as alterações dos recursos CRD do cluster de banco de dados no plano de controle regional e realizará as operações correspondentes para criar ou modificar o cluster de banco de dados MyScale real no plano de dados. Depois que o cluster de banco de dados MyScale é iniciado, os usuários podem acessar o banco de dados MyScale por meio da UI da Web, cliente Python/Java/NodeJS, interface HTTP e estruturas de aplicativos LLM, incluindo Langchain e LlamaIndex.

Escolhemos instâncias EC2 com discos SSD locais baseados em NVMe para implantar o banco de dados MyScale. Ao contrário da maioria dos bancos de dados vetoriais que escolhem o algoritmo de índice vetorial HNSW de memória pura, o algoritmo MSTG desenvolvido pela MyScale permite que os dados vetoriais sejam armazenados em cache no disco SSD NVMe local, de modo que o MyScale fornece aos usuários pesquisa vetorial de alto desempenho enquanto economiza bastante o uso de memória. Em nossos testes públicos, o MyScale superou bancos de dados de vetores proprietários, como Pinecone, Weaviate, Qdrant, Zilliz, etc., e forneceu a melhor relação preço/desempenho (QPS por dólar).

Ao implantar o serviço de nuvem MyScale, usamos Crossplane para implementar a implantação e gerenciamento de serviços EC2 e EKS na Amazon Cloud Technology. Primeiro, configuramos as informações correspondentes da conta de tecnologia de nuvem da Amazon por meio do provedor Amazon da Crossplane, permitindo que a Crossplane acesse e opere nossos recursos de tecnologia de nuvem da Amazon. Em seguida, definimos os arquivos de configuração YAML do EC2 e EKS, através desses arquivos podemos definir os parâmetros do servidor e cluster Kubernetes que precisamos, como tipo de instância, tamanho do cluster, etc. Ao aplicar esses arquivos de configuração, o provedor Amazon da Crossplane chama a API Amazon para criar e configurar esses recursos.

Além disso, o Crossplane também pode sincronizar periodicamente o status desses recursos, para que possamos monitorar e gerenciar esses recursos através da interface do Kubernetes. Quando precisarmos modificar ou excluir esses recursos, basta modificar o arquivo YAML correspondente e reaplicar, e o Crossplane concluirá automaticamente a operação correspondente. Ao usar o Crossplane, podemos gerenciar nossos recursos de nuvem de forma declarativa, unificada e automatizada, melhorando significativamente a eficiência e a precisão do nosso trabalho.

Para segurança de dados, MyScale usa Teleport, um sistema avançado de gerenciamento de acesso remoto. O Teleport pode fornecer aos desenvolvedores e operadores a capacidade de acessar com segurança nossos clusters Kubernetes por meio de conexões criptografadas. Isto não só melhora a segurança do sistema, mas também melhora a conveniência de operação. Além do mais, o Teleport possui uma função de auditoria abrangente, que pode registrar detalhadamente todas as sessões e eventos, o que é muito útil para análise de segurança e requisitos de conformidade. Isso significa que podemos ter uma visualização completa de qualquer operação, de forma a controlar e proteger melhor o sistema de serviços em nuvem MyScale, e fornecer aos usuários serviços seguros e confiáveis.

resumo

Esta postagem apresenta o MyScale, um banco de dados vetorial hospedado na Amazon Web Technologies. MyScale é desenvolvido com base no banco de dados de processamento analítico on-line (OLAP) de código aberto ClickHouse e integra o algoritmo de indexação vetorial de gráfico de árvore multiescala (MSTG) autodesenvolvido, que pode fornecer excelente gerenciamento de dados e recursos de consulta de dados estruturados, e também fornece funções econômicas de pesquisa vetorial, bem como funções conjuntas de análise e processamento estruturadas e não estruturadas, podem ser amplamente utilizadas em cenários orientados por IA, como recuperação de imagens, análise de vídeo e compreensão de linguagem natural.

O autor deste artigo

f1f6b6f8d42e61927986a22931d6b94f.jpeg

LiuQin

Dr. Qin Liu é o chefe da equipe de infraestrutura MyScale. Antes disso, ele trabalhou na Moqi Technology e no Huawei Noah's Ark Lab. Em 2016, Qin Liu recebeu o doutorado em Ciência da Computação pela Universidade Chinesa de Hong Kong (CUHK) sob a supervisão do Prof. Durante seu período de doutorado, concentrou-se na pesquisa de computação gráfica e sistemas de processamento de fluxo. Em 2012, ele se formou na Shanghai Jiaotong University com bacharelado em ciência da computação e é membro da classe ACM. Ele publicou muitos artigos acadêmicos em conferências e periódicos internacionais KDD, VLDB, ICDE, DSN, CIKM e IEEE TKDE, e ganhou o campeão da Copa KDD de 2012 junto com seus pares.

a080e62ec765eec9696319f4ccaeb271.jpeg

Kelvin Guo

Arquiteto de soluções sênior da Amazon Cloud Technology. As principais orientações técnicas são MLOps, DevOps, contêineres e análise de dados. Mais de 20 anos de experiência em desenvolvimento de software, gerenciamento de projetos, implementação de ideias ágeis, consultoria e implementação de eficiência de engenharia.

fe605863740b56c6ef1799899b307da9.gif

3ac316da559ecaa30038e23b5cadd101.gif

Ouvi dizer, clique nos 4 botões abaixo

Você não encontrará bugs!

35e82719035deb47477c8b4df6cfd32f.gif

Acho que você gosta

Origin blog.csdn.net/u012365585/article/details/132440097
Recomendado
Clasificación