BM25 e ricerca ibrida: combinare parole e vettori

Combina BM25 e ricerca vettoriale con RRF o punteggi pesati. Implementa la ricerca ibrida nel database esistente e misura il recall su query annotate.

Pubblicato il

BM25 e ricerca ibrida: combinare parole e vettori

Se il motore di ricerca capisce la domanda ma non trova il codice prodotto, aggiungi un ramo di recupero lessicale con BM25 prima di sostituire il modello di embedding. La ricerca ibrida combina 2 liste di candidati, una basata sulle parole chiave e l'altra sui vettori, e le fonde in un'unica classifica. Parti dalla reciprocal rank fusion, gestisci esplicitamente gli identificativi esatti e mantieni la modifica solo se un insieme di query annotate mostra un recall migliore, senza peggiorare le query che già funzionano.

Documentazione verificata il 24 ottobre 2026. Le indicazioni di implementazione che seguono si basano sulla documentazione attuale di Elasticsearch, Weaviate e Pinecone. Le impostazioni di valutazione sono una proposta di protocollo iniziale, non miglioramenti misurati né benchmark dei fornitori.

Che cos'è la ricerca ibrida?

La ricerca ibrida usa sia le parole effettivamente presenti nel testo sia il loro significato per decidere quali contenuti recuperare. Nell'architettura descritta qui, la ricerca per parole chiave produce una lista ordinata, la ricerca vettoriale ne produce un'altra e un metodo di fusione le combina. La spiegazione di Weaviate descrive entrambi i rami e il modo in cui vengono uniti.

Immagina due ricercatori alle prese con la stessa richiesta di assistenza. Uno cerca nell'indice i nomi e le stringhe di errore esatti. L'altro cerca idee correlate, comprese risposte formulate con parole diverse. Tu unisci le loro selezioni, invece di chiedere a uno solo di svolgere entrambi i compiti.

BM25 è una funzione di ranking lessicale che assegna un punteggio ai documenti in base ai termini della query che contengono. Sul punteggio incidono la frequenza dei termini e la lunghezza del documento: è un criterio più utile del semplice conteggio delle parole corrispondenti. Elasticsearch usa BM25 come misura predefinita di similarità testuale. La documentazione di Elastic sulla similarità descrive questi fattori.

La ricerca vettoriale confronta gli embedding, rappresentazioni numeriche dei contenuti, per trovare significati simili. Può collegare «Il sistema continua a disconnettermi» a un documento sulla scadenza delle sessioni, anche se le parole sono diverse. La nostra guida alla ricerca semantica spiega questo percorso di recupero.

Con una query di esempio come ERR_SESSION_EXPIRED after login, il ramo lessicale permette alla stringa di errore esatta di entrare nei risultati. Il ramo semantico può aggiungere indicazioni sulle sessioni di autenticazione e sul loro rinnovo. La fusione stabilisce l'ordine finale. L'esempio descrive il comportamento desiderato; non implica che un sistema non configurato produca una classifica specifica.

Una query si divide nei percorsi di recupero BM25 e vettoriale, che si ricongiungono nella fusione prima di produrre i risultati
Recupera i candidati con entrambi i rami, poi uniscili in un'unica classifica.

Anche nella ricerca ibrida, le corrispondenze esatte richiedono regole esplicite

Un ramo di ricerca per parole chiave non garantisce la corrispondenza esatta degli identificativi. L'analisi del testo, cioè il processo che trasforma le stringhe in token ricercabili, può modificare ciò che viene indicizzato. Nell'esempio della documentazione, l'analizzatore standard di Elastic separa una locuzione che contiene un trattino. Verifica come l'analizzatore configurato tratta i tuoi SKU e codici di errore. Documentazione dell'analizzatore standard.

Quando la grafia di un identificativo definisce l'elemento richiesto, conservalo in un campo dedicato alle corrispondenze esatte. Elastic documenta il campo keyword proprio per questo tipo di valore strutturato. Una query per lo SKU fittizio AX-BLUE non dovrebbe trasformarsi, senza segnalarlo, in una raccomandazione per AX-GREEN solo perché le descrizioni si somigliano. Documentazione del campo keyword.

Regola decisionale: se il comportamento previsto dal prodotto lo richiede, indirizza un identificativo riconosciuto e univoco a una ricerca esatta. Usa il ranking ibrido per le domande che associano un identificativo a un'esigenza più ampia, per esempio trovare indicazioni per risolvere un problema relativo a quell'articolo.

