A Tiger Data, empresa por trás do conhecido banco de dados de séries temporais TimescaleDB, anunciou que está disponibilizando publicamente, sob a Licença PostgreSQL, sua extensão pg_textsearch.
Anteriormente um recurso exclusivo do Tiger Cloud, sua plataforma gerenciada, a extensão agora pode ser acessada por qualquer desenvolvedor diretamente no GitHub. Este passo democratiza o acesso a capacidades de busca por relevância (ranking) modernas diretamente dentro do PostgreSQL, desafiando a necessidade de sistemas externos especializados, como o Elasticsearch, para muitas aplicações.
O poder do BM25 dentro do Postgres
O cerne do pg_textsearch é a implementação do algoritmo BM25, considerado o padrão da indústria para ranqueamento de relevância em motores de busca modernos. Ele supera as limitações do sistema de busca de texto completo nativo do PostgreSQL (tsvector/tsquery com ts_rank), que carece de mecanismos fundamentais para a qualidade dos resultados.
Enquanto o ts_rank pode ser enganado pela repetição excessiva de palavras-chave e não pondera adequadamente termos raros versus comuns, o BM25 introduz três melhorias:
- Frequência Inversa de Documento (IDF): Dá maior peso a termos discriminatórios e raros;
- Saturação de Frequência de Termo: Previne que documentos “inflados” com repetições dominem os rankings;
- Normalização por Comprimento: Permite uma comparação justa entre documentos curtos e longos.
Michael Freedman, CTO da Tiger Data, comentou sobre o valor da extensão: “Se você se importa com buscas por palavra-chave rápidas e ranqueadas por relevância sem sair do Postgres – ou com recuperação híbrida combinando pg_textsearch com pgvector/pgvectorscale – isto é para você.”
Busca híbrida
O anúncio posiciona o pg_textsearch como uma ferramenta essencial para a “terceira era” das aplicações de busca: as aplicações nativas de IA. Sistemas de RAG (Retrieval-Augmented Generation), agentes de chat e workflows agenticos dependem criticamente da qualidade da recuperação de contexto.
Nesse cenário, a busca híbrida que combina a precisão léxica do BM25 via pg_textsearch com a similaridade semântica das embeddings de vetores via pgvector se mostra poderosa. Enquanto os vetores capturam similaridade conceitual, a busca por palavra-chave garante a precisão para termos exatos. Juntas, elas fornecem o melhor dos dois mundos para alimentar modelos de linguagem com o contexto mais relevante.
Uma das grandes vantagens destacadas é a simplicidade operacional. O pg_textsearch se integra nativamente ao PostgreSQL como uma extensão. Isso significa que:
- Os índices BM25 são totalmente transacionais: atualizações, inserções e exclusões são refletidas instantaneamente, sem atrasos de sincronização ou consistência eventual;
- Não há necessidade de pipelines de dados complexos para manter um índice de busca externo sincronizado com o banco de dados.
- A busca pode ser combinada diretamente com todo o poder do SQL: JOINs, filtros, agregações e subconsultas.
A extensão já está disponível para uso no Tiger Cloud, inclusive em seu novo plano gratuito. Desenvolvedores podem começar com alguns comandos simples via CLI e habilitar a extensão com CREATE EXTENSION pg_textsearch;.
A Tiger Data enfatiza que esta é uma versão de prévia (preview), e o feedback da comunidade ajudará a moldar seu desenvolvimento futuro. O roadmap técnico promete evoluir a arquitetura atual baseada em memória para desempenho em workloads menores para uma solução completa com segmentos em disco, compressão e algoritmos de otimização de consulta como o Block-Max WAND, visando escalar para milhões de documentos.
Com o pg_textsearch tornando-se open source, a fronteira entre bancos de dados relacionais robustos e motores de busca de alta qualidade fica ainda mais tênue. Para muitas aplicações, especialmente aquelas que já utilizam PostgreSQL e buscam implementar RAG ou busca híbrida, esta extensão pode ser a peça que faltava para simplificar drasticamente sua arquitetura de dados.
Se você planeja migrar para o PostgreeSQL, esse pode ser o empurrão que faltava. E se você ainda está no MySQL 8.0, saiba que precisa realizar a migração logo!