Tipos de Busca — Lexical, Semântica e Híbrida
Quando pensamos em um sistema de busca, normalmente imaginamos algo simples:
Usuário digita uma pesquisa
↓
Sistema procura resultados
↓
Resultados são exibidos
Porém, existem diferentes maneiras de interpretar uma consulta e encontrar resultados.
Considere uma busca:
"como configurar banco de dados postgres"
Um sistema pode procurar documentos que contenham exatamente essas palavras.
Outro pode entender que o usuário está procurando informações sobre:
PostgreSQL
Configuração
Banco de dados
Mesmo que o documento não contenha exatamente as mesmas palavras.
Essas abordagens representam diferentes estratégias de busca.
As três mais importantes atualmente são:
Busca
│
├── Lexical
│
├── Semântica
│
└── Híbrida
Cada uma possui vantagens, desvantagens e casos de uso diferentes.
1. Busca Lexical
A busca lexical procura correspondências entre os termos utilizados pelo usuário e os termos presentes nos documentos.
Em outras palavras:
A busca lexical se preocupa principalmente com as palavras que aparecem no texto.
Imagine que temos:
Documento A
Como configurar um banco PostgreSQL utilizando Docker.
E o usuário pesquisa:
PostgreSQL Docker
A busca lexical identifica que os termos:
PostgreSQL
Docker
aparecem diretamente no documento.
Portanto, ele provavelmente terá uma boa pontuação.
2. Como funciona a busca lexical?
Um dos algoritmos mais conhecidos para busca lexical é o:
BM25
Ele é amplamente utilizado em mecanismos de busca e sistemas como Elasticsearch e OpenSearch.
A ideia geral é calcular o quanto um documento é relevante para uma consulta.
Por exemplo:
Query:
"PostgreSQL Docker"
Temos:
Documento A
Como configurar PostgreSQL utilizando Docker.
Documento B
Como criar uma API REST utilizando Node.js.
O Documento A provavelmente terá uma pontuação maior porque contém os termos pesquisados.
Podemos imaginar:
Documento A
PostgreSQL + Docker
Score: 8.7
Documento B
Node.js + API
Score: 0.2
O mecanismo retorna:
1. Documento A
2. Documento B
3. Term Frequency
Uma ideia importante em mecanismos de busca lexical é a frequência dos termos.
Imagine:
Documento A
PostgreSQL é um banco de dados.
PostgreSQL pode ser executado com Docker.
PostgreSQL possui suporte a extensões.
A palavra:
PostgreSQL
aparece várias vezes.
Isso pode aumentar a relevância do documento para uma pesquisa relacionada a PostgreSQL.
Porém, simplesmente contar palavras não é suficiente.
Imagine:
Documento B
PostgreSQL PostgreSQL PostgreSQL PostgreSQL
Mesmo tendo muitas ocorrências, isso não significa necessariamente que seja um bom resultado.
Por isso, algoritmos como BM25 consideram outros fatores.
4. TF-IDF
Outro conceito importante é o:
TF-IDF
Que significa:
Term Frequency
Inverse Document Frequency
A ideia é medir:
Quanto um termo é importante neste documento?
Imagine um conjunto de documentos:
Documento 1
PostgreSQL Docker
Documento 2
PostgreSQL Node.js
Documento 3
PostgreSQL Redis
A palavra:
PostgreSQL
aparece em todos os documentos.
Portanto, ela é menos útil para diferenciar os resultados.
Já:
Docker
aparece apenas em um documento.
Então, para uma pesquisa relacionada a Docker, esse termo pode ser mais informativo.
5. Vantagens da busca lexical
A busca lexical possui várias vantagens.
1. É rápida
Motores de busca podem criar índices extremamente eficientes.
Por exemplo:
PostgreSQL
↓
Documento 1
Documento 5
Documento 17
Documento 83
Em vez de analisar todos os documentos, o mecanismo consulta o índice.
2. É previsível
Se o documento contém:
Docker
e o usuário procura:
Docker
existe uma relação clara entre consulta e resultado.
3. É excelente para termos específicos
Por exemplo:
"RTX 5090"
"iPhone 17 Pro"
"PostgreSQL 18"
"ERROR_CONNECTION_REFUSED"
Nesses casos, encontrar exatamente o termo pode ser mais importante do que entender o significado.
6. Desvantagens da busca lexical
O principal problema é que ela pode ter dificuldade com:
Sinônimos e significado.
Imagine:
Usuário:
"como consertar meu computador"
Documento:
Como solucionar problemas no seu PC.
Um mecanismo puramente lexical pode não considerar esse documento tão relevante porque:
consertar ≠ solucionar
computador ≠ PC
Embora uma pessoa entenda que os conceitos são muito semelhantes.
Outro exemplo:
Busca:
"carro econômico"
Documento:
Veículo com baixo consumo de combustível.
As palavras são diferentes.
Mas semanticamente:
carro
≈
veículo
e:
econômico
≈
baixo consumo
A busca lexical pode não perceber isso tão bem.
7. Busca Semântica
A busca semântica tenta entender o significado da consulta e dos documentos.
Em vez de perguntar:
"Quais documentos possuem estas palavras?"
ela tenta responder:
"Quais documentos possuem significado semelhante ao que o usuário está procurando?"
Normalmente, isso é feito utilizando:
Embeddings
Um embedding transforma um texto em um vetor numérico.
Por exemplo:
"Como configurar PostgreSQL"
pode ser transformado em algo conceitualmente parecido com:
[0.12, -0.43, 0.87, 0.21, ...]
O documento:
"Guia para instalar e configurar um banco PostgreSQL"
também é transformado em um vetor.
O sistema então compara os vetores.
Se os vetores forem próximos:
Query
↓
[0.12, -0.43, 0.87, ...]
Documento
↓
[0.10, -0.40, 0.85, ...]
o sistema considera que existe uma forte similaridade semântica.
8. Similaridade Semântica
Imagine:
Query:
"como deixar meu PC mais rápido"
Documento:
"10 maneiras de melhorar o desempenho do seu computador"
As palavras não são exatamente iguais.
Mas o significado é muito próximo.
A busca semântica consegue capturar essa relação:
PC
≈
computador
mais rápido
≈
melhorar desempenho
Portanto:
Query
↓
Embedding
↓
Busca por vetores semelhantes
↓
Documentos semanticamente relevantes
9. Busca Vetorial
A busca semântica normalmente utiliza um:
Vector Database
ou um mecanismo capaz de realizar busca vetorial.
Alguns exemplos incluem:
- Pinecone
- Weaviate
- Qdrant
- Milvus
- pgvector
- Elasticsearch
- OpenSearch
O fluxo pode ser:
Documento
↓
Embedding Model
↓
Vetor
↓
Vector Database
Quando o usuário pesquisa:
"como melhorar o desempenho do meu computador"
temos:
Query
↓
Embedding Model
↓
Query Vector
↓
Busca por vetores próximos
↓
Resultados
10. Similaridade por Cosseno
Uma das técnicas utilizadas para comparar embeddings é a:
Cosine Similarity
A ideia é medir o quanto dois vetores apontam para direções semelhantes.
Podemos imaginar:
Documento
↗
/
/
/
/
↗
Query
Quanto mais semelhantes forem as direções:
Maior similaridade
Em termos simplificados:
1.0
↓
Muito semelhante
0.0
↓
Pouco relacionado
-1.0
↓
Direções opostas
Na prática, o comportamento depende do modelo e da normalização utilizada.
11. Vantagens da busca semântica
A principal vantagem é entender conceitos.
Por exemplo:
Query:
"notebook para jogos"
Pode encontrar:
Laptop gamer
Mesmo que o documento não utilize a palavra:
notebook
Outro exemplo:
Query:
"problema de conexão com banco"
Pode encontrar:
Erro ao conectar ao PostgreSQL
Mesmo com palavras diferentes.
A busca semântica é especialmente útil para:
- Sistemas de recomendação
- Busca em documentos
- Chatbots
- RAG
- Bases de conhecimento
- Pesquisa de produtos
- Busca de artigos
- Pesquisa por intenção
12. Desvantagens da busca semântica
Apesar de poderosa, a busca semântica não substitui completamente a lexical.
Imagine:
Query:
"RTX 5090"
Você provavelmente quer resultados que mencionem exatamente:
RTX 5090
Um resultado sobre:
RTX 4090
pode ser semanticamente parecido.
Mas talvez seja completamente irrelevante para a pesquisa.
Da mesma forma:
iPhone 17
e:
iPhone 16
são semanticamente muito semelhantes.
Mas possuem significados diferentes para uma busca específica.
A busca semântica pode ter dificuldade com:
- Números
- Códigos
- IDs
- SKUs
- Nomes específicos
- Termos técnicos
- Erros de sistema
- Versões
Por isso, utilizar apenas busca semântica pode gerar resultados aparentemente relevantes, mas incorretos.
13. Busca Híbrida
A busca híbrida combina:
Busca Lexical
+
Busca Semântica
A ideia é utilizar o melhor dos dois mundos.
Por exemplo:
Usuário
↓
"como configurar postgres no docker"
│
├───────────────┐
↓ ↓
Busca Lexical Busca Semântica
↓ ↓
BM25 Vector Search
↓ ↓
Resultados Resultados
└───────┬───────┘
↓
Combinação
↓
Ranking Final
Isso permite encontrar:
Correspondência exata
e também:
Correspondência por significado
14. Exemplo de busca híbrida
Imagine que temos estes documentos:
Documento A
Como configurar PostgreSQL no Docker.
Documento B
Guia para executar bancos de dados em containers.
Documento C
Como instalar PostgreSQL no Windows.
O usuário pesquisa:
"Postgres Docker"
A busca lexical provavelmente favorece:
Documento A
porque contém:
PostgreSQL
Docker
A busca semântica pode considerar:
Documento A
Documento B
porque:
Docker
≈
containers
A busca híbrida pode combinar essas informações.
Resultado:
1. Documento A
2. Documento B
3. Documento C
Assim, conseguimos:
Precisão lexical
+
Compreensão semântica
15. Como combinar os resultados?
Existem diferentes estratégias.
Uma abordagem simples seria:
Score Final =
Score Lexical
+
Score Semântico
Por exemplo:
Documento A
Lexical Score: 0.90
Semantic Score: 0.85
Final: 1.75
Outro documento:
Documento B
Lexical Score: 0.40
Semantic Score: 0.95
Final: 1.35
O Documento A aparece primeiro.
Na prática, os scores geralmente precisam ser normalizados, porque os mecanismos podem produzir valores em escalas diferentes.
16. Reciprocal Rank Fusion
Uma técnica bastante utilizada para combinar rankings é:
RRF — Reciprocal Rank Fusion
Imagine que temos dois rankings.
Busca lexical:
1. Documento A
2. Documento C
3. Documento B
Busca semântica:
1. Documento B
2. Documento A
3. Documento D
O RRF combina as posições.
Um documento que aparece bem colocado em ambas as listas tende a subir no ranking final.
Resultado:
1. Documento A
2. Documento B
3. Documento C
4. Documento D
A grande vantagem é que podemos combinar rankings sem depender diretamente de os scores originais terem a mesma escala.
17. Um sistema moderno de busca
Um sistema mais completo pode ter várias etapas:
Usuário
↓
Query
↓
┌─────────────────────┐
│ Query Processing │
└─────────────────────┘
↓
├───────────────┐
↓ ↓
Lexical Semantic
↓ ↓
BM25 Embeddings
↓ ↓
Top K Top K
└───────┬───────┘
↓
Hybrid Ranking
↓
Reranker
↓
Resultados
Em sistemas mais sofisticados, ainda podemos adicionar um:
Reranker
Ele recebe os resultados candidatos e tenta identificar quais são realmente mais relevantes.
Por exemplo:
Busca inicial
1000 documentos
↓
Lexical + Semantic
↓
100 documentos
↓
Reranker
↓
10 documentos
↓
Usuário
Isso permite fazer uma busca inicial rápida e depois uma avaliação mais precisa dos melhores candidatos.
18. RAG e busca híbrida
Um dos casos mais interessantes atualmente é o uso de busca híbrida em sistemas de:
RAG — Retrieval-Augmented Generation
Imagine uma empresa com:
Documentação
Manuais
PDFs
Tickets
Artigos
Código
Um usuário pergunta:
"Como faço para configurar a autenticação OAuth?"
O sistema pode executar:
Pergunta
↓
Busca Lexical
+
Busca Semântica
↓
Documentos relevantes
↓
LLM
↓
Resposta
A busca lexical pode encontrar documentos que mencionam exatamente:
OAuth
A busca semântica pode encontrar:
Autenticação
Login
Authorization
Identity Provider
A combinação aumenta as chances de encontrar o contexto correto.
19. Quando usar busca lexical?
Prefira busca lexical quando a correspondência exata é importante.
Exemplos:
Códigos de erro
IDs
SKUs
Número de produto
Versões
Nomes específicos
Por exemplo:
"ERR_CONNECTION_REFUSED"
ou:
"RTX 5090"
Nesse cenário, encontrar exatamente o termo pode ser mais importante do que encontrar algo semanticamente parecido.
20. Quando usar busca semântica?
Prefira busca semântica quando o usuário pode expressar a mesma intenção de várias maneiras.
Exemplos:
"Como deixar meu computador mais rápido?"
"Como melhorar a performance do meu PC?"
"Meu computador está lento, o que fazer?"
Essas frases são diferentes lexicalmente.
Mas possuem uma intenção semelhante.
A busca semântica é excelente para capturar esse tipo de relação.
21. Quando usar busca híbrida?
Na maioria dos sistemas de busca modernos, a busca híbrida é uma excelente opção.
Ela é especialmente interessante quando temos:
Termos específicos
+
Linguagem natural
Por exemplo:
"Como resolver o erro P1001 ao conectar no PostgreSQL?"
Temos:
P1001
PostgreSQL
que são termos específicos.
Mas também temos:
Como resolver
ao conectar
que representam uma intenção.
A busca híbrida consegue considerar ambos.
22. Comparação
CaracterísticaLexicalSemânticaHíbridaCorrespondência exataExcelenteFracaExcelenteEntendimento de contextoLimitadoExcelenteExcelenteSinônimosLimitadoExcelenteExcelenteIDs e códigosExcelentePode falharExcelenteTermos técnicosExcelentePode confundirExcelenteLinguagem naturalLimitadoExcelenteExcelenteImplementaçãoMais simplesMais complexaMais complexaCusto computacionalMenorMaiorMaiorRAGÚtilMuito útilExcelente
23. Um exemplo real
Imagine um e-commerce.
O usuário pesquisa:
"celular samsung barato com boa câmera"
Uma busca lexical pode procurar:
Samsung
celular
câmera
Uma busca semântica pode entender:
Samsung
smartphone
baixo preço
boa qualidade fotográfica
Uma busca híbrida pode combinar:
Termos exatos
+
Intenção do usuário
E ainda utilizar filtros estruturados:
Marca: Samsung
Preço: < R$ 2.000
Categoria: Smartphone
O sistema completo poderia ser:
Query
↓
Entendimento da consulta
↓
Filtros estruturados
↓
Busca Lexical
+
Busca Semântica
↓
Combinação dos resultados
↓
Ranking
↓
Reranking
↓
Produtos
Isso é muito mais poderoso do que simplesmente procurar palavras no banco.
24. Busca não é apenas "procurar texto"
Um dos principais conceitos para entender sistemas modernos de busca é que:
Busca é um problema de recuperação e ranking de informação.
O objetivo não é apenas encontrar documentos.
É encontrar os:
documentos mais relevantes
e colocá-los na:
ordem correta
Por isso, um sistema de busca moderno pode envolver:
Query Processing
↓
Indexação
↓
Busca Lexical
↓
Busca Semântica
↓
Busca Híbrida
↓
Ranking
↓
Reranking
↓
Resultados
25. A evolução dos sistemas de busca
Podemos visualizar uma evolução:
Busca por texto
↓
Busca Lexical
↓
TF-IDF
↓
BM25
↓
Busca Semântica
↓
Vector Search
↓
Busca Híbrida
↓
Reranking
↓
Sistemas de busca com IA
Isso não significa que uma técnica substituiu completamente a outra.
Na prática, sistemas modernos combinam várias técnicas.
Um mecanismo pode usar:
BM25
+
Vector Search
+
Filtros
+
Reranking
+
Personalização
Cada camada resolve um problema diferente.
Conclusão
Existem três conceitos fundamentais para entender sistemas modernos de busca.
A busca lexical procura correspondências entre as palavras da consulta e dos documentos.
"PostgreSQL Docker"
↓
Procura termos relacionados
A busca semântica tenta entender o significado.
"computador lento"
↓
"como melhorar o desempenho do PC"
E a busca híbrida combina as duas abordagens:
Lexical
+
Semântica
↓
Busca Híbrida
A escolha depende do problema.
Se você precisa encontrar:
IDs
Códigos
SKUs
Versões
Termos exatos
a busca lexical provavelmente será mais adequada.
Se precisa entender:
Intenção
Contexto
Sinônimos
Linguagem natural
a busca semântica pode ser melhor.
Mas quando o sistema precisa lidar com linguagem natural e termos específicos ao mesmo tempo, a busca híbrida geralmente oferece o melhor equilíbrio.
O ponto mais importante é entender que um sistema moderno de busca não é simplesmente:
"Procure essa palavra no banco."
Ele é, na realidade, um sistema de recuperação, relevância e ranking de informação.
A melhor busca não é aquela que encontra mais resultados. É aquela que coloca o resultado mais relevante no topo.