Un modello di ricerca ottimizzato può fornire risultati di qualità migliore rispetto alla ricerca di base un modello di machine learning.
L'ottimizzazione della ricerca è particolarmente utile se hai domande su società o settori specifici che sono meno ben affrontate dagli LLM generali. Può essere utilizzato per addestrare ulteriormente il modello di ricerca.
Limitazioni
La regolazione della ricerca può essere applicata solo ai datastore non strutturati.
Informazioni sui dati di addestramento
Per ottimizzare un modello di ricerca, devi iniziare raccogliendo i dati di addestramento.
I dati di addestramento devono contenere le query che prevedi che gli utenti finali e snippet di testo lunghi da 250 a 500 parole, contenenti le informazioni pertinenti necessarie per rispondere alle domande. Una query può essere associata a più snippet, purché ciascuno contenga informazioni che rispondano alla query.
I dati di addestramento devono contenere anche snippet di testo non accoppiati alle query, ma simili alle risposte per stile e lunghezza. Questi snippet senza query associate forniscono parole chiave escluse casuali per ottimizzare il modello. Google consiglia di fornire almeno 10.000 di questi snippet.
Ecco alcuni termini per descrivere i dati di addestramento che dovrai fornire:
Query di addestramento: query che prevedi verranno poste dagli utenti finali. Marca concentrati su query con una terminologia specifica a livello di dominio o azienda.
Fornisci almeno 100.
Segmenti estrattivi: snippet (in genere più paragrafi) deve essere tratto parola per parola documenti nel datastore. Tutti i documenti insieme nel datastore sono chiamate "il corpus".
Devi fornire due tipi di segmenti estratti:
Segmenti che contengono informazioni pertinenti necessarie per rispondere alle query di addestramento. Si tratta di segmenti che hanno una corrispondenza positiva con le query.
Segmenti non associati a query di addestramento. Questi segmenti vengono utilizzati come esempi negativi casuali nell'ottimizzazione del modello.
Una o due frasi non sono sufficientemente lunghe per essere un segmento estrattivo; il deve contenere un contesto sufficiente per l'addestramento. Ad esempio, in risposta a una query come "chi ha fondato Google", un breve estratto come "Larry Page" non è sufficiente. Per esempi di segmenti sufficientemente lunghi, consulta la tabella di esempi riportata di seguito.
Fornisci almeno un segmento estrattivo per query e almeno 10.000 segmenti estrattivi aggiuntivi.
Scori di pertinenza: gli score di pertinenza sono numeri interi non negativi che stimano quanto sia pertinente il segmento di estrazione per la query. Devi fornire un per ogni query e coppia di segmenti estrattivi. Un punteggio pari a 0 indica che il segmento di estrazione non è pertinente alla query. Un punteggio superiore a zero indica una certa pertinenza. Per un punteggio semplice, Google consiglia di assegnare un valore di 1 a tutti i segmenti pertinenti e 0 a quelli non pertinenti. In alternativa, se vuoi assegnare un ranking alla pertinenza, puoi assegnare punteggi di pertinenza da 0 a 10 (ad esempio), con 10 per i segmenti più pertinenti e 0 per i segmenti che non sono affatto pertinenti.
Fornisci almeno 100 punteggi pertinenti e, facoltativamente, altri punteggi non pertinenti.
Esempi di coppie di segmenti di query e di estrazione
La tabella seguente fornisce alcuni esempi di coppie di query e segmenti estratti. Questi esempi generali sono stati presi da Wikipedia. Tuttavia, per un'ottimizzazione utile, ti consigliamo di fornire documenti da set di dati di proprietà contenenti informazioni specifiche per la tua attività e che sono meno facili trovati sul web.
L'ultima coppia in questa tabella è un esempio di coppia con punteggio pari a zero, in cui la risposta non è pertinente alla query.
Query di addestramento | Segmento estrattivo | Punteggio |
---|---|---|
Chi ha fondato Google? | Google è stata fondata il 4 settembre 1998 dagli informatici americani Larry Page e Sergey Brin quando erano studenti di dottorato presso la Stanford University in California. Insieme possiedono circa il 14% delle azioni quotate in borsa e controllano il 56% del potere di voto degli azionisti tramite azioni con diritto di voto maggiorato. La è diventata pubblica tramite un'offerta pubblica iniziale (IPO) nel 2004. Nel 2015, Google è stata riorganizzata come una filiale interamente controllata da Alphabet Inc. Google La più grande società controllata di Alphabet ed è una holding di internet di Alphabet proprietà e interessi. Sundar Pichai è stato nominato CEO di Google a ottobre 24, 2015, in sostituzione di Larry Page, che è diventato CEO di Alphabet. Il 3 dicembre 2019, Pichai è diventato anche CEO di Alphabet. [...] Nell'elenco dei brand più di valore, Google è al secondo posto secondo Forbes e al quarto posto secondo Interbrand. | 1 |
dove viene pompato il sangue dopo che esce dal ventricolo destro? | Il sangue ossigenato esce dai polmoni attraverso le vene polmonari, che lo riportano alla parte sinistra del cuore, completando il ciclo polmonare. Questo sangue poi entra nell'atrio sinistro, che lo pompa attraverso la valvola mitrale nel ventricolo sinistro. Dal ventricolo sinistro, il sangue passa attraverso la valvola aortica nell'aorta. Il sangue viene quindi distribuito all'organismo attraverso la circolazione sistemica prima di rientrare nella zona polmonare della circolazione. Arterie Articolo principale: Arteria polmonare Dal ventricolo destro, il sangue viene pompato attraverso la valvola semilunare polmonare nell'arteria polmonare principale sinistra e destra (una per ogni polmone), che si ramificano in arteriole polmonari più piccole che si diffondono nei polmoni. [...] Lo shunt cardiaco è una connessione non naturale tra le parti del cuore che porta a circolazione sanguigna che bypassa i polmoni. | 1 |
dove si trova la hall of fame del bowling? | La World Bowling Writers ( WBW ) International Bowling Hall of Fame è stata fondata nel 1993 e si trova nell'International Bowling Museum and Hall of Fame , nell'International Bowling Campus di Arlington , Texas. Storia L'International Bowling Museum e la Hall of Fame si trovavano a 11 Stadium Plaza, St. Louis, Missouri, USA, e condividi lo stesso edificio con St. Louis Cardinals Hall of Fame Museum, fino all'8 novembre 2008. Si è trasferito in ad Arlington e ha riaperto all'inizio del 2010. Nel 2012, la WBW è stata fusa con la International Bowling Media Association. Dopo la fusione, la WBW Hall of Gli candidati sono entrati a far parte della Luby Hall of Fame dell'IBMA. ufficiali del World Bowling Writers, che costituiva il Consiglio di amministrazione della Hall.][...] vengono eletti l'uomo e la donna che ricevono il maggior numero di voti. | 1 |
perché il cielo è blu? | Un saluto da "Hello, World!" di solito è un semplice programma informatico che visualizza (o mostra) sullo schermo (spesso la console) un messaggio simile a "Hello, World!" e ignorare al tempo stesso qualsiasi input utente. Una piccola porzione di codice linguaggi di programmazione per uso generico, questo programma viene utilizzato per illustrare un la sintassi di base del linguaggio. Un programma "Hello, World!" è spesso il primo scritto da un utente che sta imparando un nuovo linguaggio di programmazione, ma può essere utilizzato anche come controllo per verificare che il software del computer destinato a compilare o eseguire il codice sorgente sia installato correttamente e che l'operatore sappia come utilizzarlo. [...] La versione in linguaggio C è stata preceduta da un tutorial del 1972 di Kernighan. Introduzione al linguaggio B, dove la prima versione nota del programma è disponibile in un esempio utilizzato per illustrare le variabili esterne | 0 |
Informazioni sui test
Dopo l'addestramento, la ricerca ottimizzata viene testata per determinare se l'ottimizzazione ha migliorato che consentono di analizzare i dati e visualizzare i risultati. Puoi fornire esplicitamente le query che vuoi testare. Se non forniscono query di prova, Vertex AI Search utilizza il 20% di addestramento come query di prova.
File di addestramento
I dati di addestramento devono essere caricati in tre (facoltativamente quattro) file:
Un file corpus contenente i segmenti estrattivi
Un file di query contenente solo le query
Un file di etichette per l'addestramento che collega le query ai segmenti e contiene i punteggi di pertinenza
(Facoltativo) Un file delle etichette di test simile alle etichette di addestramento ma viene utilizzato per valutare il modello ottimizzato invece di addestrarlo
I tre file di addestramento (file del corpo, file di query e file delle etichette di addestramento) e
il file (facoltativo) delle etichette di test deve trovarsi in Cloud Storage. I percorsi dei
sono definiti dai campi della chiamata trainCustomMethod
.
File del corpus
Il file del corpus contiene segmenti estratti: segmenti che contengono informazioni per rispondere alle query nel file di query e molti altri segmenti da utilizzare come negativi casuali durante la messa a punto del modello. Dovresti avere almeno 100 segmenti che contengono risposte alla query. le query possono essere risposte da più segmenti. Inoltre,dovresti avere almeno 10.000 campi segmenti.
Se i documenti nel datastore contengono meno di 500 parole, puoi utilizzare interi documenti come segmenti. In caso contrario, crea segmenti casuali in modo programmatico di 250-500 parole dai documenti nel tuo datastore e aggiungile alla file corpus.
Il file del corpus è un file JSONL (linee JSON) in cui ogni riga include i campi.
_id
e text
con valori stringa.
Ad esempio:
{"_id": "doc1", "text": "Google was founded on September 4, 1998, by American computer scientists Larry Page and Sergey Brin while they were PhD students at Stanford University in California. Together they own about 14% of its publicly listed shares and control 56% of its stockholder voting power through super-voting stock. The company went public via an initial public offering (IPO) in 2004. In 2015, Google was reorganized as a wholly owned subsidiary of Alphabet Inc. Google is Alphabet's largest subsidiary and is a holding company for Alphabet's internet properties and interests. Sundar Pichai was appointed CEO of Google on October 24, 2015, replacing Larry Page, who became the CEO of Alphabet. On December 3, 2019, Pichai also became the CEO of Alphabet. [...] On the list of most valuable brands, Google is 105 ranked second by Forbes and fourth by Interbrand."}
{"_id": "doc2", "text": "Oxygenated blood leaves the lungs through pulmonary veins, which return it to the left part of the heart, completing the pulmonary cycle. This blood then enters the left atrium, which pumps it through the mitral valve into the left ventricle. From the left ventricle, the blood passes through the aortic valve to the aorta. The blood is then distributed to the body through the systemic circulation before returning again to the pulmonary circulation. Arteries Main article: Pulmonary artery From the right ventricle, blood is pumped through the semilunar pulmonary valve into the left and right main pulmonary artery (one for each lung), which branch into smaller pulmonary arteries that spread throughout the lungs. [...] Cardiac shunt is an unnatural connection between parts of the heart that leads to blood flow that bypasses the lungs."}
{"_id": "doc3", "text": "The World Bowling Writers ( WBW ) International Bowling Hall of Fame was established in 1993 and is located in the International Bowling Museum and Hall of Fame , on the International Bowling Campus in Arlington , Texas. History The International Bowling Museum and Hall of Fame was located at 11 Stadium Plaza, St. Louis, Missouri, USA, and shared the same building with the St. Louis Cardinals Hall of Fame Museum, until November 8, 2008. It moved to Arlington and reopened in early 2010. In 2012, the WBW was merged with the International Bowling Media Association. After the merger, the WBW Hall of Fame inductees became part of the IBMA Luby Hall of Fame. officers of the World Bowling Writers, which formed the Hall's Board.][...] The man and woman who receive the most votes are elected."}
{"_id": "doc4", "text": "A \"Hello, World!\" program is generally a simple computer program which outputs (or displays) to the screen (often the console) a message similar to "Hello, World!" while ignoring any user input. A small piece of code in most general-purpose programming languages, this program is used to illustrate a language's basic syntax. A "Hello, World!" program is often the first written by a student of a new programming language, but such a program can also be used as a check to ensure that the computer software intended to compile or run source code is correctly installed, and that its operator understands how to use it. [...] The C-language version was preceded by Kernighan's own 1972 A Tutorial Introduction to the Language B, where the first known version of the program is found in an example used to illustrate external variables."}
La dimensione massima del file è 500.000 righe.
File di query
Il file di query contiene le query di esempio che verranno utilizzate per l'ottimizzazione un modello di machine learning. Ogni query deve avere uno o più segmenti estrattivi corrispondenti in il file del corpus. Devi fornire almeno 100 query a corrispondenza positiva. Puoi anche fornire query non pertinenti: si tratta di query che corrispondono segmenti estrattivi con un punteggio di pertinenza pari a zero.
Il file di query è in formato JSONL e ha gli stessi campi del file del corpus.
Ad esempio:
{"_id": "query1", "text": "who founded Google?"}
{"_id": "query2", "text": "where is blood pumped after it leaves the right ventricle?"}
{"_id": "query3", "text": "where is the bowling hall of fame located?"}
{"_id": "query4", "text": "why is the sky blue?"}
Il numero massimo di query consentite nel file è 40.000.
Etichette di addestramento
Il file delle etichette di addestramento collega le query ai segmenti estrattivi assegna un punteggio a ogni coppia di query e segmento.
Se il file delle etichette di test non è presente, allora il 20% delle etichette le query nel file delle etichette di addestramento sono riservate alla valutazione del modello ottimizzato dopo addestramento.
Il file contiene l'ID di una query e l'ID della relativa corrispondenza (o non corrispondente)
un segmento estrattivo e un punteggio per la pertinenza del segmento rispetto alla query.
Deve essere presente almeno una riga per query. se una query riceve una risposta in due
allora ci sono due righe per la query. Score
è un valore intero non negativo. Un punteggio maggiore di zero indica che il documento è
correlate alla query. Numeri più elevati indicano un livello di pertinenza maggiore. Se
il punteggio viene omesso e il valore predefinito è 1.
Il file delle etichette di addestramento è un file TSV (valori separati da tabulazioni) con un'intestazione.
Il file deve contenere le colonne query-id
, corpus-id
e score
. query-id
è una stringa che corrisponde alla chiave _id
del file di query e corpus-id
è una stringa che corrisponde a _id
nel file del corpus.
Ad esempio:
query-id corpus-id score
query1 doc1 1
query2 doc2 1
query3 doc3 1
query3 doc9 1
query4 doc4 0
Il file delle etichette di addestramento deve includere almeno 100 ID query univoci. Il numero di ID query nel file delle etichette di addestramento combinato con il numero di query nel file delle etichette di test deve essere inferiore a 500.000.
Etichette di test
Analogamente al file delle etichette di addestramento, questo file facoltativo contiene gli ID della query ed estrattivi per segmento e pertinenza. Contiene meno risorse anziché nel file delle etichette di addestramento. Se presenti, le coppie di query e segmenti estratti nel file vengono utilizzate per valutare l'ottimizzazione. Se le etichette di test il file di addestramento non è presente, la query e le coppie di segmenti estrattivi del file di etichette per la valutazione.
Questo file ha lo stesso formato del file delle etichette di addestramento.
Ad esempio:
query-id corpus-id score
query200 doc200 1
query201 doc201 1
query202 doc202 1
Sebbene il file delle etichette di test sia facoltativo, se lo fornisci deve contenere almeno tre ID query univoci.
Prima di iniziare
Attiva le funzionalità della versione Enterprise per l'app.
Ottimizzare la ricerca
Per ottimizzare un modello di ricerca con i tuoi dati di addestramento, segui questi passaggi.
Console
Per utilizzare la console Google Cloud per ottimizzare un modello, segui questi passaggi:
Prepara i dati di addestramento e, facoltativamente, i file di dati di test. Utilizza i formati descritti in File di addestramento.
Carica i file su Cloud Storage.
Nella console Google Cloud, vai alla pagina Agent Builder.
Nella pagina App, fai clic sul nome dell'app per cui vuoi un modello addestrato.
Nel menu di navigazione, fai clic su Configurazioni.
Fai clic sulla scheda Ottimizzazione.
Fai clic su Ottimizza il modello di base.
Specifica il corpus, la query, l'addestramento e, facoltativamente, i file di test che preparato nei passaggi 1 e 2 precedenti.
Fai clic su Avvia ottimizzazione.
Aggiorna la pagina per visualizzare lo stato nella tabella Attività di ottimizzazione recente nella scheda Correzione.
REST
Per utilizzare il metodo trainCustomModel
per ottimizzare un data store:
Prepara i file dei dati di addestramento (e, facoltativamente, i dati di test). Utilizza i formati descritti in File di addestramento.
Inserire i file in un file Cloud Storage di sincronizzare la directory di una VM con un bucket.
Carica i file dal bucket Cloud Storage Vertex AI Search eseguendo questo comando curl:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID:trainCustomModel" \ -d '{ "gcsTrainingInput": { "corpusDataPath": "CORPUS_JSONL_GCS_PATH", "queryDataPath": "QUERY_JSONL_GCS_PATH", "trainDataPath": "TRAIN_JSONL_GCS_PATH", "testDataPath": "TEST_JSONL_GCS_PATH" }, "modelType": "search-tuning" }'
Sostituisci quanto segue:
PROJECT_ID
: l'ID del tuo progetto Google Cloud.DATA_STORE_ID
: l'ID del datastore che vuoi ottimizzare.CORPUS_JSONL_GCS_PATH
: il il percorso del file JSONL corpus in Cloud Storage, ad esempiogs://my-bucket/corpus.jsonl
.QUERY_JSONL_GCS_PATH
: il percorso del file JSONL della query in Cloud Storage, ad esempiogs://my-bucket/query.jsonl
.TRAIN_JSONL_GCS_PATH
: il percorso del file TSV delle etichette di addestramento in Cloud Storage, ad esempiogs://my-bucket/train.tsv
.TEST_JSONL_GCS_PATH
: un campo facoltativo per specificare il percorso di Cloud Storage per il file TSV delle etichette di test, ad esempiogs://my-bucket/test.tsv
. Se non disponi di un file di etichette di test, rimuovi il campotestDataPath
o lascialo vuoto.
Per informazioni generali su questo metodo, consulta
trainCustomModel
.L'ottimizzazione inizia automaticamente dopo il caricamento dei file di dati.
Fai clic per un esempio di comando e risposta curl.
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" "https://discoveryengine.googleapis.com/v1/projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321:trainCustomModel" -d '{ "dataStore": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321", "gcsTrainingInput": { "corpusDataPath": "gs://my-bucket/corpus.jsonl", "queryDataPath": "gs://my-bucket/query.jsonl", "trainDataPath": "gs://my-bucket/train.tsv" }, "modelType": "search-tuning" } { "name": "projects/12345/locations/global/collections/default_collection/dataStores/my-data-store_4321/operations/train-custom-model-6071430366161939774", "metadata": { "@type": "type.googleapis.com/google.cloud.discoveryengine.v1.TrainCustomModelMetadata" }, "response": { "@type": "type.googleapis.com/google.cloud.discoveryengine.v1.TrainCustomModelResponse", "modelStatus": "in-progress" }
Prendi nota del valore
name
restituito dallatrainCustomModel
e segui le istruzioni riportate in Ottenere i dettagli su un'operazione a lunga esecuzione per vedere quando l'operazione di ottimizzazione della ricerca è completa.
Testare la ricerca ottimizzata e utilizzarla per singole query di ricerca
Al termine dell'ottimizzazione, puoi testarla confrontando i risultati delle query con il modello ottimizzato e i risultati delle stesse query con il modello di base.
Console
Per utilizzare la console Google Cloud per visualizzare l'anteprima del comportamento di un modello ottimizzato, segui questi passaggi:
Vai alla scheda Correzione:
Nella console Google Cloud, vai alla pagina Agent Builder.
Fai clic sul nome dell'app di cui vuoi visualizzare l'anteprima.
Fai clic su Configurations (Configurazione).
Fai clic sulla scheda Tuning.
Fai clic su Modello ottimizzato e utilizza il riquadro di anteprima a destra per eseguire query che utilizzano il modello ottimizzato.
Fai clic su Modello di base e utilizza il riquadro di anteprima a destra per eseguire query utilizzando il modello originale.
Confronta la qualità dei risultati.
REST
Per valutare l'effetto della regolazione, puoi eseguire query con il campo enableSearchAdaptor
impostato su true
e poi su false
e confrontare i risultati. L'impostazione del campo enableSearchAdaptor
su true
indica che per la query viene utilizzata la versione ottimizzata della ricerca.
Per eseguire query di ricerca che utilizzano il modello ottimizzato:
Nella chiamata al metodo di query, imposta il campo
enableSearchAdaptor
nel campocustomFineTuningSpec
sutrue
.Ad esempio:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search:search" \ -d '{ "query": "QUERY", "customFineTuningSpec": { "enableSearchAdaptor": true } }'
Sostituisci quanto segue:
PROJECT_ID
: l'ID del tuo progetto Google Cloud.APP_ID
: l'ID dell'app per cui vuoi eseguire la query.
Per informazioni dettagliate sulle query di ricerca, consulta la sezione Ottenere informazioni sui risultati di ricerca.
risultati e
servingConfigs.search
.
Attivare la ricerca personalizzata
Dopo aver testato la ricerca ottimizzata e aver deciso di utilizzarla per tutte le query di ricerca, puoi impostarlo come modello di ricerca predefinito.
Console
Per impostare il modello ottimizzato come modello predefinito e applicarlo alla pagina di anteprima principale, al widget e alle chiamate API:
Vai alla scheda Correzione:
Nella console Google Cloud, vai alla pagina Agent Builder.
Fai clic sul nome dell'app.
Fai clic su Configurations (Configurazione).
Fai clic sulla scheda Tuning.
Fai clic su Modello ottimizzato.
Fai clic su Pubblica.
REST
Quando imposti il modello ottimizzato come modello predefinito, non è necessario specificare
il campo customFineTuningSpec
nella query di ricerca come in precedenza
.
Per utilizzare la versione ottimizzata della ricerca per impostazione predefinita per tutte le query di ricerca, segui questi passaggi:
Per impostare la ricerca ottimizzata come modello predefinito, esegui il comando curl seguente :
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search?updateMask=customFineTuningSpec.enableSearchAdaptor" \ -d '{ "customFineTuningSpec": { "enableSearchAdaptor": true } }'
Per informazioni generali su questo metodo, consulta
servingConfigs.patch
.
Disattivare la ricerca personalizzata
Se non vuoi più utilizzare la versione ottimizzata della ricerca, ad esempio se risultati non migliori o peggiori di prima dell'ottimizzazione, allora puoi disattivare la ricerca ottimizzata.
Console
Per ripristinare l'utilizzo del modello di base come modello predefinito:
Vai alla scheda Correzione:
Nella console Google Cloud, vai alla pagina Agent Builder.
Fai clic sul nome dell'app.
Fai clic su Configurations (Configurazione).
Fai clic sulla scheda Ottimizzazione.
Fai clic su Modello di base.
Fai clic su Pubblica.
REST
Per interrompere l'uso del modello ottimizzato, esegui una chiamata curl simile a quella precedente,
ma imposta enableSearchAdaptor
su false
:
Esegui questo comando curl:
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -H "X-Goog-User-Project: PROJECT_ID" \ "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/engines/APP_ID/servingConfigs/default_search?updateMask=customFineTuningSpec.enableSearchAdaptor" \ -d '{ "customFineTuningSpec": { "enableSearchAdaptor": false } }'
Per informazioni generali su questo metodo, consulta
servingConfigs.patch
Passaggi successivi
- Per comprendere l'impatto dell'ottimizzazione della ricerca sulla qualità della ricerca, valutare la qualità della ricerca. Per ulteriori informazioni, consulta Valutare la qualità della ricerca.