Bi-Encoder

En Bi-Encoder er en neural netværksarkitektur, der bruger to separate enkodere til at kortlægge to inputstrenge (f.eks. en forespørgsel og et dokument) hver for sig til vektorer, hvorefter ligheden måles.

Kort fortalt

Kort fortalt: En Bi-Encoder behandler to tekster hver for sig og sammenligner deres betydning ved at måle afstanden mellem dem.

Kategori
arkitektur
Niveau
øvet

Betydninger

1
  1. 1

    En encoder-arkitektur med to separate enkodere, der uafhængigt af hinanden omdanner to input til vektorrepræsentationer, som derefter sammenlignes via en lighedsfunktion som cosinus-lighed.

    • I en Bi-Encoder-model beregnes forespørgslen og dokumentet hver for sig, hvilket muliggør effektiv indeksering.
    • Bi-Encoders er særligt velegnede til retrieval-opgaver, hvor hurtighed er afgørende.

Hvornår bruges det

Bi-Encoders bruges typisk i informationssøgning og semantisk søgning, hvor en stor mængde dokumenter skal matches mod en forespørgsel. De muliggør præ-beregning af dokumentvektorer, hvilket gør søgningen hurtigere end Cross-Encoders, men ofte med lavere præcision.

Kodeeksempel

from sentence_transformers import SentenceTransformer, util

model = SentenceTransformer('all-MiniLM-L6-v2')
query_embedding = model.encode("Hvad er en bi-encoder?")
doc_embeddings = model.encode(["Dokument 1", "Dokument 2"])
scores = util.cos_sim(query_embedding, doc_embeddings)

Eksempel på brug af en Bi-Encoder-model med SentenceTransformers til at kode en forespørgsel og dokumenter og beregne cosine-lighed.

Oprindelse

Begrebet stammer fra deep learning og NLP, hvor 'bi-' angiver to separate enkodere, i modsætning til en fælles encoder.

Kilder

1
  • Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks (2019)