<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title><![CDATA[Panagiotis Bailis - Elasticsearch Labs]]></title>
    <description><![CDATA[Articles and tutorials from the Search team at Elastic]]></description>
    <copyright><![CDATA[© 2026. Elasticsearch B.V. All Rights Reserved]]></copyright>
    <image>
      <title><![CDATA[Panagiotis Bailis - Elasticsearch Labs]]></title>
      <url>https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blt1121c0bf0e8a6e65/6a88da6340a1841030ef456f/search-labs-thumbnail.png</url>
      <link>https://www.elastic.co/pt/search-labs/author/panagiotis-bailis</link>
    </image>
    <link>https://www.elastic.co/pt/search-labs/author/panagiotis-bailis</link>
    <atom:link href="https://www.elastic.co/pt/search-labs/rss/author/panagiotis-bailis.xml" rel="self" type="application/rss+xml"/>
    <language><![CDATA[pt]]></language>
    <lastBuildDate>Tue, 22 Sep 2026 04:22:59 GMT</lastBuildDate>
  <item>
    <title><![CDATA[Busca híbrida revisitada: apresentando o recuperador linear no Elasticsearch!]]></title>
    <description><![CDATA[Descubra como o recuperador linear aprimora a busca híbrida, aproveitando pontuações ponderadas e normalização MinMax para classificações mais precisas e consistentes, e aprenda a usá-lo.]]></description>
    <content:encoded><![CDATA[<p>Em nossa postagem <a href="https://www.elastic.co/pt/search-labs/blog/elasticsearch-retrievers-ga-8.16.0">anterior,</a> apresentamos a estrutura de recuperadores redesenhada do zero, que permite a criação de pipelines de classificação complexos. Também exploramos como o recuperador Reciprocal Rank Fusion (RRF) permite a pesquisa híbrida ao mesclar resultados de diferentes consultas. Embora o RRF seja fácil de implementar, ele tem uma limitação notável: ele se concentra apenas em classificações relativas, ignorando pontuações reais. Isso torna o ajuste fino e a otimização um desafio.</p><h2>Conheça o retriever linear!</h2><p>Nesta postagem, apresentamos o <a href="https://www.elastic.co/pt/docs/solutions/search/retrievers-overview#retrievers-overview-types">recuperador</a> <a href="https://www.elastic.co/pt/docs/solutions/search/retrievers-overview#retrievers-overview-types"><code>linear</code></a> , nossa mais recente adição para oferecer suporte à pesquisa híbrida! Ao contrário de <code>rrf</code>, o recuperador <code>linear</code> calcula uma soma ponderada em todas as consultas que correspondem a um documento. Essa abordagem preserva a importância relativa de cada documento dentro de um conjunto de resultados, ao mesmo tempo que permite controle preciso sobre a influência de cada consulta na pontuação final. Como resultado, ele fornece uma maneira mais intuitiva e flexível de ajustar a pesquisa híbrida.</p><p>Definindo um recuperador linear onde a pontuação final será calculada como:</p><p>É tão simples quanto:</p>GET linear_retriever_blog/_search
{
   "retriever": {
       "linear": {
           "retrievers": [
               {
                   "retriever": {
                       "knn": {
                          ...
                        }
                    },
                   "weight": 5
               },
                  {
                   "retriever": {
                       "standard": {
                          ...
                        }
                    },
                   "weight": 1.5
               },


           ]
        }
     }
}<p>Percebeu como é simples e intuitivo? (e muito parecido com <code>rrf</code>!) Essa configuração permite que você controle precisamente quanto cada tipo de consulta contribui para a classificação final, ao contrário de <code>rrf</code>, que depende apenas de classificações relativas.</p><p>Uma ressalva permanece: as pontuações <code>knn</code> podem ser estritamente limitadas, dependendo da métrica de similaridade usada. Por exemplo, com similaridade de cosseno ou produto escalar de vetores normalizados por unidade, as pontuações sempre estarão dentro do intervalo <code>[0, 1]</code> . Em contraste, as pontuações <code>bm25</code> são menos previsíveis e não têm limites claramente definidos.</p><h2>Escalando as pontuações: kNN vs BM25</h2><p>Um desafio da busca híbrida é que diferentes recuperadores produzem pontuações em escalas diferentes. Considere, por exemplo, o seguinte cenário:</p><p>Pontuações da consulta A:</p><p></p><p>doc1</p><p>doc2</p><p>doc3</p><p>doc4</p><p>knn</p><p>0,347</p><p>0,35</p><p>0,348</p><p>0,346</p><p>bm25</p><p>100</p><p>1,5</p><p>1</p><p>0,5</p><p>Pontuações da consulta B:</p><p></p><p>doc1</p><p>doc2</p><p>doc3</p><p>doc4</p><p>knn</p><p>0,347</p><p>0,35</p><p>0,348</p><p>0,346</p><p>bm25</p><p>0,63</p><p>0,01</p><p>0,3</p><p>0,4</p><p>Você pode ver a disparidade acima: as pontuações <code>kNN</code> variam entre 0 e 1, enquanto as pontuações <code>bm25</code> podem variar muito. Essa diferença dificulta a definição de pesos estáticos ideais para combinar os resultados.</p><h2>Normalização para o resgate: o normalizador MinMax</h2><p>Para resolver isso, introduzimos um normalizador <code>minmax</code> opcional que dimensiona as pontuações, independentemente para cada consulta, para o intervalo <code>[0, 1]</code> usando a seguinte fórmula:</p><p>Isso preserva a importância relativa de cada documento dentro do conjunto de resultados de uma consulta, facilitando a combinação de pontuações de diferentes recuperadores. Com a normalização, as pontuações se tornam:</p><p>Pontuações da consulta A:</p><p></p><p>doc1</p><p>doc2</p><p>doc3</p><p>doc4</p><p>knn</p><p>0,347</p><p>0,35</p><p>0,348</p><p>0,346</p><p>bm25</p><p>1,00</p><p>0,01</p><p>0,005</p><p>0,000</p><p>Pontuações da consulta B:</p><p></p><p>doc1</p><p>doc2</p><p>doc3</p><p>doc4</p><p>knn</p><p>0,347</p><p>0,35</p><p>0,348</p><p>0,346</p><p>bm25</p><p>1,00</p><p>0,000</p><p>0,465</p><p>0,645</p><p>Todas as pontuações agora estão no intervalo <code>[0, 1]</code> e otimizar a soma ponderada é muito mais simples, pois agora capturamos a importância (em relação à consulta) de um resultado em vez de sua pontuação absoluta e mantemos a consistência entre as consultas.</p><h2>Exemplo de recuperador linear </h2><p>Vamos ver um exemplo agora para mostrar a aparência do exemplo acima e como o recuperador <code>linear</code> aborda algumas das deficiências do <code>rrf</code>. O RRF depende somente de classificações relativas e não considera diferenças reais de pontuação. Por exemplo, dadas estas pontuações:</p><p></p><p>doc1</p><p>doc2</p><p>doc3</p><p>doc4</p><p>knn</p><p>0,347</p><p>0,35</p><p>0,348</p><p>0,346</p><p>bm25</p><p>100</p><p>1,5</p><p>1</p><p>0,5</p><p>pontuação rrf</p><p>0,03226</p><p>0,03252</p><p>0,03200</p><p>0,03125</p><p>rrf classificaria os documentos como:</p><p>No entanto, doc1 tem uma pontuação <code>bm25</code> significativamente maior que as outras, o que <code>rrf</code> não consegue capturar porque só analisa classificações relativas. O recuperador <code>linear</code> , combinado com a normalização, contabiliza corretamente as pontuações e suas diferenças, produzindo uma classificação mais significativa:</p><p></p><p>doc1</p><p>doc2</p><p>doc3</p><p>doc4</p><p>knn</p><p>0,347</p><p>0,35</p><p>0,348</p><p>0,346</p><p>bm25</p><p>1</p><p>0,01</p><p>0,005</p><p>0</p><p>Como podemos ver acima, a ótima classificação do doc1 e <code>score</code> para <code>bm25</code> são devidamente contabilizadas e refletidas nas pontuações finais. Além disso, todas as pontuações agora estão no intervalo <code>[0, 1]</code> para que possamos compará-las e combiná-las de uma forma muito mais intuitiva (e até mesmo criar processos de otimização offline).</p><h2>Juntando tudo</h2><p>Para aproveitar ao máximo o recuperador <code>linear</code> com normalização, a solicitação de pesquisa ficaria assim:</p>GET linear_retriever_blog/_search
{
   "retriever": {
       "linear": {
           "retrievers": [
               {
                   "retriever": {
                       "knn": {
                          ...
                        }
                    },
                   "weight": 5
               },
                  {
                   "retriever": {
                       "standard": {
                          ...
                        }
                    },
                   "weight": 1.5,
                   "normalizer": "minmax"
               },


           ]
       }
   }
}<p>Essa abordagem combina o melhor dos dois mundos: ela mantém a flexibilidade e a pontuação intuitiva do recuperador <code>linear</code> , ao mesmo tempo em que garante uma escala de pontuação consistente com a normalização MinMax.</p><p>Assim como todos os nossos recuperadores, o recuperador <code>linear</code> pode ser integrado a qualquer nível de uma árvore hierárquica de recuperadores, com suporte para explicabilidade, destaque de correspondência, recolhimento de campo e muito mais.</p><h2>Quando escolher o retriever linear e por que isso faz a diferença</h2><p>O recuperador <code>linear</code> :</p><ul><li><p>Preserva a importância relativa aproveitando pontuações reais, não apenas classificações.</p></li><li><p>Permite ajustes finos com contribuições ponderadas de diferentes consultas.</p></li><li><p>Melhora a consistência usando a normalização, tornando a pesquisa híbrida mais robusta e previsível.</p></li></ul><h2>Conclusão</h2><p>O recuperador <code>linear</code> já está disponível no Elasticsearch Serverless e nas versões 8.18 e 9.0! Mais exemplos e parâmetros de configuração também podem ser encontrados em nossa documentação. Experimente e veja como ele pode melhorar sua experiência de pesquisa híbrida — aguardamos seu feedback. Boa busca!</p>]]></content:encoded>
    <link>https://www.elastic.co/search-labs/blog/linear-retriever-hybrid-search</link>
    <guid isPermaLink="true">https://www.elastic.co/search-labs/blog/linear-retriever-hybrid-search</guid>
    <category><![CDATA[Relevância]]></category>
    <category><![CDATA[Busca híbrida]]></category>
    <dc:creator><![CDATA[Panagiotis Bailis]]></dc:creator>
    <enclosure url="https://static-www.elastic.co/v3/assets/bltefdd0b53724fa2ce/blte58a751cbcc1153d/6a17e3c76317305c4f585a10/7a07e27e3095463ff93b4cb7f8a0cf3b8e44eab0-1777x1000.png" length="0" type="image/png"/>
    <pubDate>Wed, 28 May 2025 00:00:00 GMT</pubDate>
  </item>
  </channel>
</rss>