AlloyDB e Cloud SQL: Busca Híbrida com BM25 Nativo
Databases

AlloyDB e Cloud SQL: Busca Híbrida com BM25 Nativo

AlloyDB e Cloud SQL Ganham Busca Híbrida Nativa com BM25

No universo em constante evolução da inteligência artificial generativa, arquiteturas RAG (Retrieval-Augmented Generation) e agentes de dados, a busca vetorial emergiu como um pilar fundamental. No entanto, para construir aplicações verdadeiramente robustas, a busca vetorial pura nem sempre é suficiente. Embora excepcional em capturar o significado conceitual, ela pode falhar em identificar IDs alfanuméricos específicos ou códigos de SKU de produtos. É aqui que entra a busca híbrida: a poderosa combinação de busca vetorial semântica com a tradicional busca textual por palavras-chave exatas.

O Padrão BM25 Agora Integrado aos Bancos de Dados

No campo da busca, o BM25 (Best Matching 25) é um algoritmo amplamente reconhecido por estimar a relevância de um documento para uma consulta específica. Anteriormente, a implementação do BM25 em conjunto com AlloyDB ou Cloud SQL exigia a integração de um backend de busca textual separado. Essa abordagem trazia consigo desafios como a criação de silos de dados, atrasos na sincronização e complexidade operacional. Agora, essa barreira é eliminada com a introdução do índice BM25 nativo em pré-visualização (Private Preview) no AlloyDB e Cloud SQL para PostgreSQL 17+, impulsionado pela extensão de código aberto pg_textsearch, desenvolvida pela TigerData.

Benefícios da Busca Híbrida Unificada

Com um backend de busca híbrida unificado, empresas não precisam mais provisionar, gerenciar ou pagar por sistemas separados para obter funcionalidades avançadas de recuperação textual. Tudo acontece diretamente no banco de dados, onde os dados operacionais já residem, proporcionando:

  • Ranking de Palavras-Chave Padrão da Indústria: Utilizando a extensão pg_textsearch da TigerData, o BM25 oferece pontuação rápida e otimizada em C diretamente nas tabelas PostgreSQL.
  • Simplicidade e Consistência Total: Elimine a duplicação de dados, os pipelines de ETL e os atrasos de sincronização inerentes à manutenção de múltiplos backends para busca vetorial e textual.
  • Busca Semântica Aprimorada (Exclusivo AlloyDB): Obtenha buscas vetoriais até 6x e 10x mais rápidas (em comparação com o PostgreSQL padrão) com os tipos de índice ScaNN e HNSW.

Por que o pg_textsearch?

Para quem já utilizou o ts_rank nativo do PostgreSQL em larga escala, as limitações são conhecidas. A qualidade do ranking degrada com o crescimento do corpus, e a falta de suporte para a frequência inversa de documentos (IDF) faz com que palavras comuns tenham o mesmo peso que as raras. Além disso, a ausência de saturação de frequência de termos pode levar um documento com 50 menções a uma palavra a superar outro com apenas uma. O BM25, por outro lado, é o padrão ouro em recuperação de informação, incorporando IDF, saturação de frequência de termos e normalização do comprimento do documento.

Exemplo de Busca Textual Completa

Para iniciar com a busca textual BM25 no AlloyDB e Cloud SQL, considere uma tabela de exemplo, cymbal_products, contendo um identificador único (uniq_id), o nome do produto (product_name), uma descrição (product_description) e um embedding gerado (product_embedding). Esta tabela armazena informações sobre diversos produtos de varejo, como plantas internas e externas.

Criação de Índice

Para usar o BM25, habilite a extensão pg_textsearch:

-- Instala a extensão pg_textsearch
CREATE EXTENSION pg_textsearch;

Em seguida, crie o índice BM25 na coluna product_description da tabela cymbal_products:

-- Cria o índice nativo BM25 na coluna de conteúdo
CREATE INDEX idx_docs_bm25 
ON cymbal_products 
USING bm25 (product_description) 
WITH (text_config='english');

Uma consulta de busca textual BM25 pode ser executada usando o operador especial <@>. Abaixo, um exemplo de busca por 'cherry tree':

-- Consulta de busca textual completa
SELECT product_name, product_description <@> 'cherry tree' AS bm25_score 
FROM cymbal_products
ORDER BY bm25_score 
LIMIT 5;

A saída mostra que uma pontuação mais negativa indica uma correspondência de relevância mais forte.

Exemplo de saída de busca BM25

Exemplo de Busca Híbrida no AlloyDB

A configuração de um sistema de busca híbrida no AlloyDB é simplificada. É possível criar índices vetoriais e de palavras-chave na mesma tabela e mesclar os resultados de forma transparente utilizando a função definida pelo usuário (UDF) de busca híbrida.

Criação de Índice Vetorial

Veja como criar um índice de busca vetorial ScaNN:

-- Instala a extensão vetorial
CREATE EXTENSION vector;

-- Instala a extensão scann
CREATE EXTENSION IF NOT EXISTS alloydb_scann;

-- Cria o índice de busca vetorial scann 
CREATE INDEX cymbal_products_embeddings_scann ON cymbal_products USING scann(product_embedding cosine);

Esta nova funcionalidade representa um avanço significativo para desenvolvedores que buscam criar experiências de busca mais inteligentes e precisas, unindo o melhor dos mundos semântico e textual diretamente em seus bancos de dados PostgreSQL gerenciados.

Análise de Dados com Python e Pandas
Recomendado pelo autor
Análise de Dados com Python e Pandas
* Link de afiliado — o preço pode variar. Ao comprar, você apoia este blog sem custo extra.
SQL Para Análise de Dados: Técnicas Avançadas Para Transformar Dados em Insights
Recomendado pelo autor
SQL Para Análise de Dados: Técnicas Avançadas Para Transformar Dados em Insights
* Link de afiliado — o preço pode variar. Ao comprar, você apoia este blog sem custo extra.
#AlloyDB, #CloudSQL, #BM25, #BuscaHibrida, #InteligenciaArtificial, #BancosDeDados, #PostgreSQL

chat_bubble Comentários (0)

Nenhum comentário ainda. Seja o primeiro a comentar!

Deixe seu comentário