RRF o punteggi pesati: come unire i risultati di BM25 e vettori

Parti dalla reciprocal rank fusion se ti serve un riferimento iniziale che non richieda di calibrare scale di punteggio diverse. Valuta i punteggi pesati quando disponi di annotazioni con cui regolare l'equilibrio e hai un motivo per conservare le distanze tra i punteggi.

La reciprocal rank fusion usa le posizioni

La reciprocal rank fusion, o RRF, somma il contributo di ogni lista in cui compare un documento:

RRF(documento) = somma di 1 / (c + posizione) sulle liste recuperate.

Le posizioni si contano a partire dalla prima. Se un documento manca da una lista, quella lista non dà alcun contributo al suo punteggio. Gordon V. Cormack, Charles L. A. Clarke e Stefan Büttcher hanno introdotto RRF nel loro articolo presentato a SIGIR 2009. Nei loro esperimenti hanno fissato la costante a 60. L'articolo la chiama k; qui la chiamiamo c per non confonderla con il numero di risultati in recall@k.

RRF è pratica perché un punteggio BM25 alto e un punteggio vettoriale alto non devono avere lo stesso significato. Contano solo le posizioni. L'implementazione RRF di Pinecone esplicita sia il conteggio delle posizioni a partire da uno sia il comportamento per i documenti assenti.

C'è una conseguenza da verificare. In un esempio costruito a tavolino, il documento A è primo nella lista lessicale e assente da quella vettoriale. Il documento B è secondo in entrambe. Con c = 60, A ottiene 1/61; B ottiene 2/62. Vince B. È il risultato del nostro calcolo a partire dalla formula, non un benchmark di ricerca.

I punteggi pesati conservano le differenze di punteggio

La fusione con punteggi pesati combina i punteggi di rilevanza dopo averne reso confrontabili le scale. Una formulazione comune è:

punteggio = alpha × punteggio vettoriale normalizzato + (1 − alpha) × punteggio lessicale normalizzato.

Il peso alpha regola l'equilibrio. Un valore iniziale di 0.5 assegna coefficienti uguali; non dimostra che i due contributi siano altrettanto utili né che l'impostazione sia ottimale. Documenta insieme normalizzazione e pesi: modificare l'una o gli altri può cambiare la classifica.

Il linear retriever di Elasticsearch supporta una somma pesata con normalizzatori come minmax. La fusione per punteggio relativo di Weaviate conserva le distanze relative all'interno di ciascun insieme di risultati, mentre la fusione basata sulle posizioni le elimina.

Usa RRF come primo termine di confronto; mantieni la fusione pesata solo se le query tenute fuori dalla messa a punto ne confermano il valore. Non sommare i punteggi BM25 grezzi a quelli di similarità vettoriale dando per scontato che il risultato abbia senso. Registra anche quanti candidati recuperi: cambiare i risultati che entrano in una lista normalizzata può modificarne l'intervallo dei punteggi.

Quando la ricerca ibrida supera quella solo vettoriale

La ricerca ibrida aiuta quando il ramo lessicale recupera materiale rilevante che sfugge al ramo vettoriale e la fusione lo mantiene abbastanza in alto da renderlo utile. È una condizione che puoi verificare, non una promessa universale di accuratezza.

I casi più adatti a una prova sono:

  • Ricerca per l'assistenza: stringhe di errore esatte, nomi di funzioni e terminologia degli account insieme a descrizioni dei sintomi.
  • Ricerca nel catalogo: nomi di prodotti o SKU esatti insieme a esigenze come compatibilità o ricambi.
  • Ricerca nella conoscenza aziendale: nomi di progetti e abbreviazioni insieme a domande in linguaggio naturale.

La panoramica di Pinecone sulla ricerca ibrida indica esplicitamente codici prodotto, stringhe di errore e nomi come segnali lessicali, da affiancare al recupero con vettori densi per il significato.

Se devi soltanto cercare un identificativo, parti da una ricerca esatta affidabile. Se la ricerca vettoriale serve già bene il corpus e l'insieme di query, aspetta di avere evidenza di un problema di recupero prima di aggiungere un altro ramo.

