Omrangering med cross-encodere
Hent de 50 bedste med billige embeddings, og omrangér derefter de 5 bedste med en langsommere cross-encoder for højere præcision.
Omrangering med cross-encodere er en gratis AI-agenter-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i AI-agenter, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. AI-agenter-kurset indeholder 4 lektioner i alt.
Dele af denne lektion er endnu ikke oversat og vises på engelsk.
Hvorfor omrangere?
Embedding-lighed er et hurtigt, groft første trin. Det trækker ofte blokke ind, der deler NØGLEORD med forespørgslen, men som faktisk ikke er relevante for SPØRGSMÅLET.
En omrangerer tager par af (forespørgsel, blok) og beregner en langt mere præcis relevansscore.
Bi-encoder kontra cross-encoder
To arkitekturer til tekstlighed:
- Bi-encoder — laver embeddings af forespørgsel og blok separat og beregner cosinus. Hurtig (vektorisér én gang, genbrug), men mindre præcis.
- Cross-encoder — kører (forespørgsel, blok) samlet gennem modellen. Langsom (pr. par), men langt mere præcis.
Hentning i to trin
Mønstret, der kombinerer dem:
- Bi-encoder henter hurtigt de 50 bedste kandidater
- Cross-encoder omrangerer dem til de 5 bedste
- De 5 bedste sendes ind i LLM-prompten
Du får bi-encoderens hastighed og cross-encoderens præcision.
Brug af Cohere Rerank
Den nemmeste cross-encoder til produktion:
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])Open source-omrangerere
BGE Reranker er den førende open source-mulighed:
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
)Når omrangering hjælper
- Lange kandidatlister (50-200)
- Nuancerede forskelle i relevans
- Forespørgsler med benægtelse eller sammenligning
- Flersprogede tilfælde
Når det ikke hjælper
- Allerede snævre kandidatresultater (de 5 bedste fra bi-encoder)
- Forespørgsler, hvor svartid er kritisk, men konsekvenserne er små
Omkostningsafvejning
Cross-encodere kører en inferens pr. par. Omrangering af 50 kandidater er 50 modelkald (billigt med Cohere/Voyage, langsommere ved selvhosting).
Afsæt 50-200 kandidater til omrangering; flere kan sjældent betale sig.
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]
)Omrangering med fokus på mangfoldighed
Nogle gange vil du have mangfoldige resultater, ikke kun dem med den højeste score (som kan være næsten identiske). MMR (Maximal Marginal Relevance) afvejer score mod mangfoldighed:
from langchain.vectorstores import Chroma
results = store.max_marginal_relevance_search(query, k=5, fetch_k=20, lambda_mult=0.5)Mønster i to trin
Hvorfor bruge bi-encoder + cross-encoder i stedet for kun én?
Opsummering
Bi-encoder henter 50, og cross-encoder omrangerer dem til 5. Brug Cohere eller Voyage i produktion; BGE OSS ved selvhosting. En markant forbedring af nøjagtigheden til moderate ekstra omkostninger.
Lær AI-agenter med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 60
- Lektioner
- 239
Ofte stillede spørgsmål
Er lektionen “Omrangering med cross-encodere” gratis?
Ja — hele teksten til “Omrangering med cross-encodere” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af AI-agenter-kurset, skal du opgradere til CoddyKit PRO. AI-agenter-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Omrangering med cross-encodere”?
Hent de 50 bedste med billige embeddings, og omrangér derefter de 5 bedste med en langsommere cross-encoder for højere præcision. Du øver dig i AI-agenter med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på AI-agenter?
Der kræves ingen tidligere erfaring. AI-agenter på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.
Hvor lang tid tager lektionen “Omrangering med cross-encodere”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne AI-agenter-lektion?
Ja. Alle AI-agenter-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Omrangering med cross-encodere
- HyDE: Hypotetiske dokumentembeddings
- Multivektorsøgning (ColBERT)
- RAG-evaluering (RAGAS, Recall@K)