hybrid søgning
Hybrid søgning kombinerer nøgleordsbaseret (f.eks. BM25) og vektorbaseret (f.eks. embedding-cosine-lighed) søgning for at forbedre relevans og dækning i informationsgenfinding.
Kort fortalt
Hybrid søgning er en metode, der slår to slags søgning sammen – den traditionelle ord-matchning og den moderne betydnings-matching – for at give bedre resultater.
- Kategori
- teknik
- Niveau
- øvet
Betydninger
1- 1
En søgeteknik, der integrerer både nøgleordsbaseret (sparsomme vektorer som BM25) og vektorbaseret (tætte vektorer fra neurale embeddings) genfinding for at udnytte styrkerne ved begge tilgange.
- Systemet anvender hybrid søgning ved først at hente dokumenter med BM25 og derefter re-rangere dem med cosine-lighed mellem embeddings.
- En hybrid søgningsstrategi forbedrer genkaldelsen for sjældne termer samtidig med at semantisk relevans bevares.
Hvornår bruges det
Hybrid søgning bruges ofte i RAG-systemer og informationsgenfinding, hvor man først henter kandidater via keywords og derefter rangerer med vektorlighed, eller omvendt. Det anvendes også i søgemaskiner og virksomhedsdatabaser for at balancere præcision og genkaldelse.
Kodeeksempel
import numpy as np
from rank_bm25 import BM25Okapi
from sklearn.metrics.pairwise import cosine_similarity
# Dummy data
docs = ['cat sat on mat', 'dog sat on log']
queries = 'cat on mat'
# BM25
tokenized_docs = [d.split() for d in docs]
bm25 = BM25Okapi(tokenized_docs)
bm25_scores = bm25.get_scores(queries.split())
# Vector similarity (dummy embeddings)
embeddings = np.random.rand(2, 128) # doc embeddings
query_embedding = np.random.rand(1, 128)
vec_scores = cosine_similarity(query_embedding, embeddings)[0]
# Hybrid: weighted sum
hybrid_scores = 0.5 * bm25_scores + 0.5 * vec_scores
best_idx = np.argmax(hybrid_scores)
print(f'Best doc: {docs[best_idx]}')Python-kode der demonstrerer hybrid søgning med BM25 og cosine-lighed, hvor scores vægtes og kombineres.
Oprindelse
Ordet 'hybrid' kommer fra latin hybrida, der betyder 'blanding', og 'søgning' stammer fra oldnordisk sœkja, 'at søge'. Termen refererer til kombination af to forskellige søgeteknikker.
Kilder
2- Khandelwal et al. (2020) - Generalization through Memorization
- Lewis et al. (2020) - Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks