Acesso no exterior: www.kdjingpai.com
Ctrl + D Marcar este site como favorito

O OceanBase SeekDB é um mecanismo de recuperação de vetores no núcleo do banco de dados OceanBase, criado especificamente para a era da IA. Em vez de ser um produto de banco de dados autônomo que precisa ser operado e mantido separadamente, o SeekDB incorpora totalmente os recursos de um banco de dados vetorial no OceanBase, um banco de dados relacional distribuído maduro. Como primeiro princípio, o SeekDB essencialmente oferece aos bancos de dados relacionais a capacidade de "entender" dados não estruturados (por exemplo, vetores gerados por texto, imagens e áudio). Ele resolve os pontos problemáticos de fragmentação de dados, atrasos na sincronização de dados e complexidade de operação e manutenção causados pela separação de "bancos de dados relacionais que armazenam dados comerciais" e "bancos de dados vetoriais dedicados que armazenam dados de recursos" na arquitetura tradicional de aplicativos de IA. O SeekDB baseia-se na arquitetura distribuída do OceanBase, herdando sua alta disponibilidade, forte consistência e escalabilidade horizontal, além de suportar o armazenamento vetorial de até 16.000 dimensões. Com base na arquitetura distribuída do OceanBase, o SeekDB herda sua alta disponibilidade, forte consistência e escalabilidade horizontal, suporta armazenamento vetorial de até 16.000 dimensões, fornece algoritmos de indexação de alto desempenho, como HNSW e IVF, e conclui consultas Top-K com latência muito baixa em dados massivos, tornando-o um banco de dados ideal para a criação de RAG (geração de aumento de recuperação), sistemas de recomendação e aplicativos de pesquisa multimodal.

Lista de funções

  • Suporte nativo a tipos de dados vetoriais: definido diretamente na estrutura da tabela do banco de dados VECTOR que suporta armazenamento vetorial denso de até 16.000 dimensões, com o campo de tipo INTeVARCHAR e outros tipos de dados tradicionais coexistem.
  • Índices vetoriais de alto desempenhoEle possui algoritmos de indexação líderes do setor, como HNSW (Hierarchical Navigational Small World) e IVF (Inverted File), e oferece suporte a uma variedade de fórmulas de cálculo de distância, como L2 (Euclidean Distance), Inner Product e Cosine (Cosine Similarity), o que garante alta recuperação e baixa latência na pesquisa.
  • Pesquisa híbrida SQL+AISuporte à inclusão de ambos os WHERE para filtragem escalar (por exemplo, faixa de preço, categoria de produto) e as cláusulas ORDER BY de ordenação de similaridade de vetores, o núcleo do banco de dados otimiza automaticamente o plano de execução, evitando várias interações na camada do aplicativo.
  • Dimensionamento horizontal distribuídoOs dados vetoriais podem ser distribuídos automaticamente para vários servidores à medida que são fatiados e cortados em cubos e, ao adicionar mais nós, a capacidade de armazenamento e o desempenho de recuperação podem ser aumentados linearmente, facilitando o processamento de dezenas de bilhões de vetores.
  • Totalmente compatível com o protocolo MySQLAPI de banco de dados vetorial dedicada: Sem precisar aprender uma API de banco de dados vetorial dedicada, os desenvolvedores podem manipular dados vetoriais diretamente usando qualquer cliente compatível com o protocolo MySQL (por exemplo, JDBC, PyMySQL) ou a estrutura ORM.
  • Integração perfeita de ecossistemas de IAO OceanBase é um novo tipo de estrutura de desenvolvimento de IA, profundamente adaptado às principais estruturas de desenvolvimento de IA, como LangChain, LlamaIndex, DB-GPT etc. O SDK Python é fornecido para permitir que os desenvolvedores conectem rapidamente o OceanBase à cadeia de dados de grandes aplicativos de modelo.

Usando a Ajuda

A experiência do OceanBase SeekDB foi projetada para ser muito semelhante à de um banco de dados MySQL tradicional, com as principais diferenças sendo a definição e a indexação de dados vetoriais. A seguir, uma descrição detalhada do processo completo, desde a preparação do ambiente até a conclusão de uma pesquisa híbrida.

1. preparação e instalação do ambiente

Os recursos do SeekDB estão incluídos no OceanBase 4.3.3 e superior. Para os desenvolvedores, a maneira mais rápida de começar é implantar uma versão autônoma do OceanBase usando contêineres do Docker.

Etapa 1: Inicie o contêiner do OceanBase
Certifique-se de que seu computador tenha o Docker instalado e pelo menos 8 GB de memória alocada (a computação vetorial tem alguns requisitos de memória). Execute o seguinte comando no terminal para extrair e iniciar a versão mais recente da imagem:

docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE=1 -d oceanbase/oceanbase-ce:latest

Observações:MINI_MODE=1 é usado para inicializar no modo mínimo em PCs com recursos limitados.

Etapa 2: Conectar-se ao banco de dados
Depois que o contêiner for iniciado (geralmente leva de 1 a 2 minutos para inicializar), você poderá se conectar usando qualquer cliente MySQL. Aqui está um exemplo de um cliente MySQL de linha de comando:

# 进入容器内部
docker exec -it oceanbase-ce bash
# 连接数据库(默认无密码,端口2881)
obclient -h127.0.0.1 -P2881 -uroot@test

Observação: é recomendável criar um usuário não raiz e definir uma senha forte em ambientes de produção.

2. procedimento operacional da tabela de vetores

Simularemos um cenário de "sistema de recomendação de livros" criando uma tabela com informações básicas sobre o livro (título, preço) e um vetor de recursos sobre o livro.

Etapa 1: Criar uma tabela de vetores de suporte
Ao criar uma tabela, use a opção VECTOR(<维度>) A sintaxe define colunas de vetores. Digamos que precisemos armazenar vetores tridimensionais (em cenários do mundo real, geralmente são 768 ou 1536 dimensões):

CREATE TABLE books (
id INT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100),
category VARCHAR(50),
price DECIMAL(10, 2),
embedding VECTOR(3)  -- 定义一个3维的向量列
);

Etapa 2: Inserção de dados
Ao inserir dados vetoriais, use o formato de string [v1, v2, v3, ...] Representa um vetor.

INSERT INTO books (title, category, price, embedding) VALUES 
('Python深度学习', 'Tech', 59.90, '[0.1, 0.2, 0.8]'),
('如果是普通的书', 'Fiction', 29.90, '[0.8, 0.1, 0.1]'),
('数据库内部原理', 'Tech', 89.00, '[0.2, 0.2, 0.9]'),
('烹饪大全', 'Life', 45.00, '[0.1, 0.9, 0.1]');

3. criação de índices de vetores

Para acelerar a recuperação, os índices devem ser criados em colunas de vetor. O SeekDB suporta a criação de índices IVFFLAT ou HNSW.

Descrição do parâmetro:

  • distanceMedição de distância, opcional l2 (distância euclidiana). inner_product (produto interno), (produto interno) cosine (cosseno).
  • typeTipos de algoritmos de indexação, recomendados hnsw.
  • libImplementação da biblioteca de vetores; o padrão é vsag.
-- 创建一个基于 HNSW 算法的索引,使用 L2 距离
CREATE INDEX idx_book_embedding ON books(embedding) 
USING VECTOR 
WITH (distance=l2, type=hnsw, lib=vsag);

Observação: A construção de índices vetoriais pode consumir alguns recursos de memória, e a velocidade da construção depende da quantidade de dados.

4. implementação da pesquisa híbrida

Esse é o recurso mais avançado do SeekDB. Suponha que estejamos procurando "conteúdo relacionado à tecnologia da computação (vetores próximos ao [0.15, 0.2, 0.85]), e o preço é inferior a US$ 100".

Escrita de instruções SQL:
fazer uso de l2_distance para calcular a distância, combinada com a função WHERE filtra o preço.

SELECT title, price, l2_distance(embedding, '[0.15, 0.2, 0.85]') as distance
FROM books
WHERE price < 100 AND category = 'Tech'  -- 标量过滤条件
ORDER BY distance ASC                    -- 按相似度排序(距离越小越相似)
LIMIT 5;

Interpretação dos resultados da implementação:
O mecanismo de banco de dados primeiro examinará rapidamente os índices escalares para encontrar o price < 100 responder cantando category = 'Tech' ou usar a indexação de vetores para encontrar uma aproximação antes da filtragem (dependendo da estimativa de custo do otimizador). Não há necessidade de escrever manualmente uma lógica complexa de "filtragem e classificação".

5. usando Python

Ao desenvolver aplicativos de IA na prática, o Python é comumente usado. PyMySQL O código de exemplo completo do

import pymysql
import json
# 1. 建立连接
conn = pymysql.connect(
host='127.0.0.1', 
port=2881, 
user='root@test', 
password='', 
database='test',
autocommit=True
)
cursor = conn.cursor()
# 2. 准备查询向量(模拟来自 Embedding 模型的结果)
query_vector = [0.15, 0.2, 0.85]
query_vector_str = json.dumps(query_vector)
# 3. 执行混合检索 SQL
sql = """
SELECT title, l2_distance(embedding, %s) as dist
FROM books
WHERE category = 'Tech'
ORDER BY dist ASC
LIMIT 3
"""
cursor.execute(sql, (query_vector_str,))
results = cursor.fetchall()
# 4. 输出结果
print("推荐图书:")
for row in results:
print(f"书名: {row[0]}, 距离: {row[1]}")
cursor.close()
conn.close()

