Reordenación con cross-encoders
Recupere los 50 primeros resultados con embeddings baratos y después reordene los 5 primeros con un cross-encoder más lento para obtener mayor precisión.
Reordenación con cross-encoders es una lección gratuita de AI Agents en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Agents, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Agents incluye 4 lecciones en total.
Partes de esta lección aún no han sido traducidas y se muestran en inglés.
¿Por qué reordenar?
La similitud de embeddings es una primera pasada rápida y aproximada. A menudo recupera fragmentos que comparten PALABRAS CLAVE con la consulta, pero que en realidad no son relevantes para la PREGUNTA.
Un reordenador recibe pares (consulta, fragmento) y calcula una puntuación de relevancia mucho más precisa.
Bi-encoder frente a cross-encoder
Dos arquitecturas para la similitud de texto:
- Bi-encoder: genera embeddings de la consulta y del fragmento por separado y calcula la similitud coseno. Es rápido (vectoriza una vez y reutiliza), pero menos preciso.
- Cross-encoder: procesa conjuntamente (consulta, fragmento) en el modelo. Es lento (uno por par), pero mucho más preciso.
Recuperación en dos etapas
El patrón que combina ambos:
- El bi-encoder recupera rápidamente las 50 mejores candidatas
- El cross-encoder las reordena y selecciona las 5 mejores
- Las 5 mejores se incorporan al prompt del LLM
Obtiene la velocidad del bi-encoder y la precisión del cross-encoder.
Uso de Cohere Rerank
El cross-encoder de producción más sencillo:
import cohere
co = cohere.Client(COHERE_KEY)
results = co.rerank(
model='rerank-multilingual-v3.0',
query='What is the refund policy?',
documents=top_50_chunks,
top_n=5
)
for r in results.results:
print(r.index, r.relevance_score, top_50_chunks[r.index])Reordenadores de código abierto
BGE Reranker es la principal opción de código abierto:
from sentence_transformers import CrossEncoder
model = CrossEncoder('BAAI/bge-reranker-base')
pairs = [(query, chunk) for chunk in candidates]
scores = model.predict(pairs)
ranked = [c for _, c in sorted(zip(scores, candidates), reverse=True)][:5]Voyage Rerank
import voyageai
vo = voyageai.Client(api_key=VOYAGE_KEY)
res = vo.rerank(
query=query,
documents=candidates,
model='rerank-2',
top_k=5
)Cuándo ayuda la reordenación
- Listas largas de candidatas (50-200)
- Diferencias sutiles de relevancia
- Consultas que incluyen negación o comparación
- Casos multilingües
Cuándo no ayuda
- Conjuntos de candidatas ya reducidos (las 5 mejores de un bi-encoder)
- Consultas críticas en cuanto a latencia y de bajo riesgo
Compensación de costes
Los cross-encoders ejecutan una inferencia por par. Reordenar 50 candidatas implica 50 llamadas al modelo (es barato con Cohere/Voyage, pero más lento si se aloja por cuenta propia).
Reserve entre 50 y 200 candidatas para la reordenación; rara vez merece la pena usar más.
Integrating into LangChain
from langchain.retrievers import ContextualCompressionRetriever
from langchain.retrievers.document_compressors import CohereRerank
compressor = CohereRerank(top_n=5)
retriever = ContextualCompressionRetriever(
base_compressor=compressor,
base_retriever=vector_retriever
)Integrating into LlamaIndex
from llama_index.postprocessor.cohere_rerank import CohereRerank
rerank = CohereRerank(top_n=5)
query_engine = index.as_query_engine(
similarity_top_k=20,
node_postprocessors=[rerank]
)Reordenación con atención a la diversidad
A veces busca resultados diversos, no solo los que tienen la puntuación más alta (que pueden ser casi duplicados). MMR (Maximal Marginal Relevance) equilibra la puntuación y la diversidad:
from langchain.vectorstores import Chroma
results = store.max_marginal_relevance_search(query, k=5, fetch_k=20, lambda_mult=0.5)Patrón de dos etapas
¿Por qué utilizar un bi-encoder y un cross-encoder en lugar de uno solo?
Resumen
El bi-encoder recupera 50 resultados y el cross-encoder los reordena hasta quedarse con 5. Utilice Cohere o Voyage en producción, y BGE OSS si aloja el modelo por cuenta propia. Obtendrá una mejora significativa de la precisión con un coste adicional moderado.
Preguntas frecuentes
¿La lección «Reordenación con cross-encoders» es gratis?
Sí — el texto completo de «Reordenación con cross-encoders» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Agents, actualiza a CoddyKit PRO. El curso de AI Agents incluye 4 lecciones en total.
¿Qué aprenderé en «Reordenación con cross-encoders»?
Recupere los 50 primeros resultados con embeddings baratos y después reordene los 5 primeros con un cross-encoder más lento para obtener mayor precisión. Practicas AI Agents con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar AI Agents?
No se requiere experiencia previa. AI Agents en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Reordenación con cross-encoders»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de AI Agents?
Sí. Cada lección de AI Agents incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Reordenación con cross-encoders
- HyDE: embeddings de documentos hipotéticos
- Recuperación multivectorial (ColBERT)
- Evaluación de RAG (RAGAS, Recall@K)