O RDS for MySQL oferece processamento de dados vetoriais de nível empresarial com integração profunda. O service suporta nativamente o armazenamento e a computação de dados vetoriais com até 16.383 dimensões, integra funções vetoriais principais e utiliza um algoritmo HNSW (Hierarchical Navigable Small World) altamente otimizado para fornecer recursos eficientes de busca por vizinhos mais próximos. É possível criar um índice em uma coluna de vetor de dimensão completa.
Recursos
O RDS for MySQL possui suporte nativo ao processamento de dados vetoriais, incluindo armazenamento de vetores, cálculo de similaridade e criação de índices de alto desempenho. Essa capacidade fornece uma solução vetorial pronta para uso em cenários como busca semântica em larga escala, recomendações inteligentes e análise multimodal. Utilize interfaces SQL padrão para integrar perfeitamente a correspondência vetorial de alta precisão a lógicas de negócio complexas. Com essa integração, você constrói e implanta rapidamente aplicações inovadoras de IA em uma arquitetura de baixo custo e alta compatibilidade.
-
Armazenamento, acesso e computação eficientes de vetores de alta dimensão: Permite armazenar dados vetoriais de ponto flutuante com até 16.383 dimensões e introduz o tipo de dado
VECTOR. O suporte a interfaces SQL padrão possibilita gravar, atualizar e gerenciar dados vetorizados em lotes diretamente. A tabela a seguir descreve as funções de processamento de vetores suportadas.Nome da função
Descrição
VECTOR_DIMRetorna o número de dimensões de um vetor.
VEC_FROMTEXTConverte uma string em um vetor.
TO_VECTORSTRING_TO_VECTORVEC_TOTEXTConverte um vetor em uma string.
FROM_VECTORVECTOR_TO_STRINGVEC_DISTANCECalcula a distância entre dois vetores. Se um dos operandos for uma coluna indexada, a função detecta automaticamente o tipo de distância do índice.
VEC_DISTANCE_EUCLIDEANVEC_DISTANCE_COSINE Índice vetorial de alto desempenho: O índice vetorial utiliza um algoritmo HNSW (Hierarchical Navigable Small World) profundamente otimizado. Técnicas como aceleração de hardware SIMD, poda de busca com filtro Bloom e pushdown de condição LIMIT melhoram significativamente a eficiência de recuperação para dados vetoriais em grande escala. Também há suporte para armazenamento híbrido e consultas conjuntas de dados vetoriais e escalares.
Ecossistema open source e usabilidade imediata: O recurso é totalmente compatível com o protocolo MySQL e suporta ferramentas JDBC/ORM, além de frameworks de desenvolvimento populares. A integração com services da Alibaba Cloud, como DTS e DMS, oferece capacidades de ciclo de vida completo, incluindo sincronização de dados, gerenciamento, backup e recuperação. Atualize instâncias existentes com um único clique, sem necessidade de criar um novo cluster.
Aplicabilidade
Versão do banco de dados: MySQL 8.0 (versão secundária do mecanismo 20251031 ou posterior). Caso sua instância não atenda aos requisitos de versão, atualize a versão secundária do mecanismo ou atualize a versão principal do mecanismo.
-
Este recurso apresenta as seguintes limitações:
Crie índices vetoriais apenas em tabelas que utilizam o mecanismo InnoDB.
O comprimento da chave primária da tabela não pode exceder 256 bytes.
Não utilize a sintaxe
inplacepara criar, modificar ou excluir um índice vetorial.Não defina um índice vetorial como
INVISIBLE.Não use o recurso Recycle Bin em tabelas que contêm um índice vetorial.
Modificações de dados e consultas em um índice vetorial suportam exclusivamente o nível de isolamento Read Committed (RC).
Devido à aleatoriedade do algoritmo HNSW, como atribuição aleatória de níveis e algoritmos heurísticos, não há garantia de que a estrutura de grafo do índice vetorial nas instâncias primária e standby seja idêntica.
Se um procedimento armazenado ou função no banco de dados de origem usar o tipo
vector, a sincronização ou migração para um banco de dados de destino sem suporte a vetores falhará.
Gerenciamento de parâmetros
Parâmetros
Parâmetro | Descrição |
| • Descrição: Tipo de distância vetorial padrão.
|
| • Descrição: Valor M padrão para um índice HNSW (número máximo de arestas de saída para cada nó no grafo). |
| • Descrição: Valor ef_search padrão para uma consulta de índice HNSW (escopo da busca). |
| • Descrição: Memória máxima que o cache do índice HNSW pode utilizar, em bytes. |
Modificar parâmetros
Acesse a página Instances. Na barra de navegação superior, selecione a região onde reside a instância RDS. Em seguida, localize a instância RDS e clique em ID da instância.
No painel de navegação à esquerda, clique em Parameter Settings.
Na aba Editable Parameters, pesquise o parâmetro que deseja modificar e defina seu valor.
Clique em OK e, em seguida, clique em Submit Parameters. Na caixa de diálogo exibida, selecione quando as alterações devem entrar em vigor.
Todos os parâmetros relacionados a vetores são dinâmicos. As modificações entram em vigor imediatamente, sem necessidade de reiniciar a instância.
Ativar e usar o armazenamento de vetores
É possível ativar ou desativar o recurso de vetores sem reiniciar a instância.
Etapa 1: Ativar o suporte a vetores
Acesse o console RDS, selecione a região de destino e clique em ID da instância.
Na página Basic Information, na seção Running Status, localize Vector Storage e clique em Enable.
Quando o status mudar para Enabled, o recurso entrará em vigor imediatamente.
Etapa 2: Criar uma tabela e um índice vetorial
-- Create a table with a 5-dimension vector column and an HNSW index
CREATE TABLE product_embeddings (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(255),
embedding VECTOR(5) NOT NULL,
-- Create a vector index, and specify M (graph connectivity) and the distance metric
VECTOR INDEX idx_embedding(embedding) M=16 DISTANCE=COSINE
);
Etapa 3: Inserir dados
-- Use the VEC_FROMTEXT function to insert vector data
INSERT INTO product_embeddings (product_name, embedding) VALUES
('product_A', VEC_FROMTEXT('[0.1, 0.2, 0.3, 0.4, 0.5]')),
('product_B', VEC_FROMTEXT('[0.6, 0.7, 0.8, 0.9, 1.0]')),
('product_C', VEC_FROMTEXT('[0.11, 0.22, 0.33, 0.44, 0.55]'));
Etapa 4: Executar uma busca por similaridade vetorial
-- Find the two products that are most similar to the given vector '[0.1, 0.2, 0.3, 0.4, 0.51]'
SELECT
id,
product_name,
VEC_DISTANCE(embedding, VEC_FROMTEXT('[0.1, 0.2, 0.3, 0.4, 0.51]')) AS similarity_score
FROM
product_embeddings
ORDER BY
similarity_score ASC -- The smaller the cosine distance, the more similar the vectors are
LIMIT 2;