Il limite pratico è la copertura dei candidati. La fusione può ordinare solo l'unione dei documenti recuperati dai suoi rami. Se nessuno dei due trova il passaggio rilevante, cambiare metodo di fusione non lo farà comparire. Se invece il passaggio è presente prima della fusione ma manca dai risultati finali, indaga il ranking e il taglio della lista.

Aggiungere la ricerca ibrida al sistema che usi già

Mantieni il sistema attuale se offre le funzionalità di recupero che ti servono. Cambiare insieme database e strategia di ricerca rende più difficile capire cosa abbia portato benefici.

La distinzione seguente riguarda il punto in cui avviene la combinazione, non è una classifica dei fornitori.

SistemaCombinazione documentataCosa configurare
ElasticsearchRRF nativa o fusione lineare normalizzataRetriever figli, finestra dei candidati, filtri e metodo di fusione
WeaviateFusione nativa di BM25F e vettoriProprietà da cercare, metodo di fusione e alpha esplicito
PineconeCombinazione nativa di vettori densi e sparsi; RRF tra BM25 e vettori densi nel clientScelta del modello di utilizzo dell'API, gestione degli ID e regolazione al livello corretto

Ricerca ibrida con Elasticsearch

Elasticsearch è un motore di ricerca che supporta il recupero testuale e vettoriale. Può inserire un retriever testuale standard e un retriever vettoriale knn all'interno di un retriever rrf. La documentazione ufficiale del retriever RRF descrive questa configurazione e la relativa finestra dei candidati.

Pagina di Elastic dedicata alla ricerca ibrida
Ricerca ibrida con Elasticsearch

In un indice esistente, conserva il testo ricercabile e il suo embedding sotto lo stesso ID documento. Interroga entrambi i rami sullo stesso insieme di contenuti ammessi, poi applica la fusione. Mantieni coerenti tra i rami le restrizioni relative a tenant, permessi e versioni del prodotto.

Puoi eseguire questa richiesta dopo aver impostato ES_URL ed ES_API_KEY. Presuppone un indice esistente chiamato docs, un campo testuale text, un campo di vettori densi embedding e un file query-vector.json con l'effettivo array di embedding della query. Genera l'array con lo stesso modello usato per i documenti indicizzati. Il comando richiede jq e curl.

Bash
jq -n --slurpfile v query-vector.json \
  --arg q 'ERR_SESSION_EXPIRED after login' \
  '{
    size: 10,
    retriever: {
      rrf: {
        retrievers: [
          {standard: {query: {match: {text: $q}}}},
          {knn: {
            field: "embedding",
            query_vector: $v[0],
            k: 50,
            num_candidates: 100
          }}
        ],
        rank_window_size: 50,
        rank_constant: 60
      }
    }
  }' > hybrid-request.json

curl --fail-with-body "$ES_URL/docs/_search" \
  -H "Authorization: ApiKey $ES_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-binary @hybrid-request.json

Queste impostazioni servono a illustrare una valutazione. size indica il numero di risultati finali; rank_window_size stabilisce quanti risultati di ogni retriever figlio possono partecipare alla fusione. Non copiare questo esempio privo di filtri in un'applicazione con controllo dei permessi senza aggiungere i vincoli che determinano quali contenuti sono ammessi. Elastic documenta un filter a livello del retriever padre che si applica ai retriever figli secondo le rispettive specifiche.

Il limite da tenere presente: una finestra troppo stretta in un retriever figlio può scartare proprio il risultato che speravi di recuperare con la ricerca ibrida. Confronta i candidati dei rami con i risultati finali prima di regolare la fusione. Se passi al linear retriever, configura la normalizzazione insieme ai pesi.

Ricerca ibrida con Weaviate

Weaviate, un database con recupero testuale e vettoriale, espone la ricerca ibrida tramite collection.query.hybrid. La componente lessicale è BM25F, la variante che supporta più campi. La documentazione delle query ibride tratta le proprietà ricercabili, la scelta del metodo di fusione e le spiegazioni dei punteggi.

Pagina di Weaviate dedicata alla ricerca ibrida
Ricerca ibrida con Weaviate

Imposta query_properties sui campi che offrono segnali lessicali utili, come titoli, testi degli errori e nomi dei prodotti. Fornisci il vettore della query se è l'applicazione a generare gli embedding, oppure usa il percorso di vettorizzazione configurato per la collezione. Quando confronti i metodi di fusione, imposta fusion_type esplicitamente e richiedi explain_score per capire perché un risultato ha cambiato posizione.

