Dense Passage Retrieval
En teknik inden for informationssøgning, der repræsenterer tekstpassager som tætte vektorer (embeddings) og finder relevante passager via vektorlighedssøgning.
Kort fortalt
Dense passage retrieval er en metode til at finde relevante tekststykker i en stor mængde tekster ved at omdanne dem til matematiske vektorer og sammenligne dem med en forespørgselsvektor.
- Kategori
- teknik
- Niveau
- øvet
- Udtale
- /dɛns ˈpæsɪdʒ rɪˈtriːvəl/
Betydninger
2- 1
En metode inden for informationssøgning, hvor passager og forespørgsler kortlægges til tætte vektorrepræsentationer, og relevans bestemmes ved vektorlighed.
- Dense passage retrieval gør det muligt at søge efter mening frem for nøjagtige ordmatch.
- I RAG-pipelinen anvendes dense passage retrieval til at hente de mest relevante kontekststykker til en forespørgsel.
- 2
Specifikt den arkitektur og træningsmetode, der er foreslået i papiret 'Dense Passage Retrieval for Open-Domain Question Answering' (Karpukhin et al., 2020), som bruger to BERT-encodere til at generere embeddings.
- DPR-modellen består af en forespørgselsencoder og en passageencoder, der trænes med negativ mining. — Karpukhin et al., 2020
Hvornår bruges det
Dense passage retrieval bruges i moderne spørgsmålssvar-systemer og RAG (Retrieval-Augmented Generation) til hurtigt at finde de mest relevante dokumenter eller passager fra en stor database. Det erstatter traditionelle søgemetoder som TF-IDF eller BM25, der er baseret på nøjagtig ordmatch.
Formel
similarity(q, p) = cos(E_Q(q), E_P(p))Kodeeksempel
from sentence_transformers import SentenceTransformer, util
model = SentenceTransformer('sentence-transformers/msmarco-distilbert-base-v4')
passages = ["Paris is the capital of France.", "Berlin is the capital of Germany."]
query = "What is the capital of France?"
# Encode
passage_embeddings = model.encode(passages, convert_to_tensor=True)
query_embedding = model.encode(query, convert_to_tensor=True)
# Compute similarity
scores = util.dot_score(query_embedding, passage_embeddings)
best_idx = scores.argmax().item()
print(f"Best passage: {passages[best_idx]}")Eksempel på dense passage retrieval med SentenceTransformers: passager og forespørgsel indkodes til embeddings, og den mest lignende passage findes via dot product.
Oprindelse
Udtrykket kombinerer 'dense' (tæt, modsat sparse) for vektorer med fyldte dimensioner, og 'passage retrieval', som er søgning efter tekststykker. Begrebet blev fremtrædende med introduktionen af DPR-modellen (Karpukhin et al., 2020).