Guadagni:
- Implementazione della ricerca ibrida che combina la selezione top-k e la ricerca semantica e per parole chiave
- Aumentare la precisione della prima ricerca con riclassificazione
- Rendere le domande difficili più ricercabili con tecniche come la trasformazione delle query e HyDE
Hai distrutto bene i documenti e li hai inseriti nel database vettoriale. Ora il vero lavoro: recuperare i pezzi giusti quando l'utente fa una domanda. Questo si chiama recupero ed è la spina dorsale della qualità RAG. Ricordare la frase "Qualità di recupero = qualità RAG"; Questa unità è esattamente l'arte di migliorare quella qualità. Tratteremo tecniche pratiche dalla selezione top-k alla ricerca ibrida, dal riclassificazione alla trasformazione delle query.
Top-k: Quanti pezzi porteremo?
L'impostazione più elementare: quanti pezzi (k) restituire dalla ricerca. Se porti meno (k=1) il rischio di perdere il pezzo corretto è alto; Se ne aggiungi troppo (k=20), si aggiungerà rumore al modello e il costo del token aumenterà.
Distinguere due concetti. Richiamo: la velocità con cui il pezzo corretto risulta tra quelli recuperati. Precisione: la velocità con cui ciò che viene recuperato è rilevante. L'aumento di k aumenta la memoria ma diminuisce la precisione. L’obiettivo è bilanciare i due.
top-k
Impatto
situazione adatta
1-3
Alta precisione, rischio di mancata riuscita
Domande semplici, con una sola risposta
4-8
Equilibrio; la maggior parte degli scenari
RAG generale aziendale
10-20
Maggiore richiamo, aumenta il rumore
Con riclassificazione (sotto)
Suggerimento: modello comune e potente: recupero ampio (k=20), quindi restringimento con riclassificazione (primi 4). In questo modo non ti perderai nulla e fornirai un contesto pulito al modello.
Ricerca ibrida: il potere di due ricerche
La ricerca semantica (vettoriale) cattura il significato ma non riesce a cogliere alcuni elementi: codice prodotto completo ("XR-4471"), abbreviazione rara, nome proprio, numero di versione. Per queste attività di corrispondenza esatta, la ricerca per parole chiave della vecchia scuola, in particolare il classico algoritmo chiamato BM25, è molto buona.
La ricerca ibrida combina le due cose: funzionano sia la ricerca semantica che quella per parole chiave, combinando i risultati. Pertanto, in una domanda come "Periodo di garanzia del
L'unione avviene solitamente con RRF (Reciprocal Rank Fusion): la traccia più alta in entrambe le liste viene avanti.
# Recupero ibrido (concettuale)sem = vector_search(question, k=20) # Meaningkey = bm25_search(question, k=20) # fullwordresult = rrf_merge(sem, key)[:8] # fonde i due, primi 8
Riclassificazione: secondo passaggio più intelligente
La prima chiamata può essere veloce ma scortese. La riclassificazione assegna un punteggio ai candidati restituiti dalla prima ricerca uno per uno con un modello più potente (di solito un cross-encoder, un modello che legge insieme la domanda e il passaggio e assegna un punteggio alla pertinenza) e sposta quelli più rilevanti in alto.
La logica è questa: la prima ricerca assegna un numero elevato di candidati per il richiamo (20 candidati), il re-ranker seleziona per precisione i migliori 4. Questo approccio in due fasi è molto più accurato di una ricerca in una sola fase. Costa un certo ritardo e un'elaborazione aggiuntiva; Il guadagno è un aumento significativo della qualità.
# Recupero in due fasi (concettuale)candidati = ricerca_ibrida(domanda, k=20) # ampio, punteggio rapido = reranker.score(domanda, candidati) # punteggio di pertinenza per ogni contesto candidato = rated.rank()[:4] # primi 4
Trasformare la domanda
A volte il problema non è nella ricerca, ma nella domanda stessa. Se l'utente chiede "che dire dei lavoratori remoti?" ', questo non può essere ricercato da solo (non è chiaro cosa sia per i lavoratori a distanza). Ecco le tecniche di trasformazione delle query:
- Riscrivi: utilizza la cronologia delle conversazioni per rendere la domanda autonoma: "Quali sono i lavoratori remoti che hanno diritto alle ferie annuali?"
- Multi-query: genera 3 diverse espressioni della stessa domanda, cerca con tutte, combina i risultati. Parole diverse trovano pezzi diversi.
- HyDE (Hypothetical Document Embeddings): prima stampa una "risposta possibile" al modello, quindi incorpora e cerca quella risposta immaginaria. La risposta immaginaria a volte si trova meglio perché è più vicina a parole al documento reale.
# Varianti (concettuali) multi-query = model.uret("Esprimi questa domanda in 3 modi diversi: " + domanda)tum_sonuc = []for v in varianti: all_sonuc += vettore_intermediate(v, k=6)contesto = singolare_e_ordine(tum_risultato)[:6]
Recupero debole / Recupero forte
Debole (stadio singolo, solo semantica, costante k=3):
risultato = vector_search(question, k=3)# Problema: manca il codice prodotto, non è possibile inserire la parte 3 corretta nelle domande difficili.
Potente (ibrido + widek + riclassificazione + multi-query se necessario):
candidati = hybrid_search(rewrite(question, past), k=20)context = reranker.score(question, candidate).first(4)# Vengono catturati sia la corrispondenza esatta che il significato; Va ai migliori 4 modelli.
Tre mini custodie
Caso 1: codice prodotto sfuggito. Una ricerca semantica pura su un team di supporto non è riuscita a trovare "RTX-9080" alla lettera nella domanda "Errore driver RTX-9080"; Stava portando altri prodotti con nomi simili. Quando è stata aggiunta la ricerca ibrida, si è verificata la corrispondenza esatta del codice e il tasso di restituzione degli articoli corretti è aumentato dal 58% al 92%.
Caso 2 – Differenza di riclassificazione. Un assistente legale stava lavorando con k=5 ma la voce corretta è 7-10 per la maggior parte del tempo. Sarebbe rimasto nei ranghi. Quando è stato introdotto k=20 + riclassificazione, la percentuale dell'articolo corretto tra i primi 3 è aumentata dal 61% al 94%; La latenza è aumentata di soli 300 ms: un compromesso accettabile.
Caso 3 – Domanda successiva senza contesto. In un assistente risorse umane, l'utente chiede "e i part-time?" Quando ho chiesto, il sistema ha portato parti irrilevanti. Riscrivendo la query (estraendo il contesto "ferie annuali" dal passato e aggiungendo "I dipendenti part-time hanno diritto alle ferie annuali"), il tasso di risposta corretta è aumentato dal 40% all'86%.
Errori comuni
- Basandosi esclusivamente sulla ricerca semantica: mancano il codice prodotto, l'abbreviazione, il nome proprio; Aggiungi ibrido.
- Mantenere k troppo piccolo: il pezzo corretto non può entrare nell'elenco; allargalo e restringilo con il riclassificazione.
- Non pensare mai alla riclassificazione: la prima ricerca è scortese; Il secondo passaggio intelligente migliora notevolmente la qualità.
- Ricerca di domande di follow-up così come sono: una domanda senza contesto cerca cose prive di significato; riscrivere.
- Aumentare ciecamente k (senza riclassificazione): il modello è pieno di rumore, la risposta è distorta e il costo aumenta.
Attenzione: ogni tecnica aggiunge costi e ritardi. Multi-query significa ricerca tripla, riclassificazione significa ulteriore chiamata del modello. Inizia prima con l'ibrido semplice + k ragionevole; Misura e aggiungi tecniche pesanti dove realmente necessario. Aggiungere senza misurare.
In sintesi
- Top-k è l'equilibrio tra richiamo e precisione; Generalmente 4-8 è un buon inizio.
- La ricerca ibrida combina la ricerca semantica con la ricerca per parole chiave (BM25); Recupera le corrispondenze esatte.
- La riclassificazione assegna un nuovo punteggio ai candidati dall'ampia ricerca iniziale con un modello robusto e seleziona i migliori.
- La trasformazione delle query (riscrittura, multi-query, HyDE) rende ricercabili le domande difficili e prive di contesto.
- Modello forte: recupero ampio → fusione con ibrido → ristretto con riclassificazione; ma aggiungi ogni tecnica misurandola.
Compito dell'applicazione
Preparare 6 domande difficili con i dati delle unità precedenti: almeno 2 che richiedono corrispondenze esatte (codice prodotto, abbreviazione, data), 2 semantiche (stesso argomento con parole diverse), 2 domande di follow-up senza contesto. (1) Per prima cosa pensa a ciascuna domanda come a una pura ricerca semantica e contrassegna manualmente quali parti verranno visualizzate. (2) Rivalutare le stesse domande aggiungendo l'ibrido e la riclassificazione. (3) Riscrivere le domande di follow-up senza contesto. Annotare in forma tabellare quale tecnica fa la differenza in quale tipo di domanda.
lista di controllo
- [ ] So che top-k è un bilanciamento di precisione di richiamo e un intervallo iniziale ragionevole.
- [ ] Posso spiegare perché la ricerca ibrida recupera corrispondenze esatte.
- [ ] Posso applicare la logica in due fasi di riclassificazione (ampio → intelligente ristretto).
- [ ] Riconosco la necessità di riscrivere le domande di follow-up senza contesto.
- [ ] Confermo che ho aggiunto tecniche pesanti misurando, non misurando.