Imposta esplicitamente anche alpha: 0 seleziona la ricerca per parole chiave e 1 quella vettoriale. La documentazione attuale avverte che, se il parametro viene omesso, la ponderazione effettiva dipende dal client. relativeScoreFusion è il metodo di fusione predefinito; è disponibile anche rankedFusion. Documentazione della fusione in Weaviate.

Il limite da tenere presente: un peso non può rimediare a un campo ricercabile mancante o a un token identificativo alterato. Esamina il contributo lessicale prima di concludere che occorre sostituire il modello di embedding. Usa gli estremi dell'intervallo dei pesi, solo vettori e solo parole chiave, come riferimenti diagnostici; poi valuta l'impostazione combinata.

Ricerca ibrida con Pinecone

Pinecone, un database per il recupero delle informazioni, documenta diversi schemi di ricerca ibrida. Scegli lo schema prima di copiare un esempio: la combinazione di vettori densi e sparsi sul server e RRF nel client sono implementazioni diverse. Panoramica di Pinecone sulla ricerca ibrida.

Documentazione Pinecone che distingue tra filtraggio, fusione nel client e combinazione sul server
Documentazione della ricerca ibrida con Pinecone

Per BM25 insieme al recupero con vettori densi, il percorso basato sulla Documents API esegue una ricerca full-text e una ricerca con vettori densi, poi unisce gli ID documento ordinati usando RRF nell'applicazione. La guida RRF di Pinecone include questa implementazione nel client.

Per la combinazione nativa di vettori densi e sparsi, la Vectors API può memorizzare entrambe le rappresentazioni in ogni record e combinarle in una sola query. La guida all'indice singolo richiede vector_type="dense" e metric="dotproduct"; il client scala i vettori della query per stabilirne l'influenza relativa.

Un vettore sparso è una rappresentazione, non la prova che a produrlo sia stato BM25. Nelle note architetturali, specifica sempre il modello lessicale o la funzione di punteggio full-text.

Il limite da tenere presente: applicare un filtro per parole chiave e poi un ranking vettoriale denso non equivale a lasciare che entrambi i segnali influenzino la classifica. Un filtro elimina candidati: non può recuperare una corrispondenza basata su sinonimi che ha già escluso. Usa un filtro per imporre una condizione obbligatoria e la fusione quando entrambi i rami devono poter contribuire con un risultato.

Come funziona la ricerca ibrida nella RAG?

La ricerca ibrida interviene nella fase di recupero della retrieval-augmented generation, o RAG, in cui un'applicazione fornisce a un modello linguistico materiale recuperato dalle fonti prima che risponda. Non sostituisce la fase di generazione e non dimostra che la risposta sia corretta.

Mantieni coerente l'unità di recupero. Se il ramo lessicale restituisce documenti interi e quello vettoriale restituisce passaggi, decidi come mettere in corrispondenza i loro ID prima di unirli. Altrimenti più passaggi della stessa fonte possono occupare la selezione, facendo sparire altre fonti rilevanti. La nostra guida ai database vettoriali illustra le basi dell'archiviazione e del recupero.

La RAG agentica aggiunge decisioni su quale azione di recupero eseguire o sulla necessità di cercare di nuovo. Un retriever ibrido può essere una di queste azioni. Se un bot di assistenza non trova un codice di errore esatto, correggi e valuta quel retriever prima di aggiungere altra orchestrazione.

Durante il confronto tra metodi di recupero, mantieni invariati il generatore e il prompt. Se il gruppo di query con termini esatti migliora ma il recupero delle parafrasi resta debole, usa le stesse query annotate per confrontare i modelli di embedding. Modificare insieme embedding, suddivisione in chunk e fusione impedisce di attribuire il risultato a una causa precisa.

Misurare il recall@k prima e dopo

Usa un piccolo insieme di query annotate e confronta il recupero solo lessicale, solo vettoriale e ibrido rispetto alle stesse risposte. Una risposta generata scorrevole non è una metrica di recupero.

