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