Com o processo acima, você implementou com êxito uma função de pesquisa semântica baseada em vetores no OceanBase sem envolver nenhum banco de dados vetorial externo.

cenário do aplicativo

  1. Perguntas e respostas da base de conhecimento do Enterprise Private (RAG)
    As organizações cortam e analisam documentos internos (PDFs, wikis, bases de código) e os transformam em vetores armazenados no OceanBase. Quando um funcionário faz uma pergunta, o sistema vetoriza a pergunta, recupera os fragmentos de documentos mais relevantes do banco de dados por meio de pesquisa vetorial e gera uma resposta precisa combinando-a com o LLM. A vantagem do OceanBase é que os dados não saem do banco de dados, e o gerenciamento de autoridade replica diretamente o mecanismo de ACL do banco de dados, o que garante a segurança dos dados corporativos.
  2. Pesquisa de mapas multimodais
    Em um cenário de plataforma de comércio eletrônico, os recursos de imagem de um produto são extraídos como vetores e armazenados em um banco de dados. Os usuários carregam uma imagem e o sistema recupera rapidamente produtos com recursos visuais semelhantes por meio do SeekDB. Combinado com o recurso escalar do SQL, ele também pode facilmente sobrepor condições de filtragem de negócios, como "ver apenas o que está disponível" e "preço entre US$ 50-100", para oferecer uma experiência precisa de guia de compras.
  3. Sistema de recomendação personalizada
    Usando o histórico de navegação e os dados comportamentais do usuário para gerar vetores de perfil de usuário que são combinados com vetores da biblioteca de conteúdo (artigos, vídeos), o SeekDB pode filtrar as entradas mais próximas dos vetores de interesse do usuário em milissegundos a partir de milhões de peças de conteúdo para obter a funcionalidade "Guess What You Like" em tempo real e melhorar a retenção de usuários.

QA

  1. Por que você optou por usar o OceanBase SeekDB em vez de um banco de dados vetorial especializado (por exemplo, Milvus, Pinecone)?
    Os bancos de dados vetoriais dedicados geralmente são implantados de forma independente, o que significa que você precisa manter dois conjuntos de sistemas de dados (banco de dados relacional + banco de dados vetorial), o que não só aumenta os custos de O&M, mas também enfrenta o problema de consistência da sincronização de dados. O SeekDB consegue "tudo em um", lidando com transações, análises e pesquisas vetoriais no mesmo núcleo de banco de dados, simplificando drasticamente a arquitetura técnica dos aplicativos de IA e herdando diretamente os recursos de disponibilidade de nível financeiro do OceanBase. O SeekDB consegue ser "tudo em um", lidando com transações, análises e recuperação de vetores no mesmo núcleo de banco de dados, simplificando drasticamente a arquitetura técnica dos aplicativos de IA e herdando diretamente os recursos de alta disponibilidade de nível financeiro do OceanBase.
  2. Quais tipos de índice são compatíveis com o SeekDB? Qual é o desempenho?
    Atualmente, ele suporta principalmente os índices de série HNSW (adequado para cenários com requisitos de alto desempenho e memória suficiente) e IVF (adequado para cenários com volume de dados extremamente grande e sensibilidade à memória). No teste padrão ANN Benchmarks, o mecanismo de recuperação de vetores do OceanBase tem excelente QPS e recuperação em uma escala de 10 milhões de dados, o que pode atender à demanda em tempo real da maioria dos serviços de raciocínio on-line (geralmente no nível de 10 ms a 50 ms).
  3. As colunas de vetores podem ser adicionadas à tabela existente?
    Pode. Você pode manipular as colunas da mesma forma que as colunas normais, usando a função ALTER TABLE para uma tabela de negócios existente para adicionar VECTOR tipo de coluna e criar um índice nessa coluna. Isso torna a adaptação inteligente de IA de sistemas legados muito fácil, sem a necessidade de migrar dados.
0Marcado
0Recomendado

Recomendado

Não consegue encontrar ferramentas de IA? Tente aqui!

Basta digitar a palavra-chave Acessibilidade Bing SearchA seção Ferramentas de IA deste site é uma maneira rápida e fácil de encontrar todas as ferramentas de IA deste site.

voltar ao topo

pt_BRPortuguês do Brasil