0Pricing
AI Agents · Lezione

Riordinamento con cross-encoder

Recuperi i primi 50 risultati con embedding economici, poi riordini i primi 5 con un cross-encoder più lento per ottenere maggiore precisione.

Riordinamento con cross-encoder è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.

Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.

Perché effettuare il reranking?

La similarità degli embedding è un primo passaggio rapido e approssimativo. Spesso include chunk che condividono PAROLE CHIAVE con la query, ma che in realtà non sono pertinenti alla DOMANDA.

Un reranker prende coppie (query, chunk) e calcola un punteggio di rilevanza molto più preciso.

Bi-encoder e cross-encoder

Due architetture per la similarità del testo:

  • Bi-encoder — crea separatamente l'embedding della query e del chunk e calcola il coseno. È rapido (vettorializza una volta e riutilizza), ma meno accurato.
  • Cross-encoder — elabora congiuntamente (query, chunk) tramite il modello. È lento (un'elaborazione per coppia), ma molto più accurato.

Recupero in due fasi

L'approccio che li combina:

  1. Il bi-encoder recupera rapidamente i primi 50 candidati
  2. Il cross-encoder li riordina fino ai primi 5
  3. I primi 5 vengono inseriti nel prompt dell'LLM

Si ottengono la velocità del bi-encoder e la precisione del cross-encoder.

Utilizzo di Cohere Rerank

Il cross-encoder di produzione più semplice da utilizzare:

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])

Reranker open source

BGE Reranker è l'opzione OSS di riferimento:

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
)

Quando il reranking è utile

  • Elenchi lunghi di candidati (50-200)
  • Differenze di rilevanza sottili
  • Query che includono negazioni o confronti
  • Casi multilingue

Quando non è utile

  • Insiemi di candidati già ristretti (i primi 5 del bi-encoder)
  • Query a bassa posta in gioco in cui la latenza è critica

Compromesso dei costi

I cross-encoder eseguono un'inferenza per coppia. Riordinare 50 candidati significa effettuare 50 chiamate al modello (poco costoso con Cohere/Voyage, ma più lento se il modello è ospitato autonomamente).

Per il reranking, consideri 50-200 candidati; valori superiori raramente valgono il costo.

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]
)

Reranking basato sulla diversità

A volte servono risultati diversificati, non solo quelli con il punteggio più alto, che potrebbero essere quasi duplicati. MMR (Maximal Marginal Relevance) bilancia il punteggio con la diversità:

from langchain.vectorstores import Chroma
results = store.max_marginal_relevance_search(query, k=5, fetch_k=20, lambda_mult=0.5)

Approccio in due fasi

Perché utilizzare bi-encoder + cross-encoder invece di uno solo?

Riepilogo

Il bi-encoder recupera 50 candidati e il cross-encoder li riordina fino a 5. In produzione utilizzi Cohere o Voyage; BGE OSS se ospita autonomamente il modello. Si ottiene un miglioramento significativo dell'accuratezza con un aumento moderato dei costi.

Domande Frequenti

La lezione «Riordinamento con cross-encoder» è gratuita?

Sì — il testo completo di «Riordinamento con cross-encoder» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.

Cosa imparerò in «Riordinamento con cross-encoder»?

Recuperi i primi 50 risultati con embedding economici, poi riordini i primi 5 con un cross-encoder più lento per ottenere maggiore precisione. Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare AI Agents?

Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Riordinamento con cross-encoder»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione AI Agents?

Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Riordinamento con cross-encoder
  2. HyDE: embedding di documenti ipotetici
  3. Retrieval multi-vettore (ColBERT)
  4. Valutazione RAG (RAGAS, Recall@K)
← Torna a AI Agents