Um vetor é uma representação matemática de texto, imagens, áudio ou vídeo que codifica os recursos ou o significado semântico dos dados em vez do conteúdo real, como as palavras ou pixels subjacentes. Um vetor consiste em uma lista de valores numéricos, conhecidos como dimensões, e pode ser usado para operações de inteligência artificial (IA).
Os vetores são criados a partir de diferentes tipos de dados de entrada (texto, imagens, áudio, vídeo e outros dados) por modelos de deep learning conhecidos como modelos de incorporação. Você pode criar vetores fora do banco de dados usando modelos de incorporação, um serviço de incorporação ou pode criá-los dentro do banco de dados usando modelos de incorporação ONNX por meio da função SQL VECTOR_EMBEDDING().
O Oracle AI Vector Search é compatível com os formatos BINARY, INT8, FLOAT32 e FLOAT64.
O Oracle AI Vector Search oferece suporte a vetores com até 65.535 dimensões.
O tamanho de um vetor é o produto do número de dimensões e do tamanho de cada dimensão.
Por exemplo, um vetor com 2.048 dimensões e o formato INT8 (1 byte) tem 2 kilobytes, e um vetor com 1.024 dimensões e o formato FLOAT32 (4 bytes) tem 4 kilobytes.
O Oracle AI Vector Search é compatível com vetores esparsos, que geralmente têm muitas dimensões, mas apenas algumas possuem valores diferentes de zero. Para um determinado documento, os valores de dimensão diferentes de zero no vetor correspondem às palavras-chave (e suas variações) que aparecem naquele documento.
O AI Vector Search deve funcionar com qualquer modelo de incorporação válido que gere vetores com um dos formatos de dimensão compatíveis e 65.535 ou menos dimensões.
A escolha do modelo de incorporação depende de muitos fatores, como a natureza dos dados, as métricas de desempenho que você prioriza e o custo que está disposto a pagar. Modelos gratuitos de incorporação de código aberto, incluindo vários transformadores de frases, podem ser encontrados no Hugging Face e em sites semelhantes. Esses modelos podem ser convertidos em ONNX para gerar incorporações no banco de dados com o AI Vector Search. Uma fonte popular para os melhores modelos de incorporação de texto é o MTEB Leaderboard hospedado pelo Hugging Face. Você também pode recorrer a provedores de modelos estabelecidos, como OpenAI e Cohere.
O AI Vector Search oferece suporte a vetores gerados a partir de todos os modelos de incorporação, independentemente de os modelos serem para texto, imagens, áudio, vídeo ou outros dados. O Oracle AI Database também inclui modelos de incorporação pré-compilados ONNX para executar operações de distância baseadas em imagem com o AI Vector Search.
Há várias operações matemáticas compatíveis com vetores. A operação mais crítica é a função SQL VECTOR_DISTANCE(), que encontra a distância matemática entre dois vetores com base na fórmula de distância selecionada. Há muitas fórmulas de distância compatíveis com o Oracle AI Vector Search, incluindo euclidiana, euclidiana ao quadrado, similaridade por cosseno, produto escalar, Manhattan, Jaccard e Hamming. A escolha da função de distância normalmente é orientada pelo modelo de incorporação usado para gerar os vetores. No entanto, a métrica de distância padrão no Oracle AI Database 26ai é similaridade por cosseno.
Todos os vetores compartilham a mesma propriedade: quanto mais semelhantes forem as duas entidades, menor a distância matemática entre elas. Por exemplo, os vetores para “maçã” e “laranja” estão mais próximos do que os vetores para “maçã” e “cachorro”. Essa propriedade de vetores permite que eles sejam usados para pesquisar dados por similaridade semântica.
Existem extensões SQL simples e intuitivas que permitem que o AI Vector Search seja facilmente incorporado às suas aplicações. Como a distância vetorial é uma medida de similaridade, o AI Vector Search envolve classificar o conjunto de vetores candidatos com base na distância deles em relação a um vetor de pesquisa e retornar as correspondências top-K mais próximas. Por exemplo, a consulta abaixo encontra os 10 principais produtos cujas fotos correspondem melhor à foto de pesquisa de um usuário:
SELECT product_name, product_photo
FROM product
ORDER BY VECTOR_DISTANCE(product_photo_vector, :search_photo_vector)
FETCH FIRST 10 ROWS ONLY;
O AI Vector Search pode ser usado em consultas sofisticadas envolvendo filtros, junções, agregações, agrupamentos e outros elementos. Por exemplo, a consulta a seguir pode ser usada para encontrar os 10 principais produtos correspondentes fabricados na Califórnia com base em uma foto enviada por um usuário.
SELECT p.name, p.photo, m.name
FROM product p
JOIN manufacturer m ON (p.mfr_id = m.id)
WHERE m.state = 'CA'
ORDER BY VECTOR_DISTANCE(product_photo_vector, :search_photo_vector)
FETCH FIRST 10 ROWS ONLY;
Os índices de banco de dados tradicionais são usados para acelerar pesquisas com base em valores correspondentes. Por exemplo, um índice B-tree acelera pesquisas baseadas em valores e verificações de intervalo. Os índices vetoriais, por outro lado, são projetados para encontrar as correspondências mais semelhantes de top-K com base na similaridade semântica, em vez de valores correspondentes. Um índice vetorial pode ser usado para encontrar as palavras top-K com significado mais semelhante a “maçã” em um corpus de palavras existentes. O uso de um índice vetorial resulta em uma pesquisa aproximada que troca alguma precisão de pesquisa por um desempenho até 100 vezes maior, pois evita examinar cada entrada de vetor dentro de uma coluna.
Os índices vetoriais de gráficos vizinhos na memória são índices residentes na memória baseados em gráficos. Os vértices do gráfico representam vetores, e as arestas entre os vértices representam a similaridade entre os vetores. O Oracle AI Vector Search oferece suporte a índices vetoriais de gráficos vizinhos na memória do tipo Hierarchical Navigable Small World (HNSW). Os índices HNSW são estruturados usando princípios de redes small-world e organização hierárquica em camadas, tornando-os extremamente rápidos e precisos para pesquisas de similaridade.
O Oracle AI Vector Search oferece suporte a índices vetoriais particionados vizinhos do tipo Inverted File Flat (IVF). Índices vetoriais particionados vizinhos são índices vetoriais baseados em disco, no qual os vetores são agrupados em partições de tabela com base na similaridade. Eles são índices escaláveis eficientes com suporte transacional rápido e contínuo, permitindo equilibrar pesquisas de alta qualidade com velocidade razoável. São projetados para acomodar tamanhos de dados ilimitados, pois não dependem de memória.
Os índices vetoriais híbridos permitem aos usuários indexar e consultar facilmente seus documentos usando uma combinação de pesquisa de texto completo e pesquisa vetorial semântica para obter resultados de maior qualidade. Eles oferecem suporte a uma API de consulta unificada que permite aos usuários executar consultas textuais, consultas de similaridade vetorial ou consultas híbridas que aproveitam ambas as abordagens.
Além de SQL e PL/SQL, as aplicações AI Vector Search podem ser criadas em várias linguagens de programação. O AI Vector Search inclui suporte a driver nativo para vetores em linguagens populares, como Java, Python, JavaScript e C#.
O AI Vector Search geralmente faz parte de um fluxo de trabalho de geração aumentada de recuperação (RAG). Ele fornece entradas adicionais necessárias para ajustar a resposta de um modelo de linguagem grande (LLM) do GenAI.
Quando combinado com o RAG, a pergunta do usuário é primeiro convertida em um vetor e depois mapeada para os documentos mais relevantes no banco de dados por meio do AI Vector Search. Em seguida, a pergunta do usuário e os documentos relevantes de apoio são transmitidos ao LLM, que gera uma resposta informada com base em seu conhecimento geral e no conhecimento especializado do banco de dados.
O AI Vector Search pode ser usado para geração aumentada de recuperação com qualquer LLM, incluindo modelos de código aberto, como Llama3 e Mistral, bem como modelos proprietários de provedores como OpenAI e Cohere. Além disso, APIs PL/SQL especializadas estão disponíveis para integração perfeita entre o AI Vector Search e os LLMs para RAG.
O AI Vector Search é integrado ao LangChain e ao LlamaIndex. Essas estruturas podem ajudar a integrar dados públicos e privados para aplicações de grandes modelos de linguagem.
A geração aumentada de recuperação (RAG) desempenha um papel fundamental na IA generativa (GenAI), oferecendo vantagens significativas para as aplicações GenAI. A seguir estão apenas três motivos eloquentes pelos quais é fundamental integrar o RAG à configuração da GenAI:
Os amplos mecanismos de escalabilidade da Oracle – como execução paralela, particionamento, Real Application Clusters (Oracle RAC), sharding e Exadata – podem ampliar o AI Vector Search para praticamente qualquer tamanho de dados e número de usuários.
Os amplos mecanismos de escalabilidade da Oracle – como execução paralela, particionamento, Oracle Real Application Clusters (Oracle RAC), sharding e Exadata – podem ampliar o AI Vector Search para praticamente qualquer tamanho de dados e número de usuários. O Oracle Exadata também inclui o AI Smart Scan, que transfere as operações de consulta do AI Vector Search para os Exadata Storage Servers para obter um desempenho de consulta incomparável.
O Oracle AI Vector Search integra-se perfeitamente aos recursos de segurança de banco de dados líderes do setor da Oracle para reduzir riscos e simplificar a conformidade. As organizações podem proteger seus dados vetoriais aproveitando ferramentas robustas, como criptografia, mascaramento de dados, controles de acesso de usuários privilegiados, monitoramento de atividades e auditoria, aproveitando ao máximo os recursos avançados de pesquisa de IA. Recursos no banco de dados, como o Database Vault e o Virtual Private Database, ajudam a proteger dados vetoriais e garantem que somente usuários com os privilégios adequados possam acessá-los.
Isso significa que o Oracle AI Vector Search pode reduzir significativamente a pegada da infraestrutura vetorial de uma empresa. Um único Oracle AI Database pode atender às necessidades de muitos usuários diferentes com diferentes permissões de acesso e autorização sem precisar duplicar dados ou incorrer em qualquer sobrecarga de gerenciamento adicional, como geralmente acontece com outros bancos de dados vetoriais.
Os vetores no Oracle AI Database são tipos de dados de banco de dados de primeira classe. Isso significa que os vetores herdam implicitamente todos os recursos e capacidades inovadores que fazem da Oracle o principal banco de dados empresarial do mundo. A alta disponibilidade (HA) é fornecida pela execução de pesquisas de similaridade no Oracle RAC ou Oracle Globally Distributed Database (sharding). O Data Guard, o Active Data Guard e o Oracle GoldenGate podem fornecer recuperação de desastres automaticamente.