← Data Science Signal over noise.

Reranking and chunking: the two levers that quietly decide retrieval quality

🌿 Growing
#rag#reranking#chunking#cross-encoder#retrieval
TL;DR

Fast retrieval casts a wide net; a slower cross-encoder reranks the shortlist for precision. And how you cut documents into chunks decides what a single vector even means. Both are unglamorous, and both move retrieval quality more than the model choice does.

Method note: the reranking architectures here are cited to their primary papers. I studied them in the DeepLearning.AI RAG course; nothing proprietary is reproduced. The diagram is my own.

Context

The first article in this series covered how search finds candidates. Two things decide whether those candidates are actually good, and both get less attention than they deserve. One is reranking, a second pass that reorders the shortlist. The other is chunking, the humble choice of how to cut documents before you ever embed them. Get either wrong and no clever model downstream will save you.

The concept

Start with the encoders, because the reranking story is really about them.

A bi-encoder embeds the query and each document separately. Document vectors are computed once and stored, so at query time you only embed the query and compare vectors. That is what makes retrieval fast and scalable, and it is also its weakness: judging the query and the document in isolation misses the fine interactions between them.

A cross-encoder concatenates the query and a document and runs them through the model together, producing a direct relevance score. It sees the deep interaction and is far more accurate (Nogueira and Cho, 2019). It also cannot be precomputed, so it is too slow to search millions of documents. The practical resolution is to use each for what it is good at: the bi-encoder retrieves a wide shortlist quickly, the cross-encoder reranks that shortlist, and only the top few go to the model.

EncoderHow it scoresSpeedRole
Bi-encoderQuery and doc embedded separatelyFast, precomputableFirst-pass retrieval (top 20)
Cross-encoderQuery and doc processed togetherSlow, per-pairRerank the shortlist (top 20 → 5)
ColBERT (late interaction)Token-level vectors, matched at query timeMiddle groundWhen you need both, at storage cost

ColBERT sits between the two: it precomputes a vector per token rather than per document, then matches each query token to its best document token at query time. Richer than a bi-encoder, cheaper than a cross-encoder, with higher storage as the trade (Khattab and Zaharia, 2020).

bi-encoder retrieve top 20 (fast) cross-encoder rerank (precise) top 5 to the model fewer, better tokens Wide net for recall, then a precise second pass. Fewer, better passages reach the model.
Retrieve wide, rerank narrow. My own diagram.

Now chunking, which acts earlier and matters just as much. A vector summarizes whatever text you embed. Feed it a huge chunk covering many topics and the vector becomes a blurry average that matches nothing precisely. Small, focused chunks capture specific ideas. Recursive character splitting, cutting at paragraph then sentence then word boundaries with a little overlap, is a solid default. Semantic chunking cuts where the topic actually shifts, using the distance between consecutive sentences. Context-aware chunking adds a short generated label to each chunk describing what it holds, which helps both the embedding and any metadata filter. The heavier methods cost more up front, in preprocessing, not at query time.

Where this connects

  • Data science. Reranking is a general two-stage retrieval pattern: cheap recall then expensive precision, useful anywhere a first-pass filter feeds a costly scorer. Chunking is a reminder that representation choices upstream often dominate model choices downstream, the same lesson as feature engineering in classic machine learning.
  • Clinical AI. For a corpus of guidelines, chunking decides whether “a single contraindication” or “half the document” becomes one searchable unit, and that determines whether the right passage can ever be retrieved cleanly. Reranking then buys precision on the shortlist, so the few passages a model sees are the most relevant ones, which is exactly what keeps a grounded answer trustworthy.

Nota de método: las arquitecturas de reranking están citadas a sus artículos primarios. Las estudié en el curso de RAG de DeepLearning.AI; no se reproduce nada propietario. El diagrama es propio.

Contexto

El primer artículo de esta serie cubrió cómo la búsqueda encuentra candidatos. Dos cosas deciden si esos candidatos son de verdad buenos, y ambas reciben menos atención de la que merecen. Una es el reranking, una segunda pasada que reordena la lista corta. La otra es el chunking, la humilde decisión de cómo cortar los documentos antes siquiera de embeberlos. Falla en cualquiera y ningún modelo ingenioso más abajo te salvará.

El concepto

Empieza por los encoders, porque la historia del reranking en realidad trata de ellos.

Un bi-encoder embebe la consulta y cada documento por separado. Los vectores de los documentos se calculan una vez y se guardan, así que en el momento de la consulta solo embebes la consulta y comparas vectores. Eso es lo que hace la recuperación rápida y escalable, y también es su debilidad: juzgar la consulta y el documento por separado pierde las interacciones finas entre ellos.

Un cross-encoder concatena la consulta y un documento y los pasa por el modelo juntos, produciendo un score de relevancia directo. Ve la interacción profunda y es mucho más preciso (Nogueira y Cho, 2019). Tampoco se puede precomputar, así que es demasiado lento para buscar en millones de documentos. La resolución práctica es usar cada uno para lo que sirve: el bi-encoder recupera rápido una lista corta amplia, el cross-encoder reordena esa lista, y solo los primeros pasan al modelo.

EncoderCómo puntúaVelocidadRol
Bi-encoderConsulta y doc embebidos por separadoRápido, precomputableRecuperación de primera pasada (top 20)
Cross-encoderConsulta y doc procesados juntosLento, por parReordenar la lista corta (top 20 → 5)
ColBERT (late interaction)Vectores por token, emparejados en la consultaPunto medioCuando necesitas ambos, a costa de almacenamiento

ColBERT queda entre los dos: precomputa un vector por token en vez de por documento, y luego empareja cada token de la consulta con su mejor token del documento en el momento de la consulta. Más rico que un bi-encoder, más barato que un cross-encoder, con más almacenamiento como trato (Khattab y Zaharia, 2020).

bi-encoder recupera top 20 (rápido) cross-encoder reordena (preciso) top 5 al modelo menos y mejores tokens Red amplia para el recall, luego una segunda pasada precisa. Menos y mejores pasajes llegan al modelo.
Recuperar amplio, reordenar estrecho. Diagrama propio.

Ahora el chunking, que actúa antes y pesa igual. Un vector resume el texto que embebes. Dale un chunk enorme que cubre muchos temas y el vector se vuelve un promedio borroso que no empareja nada con precisión. Los chunks pequeños y enfocados capturan ideas específicas. El recursive character splitting, cortar por límites de párrafo, luego oración, luego palabra, con algo de solape, es un default sólido. El semantic chunking corta donde el tema de verdad cambia, usando la distancia entre oraciones consecutivas. El context-aware chunking añade a cada chunk una etiqueta corta generada que describe lo que contiene, lo que ayuda tanto al embedding como a cualquier filtro de metadata. Los métodos más pesados cuestan más por adelantado, en preprocesamiento, no en el momento de la consulta.

Dónde conecta

  • Data science. El reranking es un patrón general de recuperación en dos etapas: recall barato y luego precisión cara, útil en cualquier lugar donde un filtro de primera pasada alimenta a un scorer costoso. El chunking recuerda que las decisiones de representación aguas arriba suelen dominar sobre la elección del modelo aguas abajo, la misma lección que la ingeniería de features en el machine learning clásico.
  • Clinical AI. Para un corpus de guías, el chunking decide si “una sola contraindicación” o “media guía” se vuelve una unidad de búsqueda, y eso determina si el pasaje correcto puede recuperarse limpio alguna vez. El reranking luego compra precisión sobre la lista corta, para que los pocos pasajes que ve un modelo sean los más relevantes, que es justo lo que mantiene confiable una respuesta fundamentada.

Sources