Recall@k = ID rilevanti recuperati nei primi k risultati ÷ tutti gli ID annotati come rilevanti per quella query. Calcola la media dei valori delle singole query per ottenere il macro recall@k. Se le annotazioni sono incomplete, descrivi il risultato come recall rispetto ai giudizi di rilevanza noti: non dimostra il recall su tutti gli elementi rilevanti del corpus.

  1. Prepara un piccolo insieme di query

    Parti da 60 query a cui il corpus consente di rispondere: 20 con termini esatti, 20 parafrasi e 20 query miste. È una suddivisione indicativa del carico di lavoro, non una garanzia sull'adeguatezza della dimensione del campione. Dove possibile, attingi a ricerche reali e includi nomi, SKU e stringhe di errore che oggi non danno i risultati attesi.

    Riserva metà di ogni gruppo allo sviluppo e metà a una verifica su dati tenuti da parte. Aggiungi separatamente 6 query volutamente senza risposta nel corpus; esaminane il comportamento, ma escludile dal recall perché il loro insieme di elementi rilevanti, usato al denominatore, è vuoto.

  2. Annota le unità di recupero rilevanti

    Per ogni query, registra l'ID, il gruppo di appartenenza e tutti gli ID di documenti o passaggi che puoi accertare essere rilevanti. Riunisci i candidati dei tre metodi di recupero, aggiungi le risposte note che nessuno ha trovato e valutale senza sapere quale metodo le abbia fornite. Usa ID stabili e mantieni sempre la stessa unità, documento o passaggio.

  3. Fissa le condizioni del confronto

    Usa la stessa istantanea del corpus, gli stessi permessi, lo stesso modello di embedding e la stessa suddivisione in chunk. Parti da un k finale di 10 e da 50 candidati per ogni ramo ibrido. Sono impostazioni iniziali da esplorare, non valori ottimali. Per il primo confronto, lascia disattivato il reranking.

    Esporta gli ID finali ordinati di ogni metodo. Salva anche le liste dei candidati lessicali e vettoriali prima della fusione, così da distinguere un problema di candidati mancanti da un problema di ranking.

  4. Regola i parametri, poi valuta le query tenute da parte

    Regola la fusione e il numero di candidati sulla metà destinata allo sviluppo. Scegli la configurazione, poi valuta una sola volta la metà tenuta da parte. Riporta i risultati di ogni gruppo oltre alla media complessiva ed esamina le singole query che sono peggiorate. Un piccolo miglioramento medio giustifica ulteriori indagini, non costituisce una prova statistica.

Il recupero vettoriale e quello ibrido vengono confrontati usando le stesse query, annotazioni di rilevanza e metriche di recall
Usa query e annotazioni di rilevanza identiche in entrambe le esecuzioni; l'illustrazione non riporta un esito.

Eseguire in locale il calcolo del recall

Salva il codice seguente come evaluate_recall.py. Usa solo la libreria standard di Python 3. qrels.jsonl contiene un oggetto JSON per query, con i campi qid, slice e relevant. Ogni file dei risultati associa l'ID di una query alla lista ordinata degli ID restituiti.

Per esempio, un record di annotazione potrebbe essere {"qid":"q-exact","slice":"exact","relevant":["guide-login"]}. Un file dei risultati potrebbe contenere {"q-exact":["guide-reset","guide-login"]}. Sono esempi del formato, non risultati di ricerca di un sistema sottoposto a test. Includi ogni query annotata in tutti i file dei risultati, usando una lista vuota quando il recupero non ha restituito nulla.

Python
import json
import sys
from collections import defaultdict
from statistics import mean

qrels_path, bm25_path, vector_path, hybrid_path, cutoff = sys.argv[1:]
k = int(cutoff)
if k < 1:
    raise ValueError("k must be positive")

with open(qrels_path, encoding="utf-8") as f:
    labels = [json.loads(line) for line in f if line.strip()]
if not labels or len({r["qid"] for r in labels}) != len(labels):
    raise ValueError("Labels must be nonempty with unique query IDs")

runs = {}
for name, path in (("bm25", bm25_path), ("vector", vector_path),
                   ("hybrid", hybrid_path)):
    with open(path, encoding="utf-8") as f:
        runs[name] = json.load(f)
    missing = {r["qid"] for r in labels} - runs[name].keys()
    if missing:
        raise ValueError(f"{name} is missing query IDs: {sorted(missing)}")

groups = defaultdict(list)
skipped = 0
for row in labels:
    relevant = set(row["relevant"])
    if not relevant:
        skipped += 1
        continue
    scores = {}
    for name, run in runs.items():
        unique_ids = list(dict.fromkeys(run[row["qid"]]))
        scores[name] = len(relevant & set(unique_ids[:k])) / len(relevant)
    groups["overall"].append(scores)
    groups["slice:" + row["slice"]].append(scores)

if not groups:
    raise ValueError("No answerable queries to score")
for group, rows in sorted(groups.items()):
    values = {name: mean(r[name] for r in rows) for name in runs}
    delta = values["hybrid"] - values["vector"]
    report = " ".join(f"{name}={v:.3f}" for name, v in values.items())
    print(f"{group} n={len(rows)} recall@{k} {report} delta={delta:+.3f}")
print(f"Excluded no-answer queries: {skipped}")

Eseguilo sulle annotazioni e sulle esportazioni delle query tenute da parte:

Bash
python3 evaluate_recall.py qrels.jsonl bm25.json vector.json hybrid.json 10

Lo script elimina gli ID duplicati prima di applicare il limite dei risultati. Adotta la stessa regola di deduplicazione nell'applicazione. Mostra la variazione della ricerca ibrida rispetto a quella vettoriale e riporta anche il riferimento lessicale, così un buon sistema basato sulle parole chiave non scompare dal confronto.

Porta la modifica in produzione quando i gruppi di query rilevanti migliorano e le regressioni sono accettabili rispetto ai requisiti del prodotto. Se i candidati migliorano ma il recall finale no, modifica la fusione o il limite dei risultati. Se il recall finale migliora, valuta separatamente l'ordine dei risultati, la correttezza delle risposte generate e la latenza complessiva. Il recall non misura nessuno di questi aspetti.

Oltre le promesse: cosa fare adesso

«La ricerca ibrida offre il meglio di entrambi i mondi» nasconde la decisione ingegneristica. Può ampliare la copertura utile, ma dà anche a un altro ramo di recupero la possibilità di influire sulla lista finale. RRF può far scendere una corrispondenza esatta; la fusione pesata può favorire una scala di punteggio o una normalizzazione che si comporta diversamente dalle altre; nessuna delle due rimedia all'assenza dei contenuti di partenza.

Chi sviluppa dovrebbe intervenire subito quando l'analisi mostra che documenti rilevanti con i termini esatti sono assenti dai candidati vettoriali. Aggiungi il ramo lessicale, mantieni coerenti l'identità dei documenti e i permessi ed esegui il confronto sulle query annotate.

Chi gestisce il sistema dovrebbe rimandare il rilascio quando il problema attuale riguarda contenuti obsoleti, permessi mancanti o assenza di annotazioni di rilevanza. Risolvi prima questi prerequisiti, poi confronta le strategie di recupero.

Per i team che dispongono di una ricerca affidabile per identificativo non cambia nulla finché non serve una ricerca più ampia. Mantieni il percorso di ricerca esatta che funziona e valuta separatamente l'approccio ibrido per le domande in linguaggio naturale.

Da fare lunedì: raccogli le ricerche che non funzionano, annota le fonti attese ed esegui il retriever vettoriale esistente accanto a un riferimento lessicale. Aggiungi la fusione dopo aver osservato il contributo di ogni ramo. Mantieni la configurazione che dimostra il proprio valore sulle query tenute da parte.

Domande frequenti

BM25 è una forma di ricerca ibrida?

No. BM25 è una funzione di ranking lessicale. Combinare i suoi risultati con quelli di un ramo di recupero vettoriale è una forma di ricerca ibrida.

ChatGPT usa la ricerca semantica?

Una risposta generata, da sola, non permette di stabilire quale algoritmo di recupero sia stato usato. Se costruisci un sistema attorno a un modello linguistico, esamina il percorso di recupero configurato invece di presumere che usi BM25, vettori o RRF.

Che cos'è la ricerca semantica? Un esempio concreto

Una query come «Il sistema continua a disconnettermi» può trovare indicazioni sulla scadenza delle sessioni anche se usa parole diverse. È un recupero basato sul significato; una stringa di errore esatta può comunque richiedere una corrispondenza lessicale.

Qual è un esempio di ricerca ibrida?

Per ERR_SESSION_EXPIRED after login, recupera le corrispondenze della stringa di errore esatta con il ramo lessicale e le indicazioni correlate sulle sessioni con quello vettoriale. Unisci i candidati, poi verifica le fonti attese rispetto alle annotazioni di rilevanza.

Qual è la differenza principale tra ricerca ibrida e ricerca vettoriale?

La ricerca solo vettoriale recupera i contenuti in base alla similarità degli embedding. L'approccio ibrido descritto qui usa anche un ramo di ricerca per parole chiave e combina i segnali in un'unica lista di risultati.

Ricerca ibrida e ricerca semantica sono la stessa cosa?

No. Il recupero semantico può essere una componente della ricerca ibrida. Il termine ibrido descrive la combinazione dei segnali di recupero, senza indicare un unico algoritmo di fusione.

Google usa la ricerca semantica?

Google Search usa la comprensione semantica tra i propri sistemi di ranking. Google documenta BERT e il neural matching nella guida ai sistemi di ranking. Questo non dimostra che la sua architettura complessiva corrisponda al modello BM25 più vettori descritto qui.

Che differenza c'è tra RAG e ricerca semantica?

La RAG recupera materiale dalle fonti e lo usa durante la generazione della risposta. La ricerca semantica è un approccio al recupero che può fornire quel materiale. Un'applicazione RAG può usare anche il recupero per parole chiave o ibrido.

Che cos'è la ricerca ibrida e come funziona?

Nell'architettura di questa guida, esegui il recupero lessicale e vettoriale sui contenuti ammessi, unisci i candidati tramite ID stabili e ordinali con RRF o con un metodo a punteggi pesati scelto consapevolmente. Prima del rilascio, valuta i risultati finali rispetto alle query annotate.

Ricevi guide pratiche allo sviluppo nella newsletter.

Pubblicato
Categoria
Build
Mixture of experts: cosa cambia tra parametri attivi e totali

Mixture of experts: cosa cambia tra parametri attivi e totali

Come funziona il mixture of experts: parametri totali e attivi, memoria e latenza. I casi Kimi, Qwen e Mixtral per scegliere tra API e self-hosting.24 ott 2026Build
LLM as a judge e test: il ciclo pratico dell’eval-driven development

LLM as a judge e test: il ciclo pratico dell’eval-driven development

Dai casi reali al rilascio: combina test e LLM as a judge, misura la versione iniziale e verifica ogni modifica con un esempio pratico basato su 20 casi.24 ott 2026Build
Benchmark LLM: come misurare la velocità in token al secondo

Benchmark LLM: come misurare la velocità in token al secondo

Come leggere un benchmark LLM: token al secondo, attesa del primo token e latenza. Misura il flusso reale e scegli il modello in base ai tempi della tua app.24 ott 2026Build
LLMOps in produzione: i controlli da introdurre per primi

LLMOps in produzione: i controlli da introdurre per primi

Che cos'è LLMOps e come cambia rispetto a MLOps: valutazioni, tracing, rilasci e rollback per gestire in sicurezza una funzionalità AI in produzione.23 ott 2026Build
JSON Schema: output strutturati con OpenAI, Claude e Gemini

JSON Schema: output strutturati con OpenAI, Claude e Gemini

JSON Schema e output strutturati con OpenAI, Claude e Gemini: limiti, estrazione di fatture, validazione, nuovi tentativi e gestione dello streaming.23 ott 2026Build
Railway alternatives: dove migrare app e database nel 2026

Railway alternatives: dove migrare app e database nel 2026

Confronta le alternative a Railway per app, Postgres, worker e cron: prezzi, gestione dei segreti e una checklist per preparare e provare la migrazione.22 ott 2026Build
Gumloop: recensione, prezzi e limiti nell’uso quotidiano

Gumloop: recensione, prezzi e limiti nell’uso quotidiano

Gumloop per ricerca, documenti e risposte ai lead: prezzi, approvazioni e limiti operativi. Scopri quando sceglierlo e quando preferire n8n o Zapier.22 ott 2026Build
Dati sintetici per LLM: come generarli e validarli

Dati sintetici per LLM: come generarli e validarli

Come generare dati sintetici per valutare gli LLM, fare fine-tuning e testare il software: esempi, filtri, deduplicazione, privacy e condizioni d’uso.22 ott 2026Build
Newsletter

Una lettera, ogni domenica.Sistemi che funzionano, non hot take.

Settimanale. Niente spam. Si cancella quando vuole.