Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Dopo aver suddiviso i documenti in una raccolta di blocchi, il passaggio successivo consiste nell'arricchire ogni blocco pulendolo e aumentandolo con i metadati. La pulizia dei blocchi consente di ottenere corrispondenze migliori per le query semantiche in una ricerca vettoriale. L'aggiunta di metadati consente di supportare le ricerche dei blocchi che vanno oltre le ricerche semantiche. Sia la pulizia che l'aumento comportano l'estensione dello schema per il blocco.
Questo articolo illustra vari modi per aumentare i blocchi, incluse alcune operazioni di pulizia comuni che è possibile eseguire sui blocchi per migliorare i confronti dei vettori. Descrive anche alcuni campi di metadati comuni che è possibile aggiungere ai blocchi per aumentare l'indice di ricerca.
Questo articolo fa parte di una serie. Ecco l'introduzione .
L'esempio di codice seguente mostra blocchi arricchiti con dati.
Pulizia dei dati
La suddivisione in blocchi dei dati consente al carico di lavoro di trovare i blocchi più rilevanti, in genere vettorializzando tali blocchi e archiviandoli in un database vettoriale. Una ricerca vettoriale ottimizzata restituisce solo le righe nel database con la corrispondenza semantica più vicina alla query. L'obiettivo della pulizia dei dati è supportare le corrispondenze di prossimità eliminando potenziali differenze che non sono materiali per la semantica del testo. Di seguito sono riportate alcune procedure di pulizia comuni.
Annotazioni
È consigliabile restituire il blocco originale non pulito come risultato della query, quindi è necessario aggiungere un altro campo per archiviare i dati puliti e vettorializzati.
Implementare strategie di riduzione. La minuscola consente alle parole maiuscole, ad esempio parole all'inizio di una frase, di trovare le corrispondenze con le parole corrispondenti all'interno di una frase. Gli incorporamenti fanno in genere distinzione tra maiuscole e minuscole, quindi "Cheetah" e "cheetah" generano un vettore diverso per la stessa parola logica. Ad esempio, per la query incorporata "what is faster, a cheetah or a puma?" the embedding "cheetah are faster than pumas" is a closer match than "Cheetahs are faster than pumas". Alcune strategie di minuscolo minuscole tutte le parole, inclusi i sostantivi appropriati, mentre altre strategie minuscole solo le prime parole nelle frasi.
Rimuovere le parole non significative. Le parole non significative sono parole come "a", "an" e "the". È possibile rimuovere le parole non significative per ridurre la dimensionalità del vettore risultante. Se si rimuovono le parole non significative nell'esempio precedente, "un cheetah è più veloce di un puma" e "il cheetah è più veloce del puma" sono vettorialmente uguali a "cheetah più veloce." Tuttavia, è importante comprendere che alcune parole non significative contengono un significato semantico. Ad esempio, "not" può essere considerato una parola non significativa, ma contiene un significato semantico significativo. È necessario testare per determinare l'effetto della rimozione delle parole non significative.
Correggere gli errori di ortografia. Una parola con errori di ortografia non corrisponde alla parola digitata correttamente nel modello di incorporamento. Ad esempio, "cheatah" non è uguale a "cheetah" nell'incorporamento. È consigliabile correggere gli errori di ortografia per risolvere questo problema.
Rimuovere i caratteri Unicode. La rimozione dei caratteri Unicode può ridurre il rumore nei blocchi e ridurre la dimensionalità. Come le parole non significative, alcuni caratteri Unicode potrebbero contenere informazioni pertinenti. È importante eseguire test per comprendere l'impatto della rimozione dei caratteri Unicode.
Normalizzare il testo. La normalizzazione del testo in base a standard come l'espansione delle abbreviazioni, la conversione di numeri in parole e l'espansione delle contrazioni, ad esempio l'espansione di "I'm" in "Io sono", può contribuire ad aumentare le prestazioni delle ricerche vettoriali.
Aumento dei blocchi
Le ricerche semantiche sui blocchi vettorializzati funzionano bene per alcuni tipi di query, ma non anche per altri. A seconda dei tipi di query che è necessario supportare, potrebbe essere necessario aumentare i blocchi con informazioni aggiuntive. I campi di metadati aggiuntivi vengono archiviati nella stessa riga degli incorporamenti e possono essere usati nella soluzione di ricerca come filtri o come parte di una ricerca.
L'immagine seguente mostra il codice JSON del contenuto completamente arricchito e descrive come i metadati potrebbero essere usati da una piattaforma di ricerca.
Le colonne di metadati da aggiungere dipendono dal dominio del problema, inclusi il tipo di dati disponibili e i tipi di query che si desidera supportare. È necessario analizzare l'esperienza utente, i dati disponibili e la qualità dei risultati che si sta tentando di ottenere. Da qui è possibile determinare quali metadati possono essere utili per soddisfare i requisiti del carico di lavoro.
Di seguito sono riportati alcuni campi di metadati comuni, insieme al testo originale del blocco, alcune indicazioni sui relativi usi potenziali e strumenti o tecniche comunemente usati per generare il contenuto dei metadati.
Documento di Identità Un ID identifica in modo univoco un blocco. Un ID univoco è utile durante l'elaborazione per determinare se esiste già un blocco nell'archivio. Un ID può essere un hash di un campo chiave. Strumenti: libreria di hashing.
Titolo. Un titolo è un valore restituito utile per un blocco. Fornisce un breve riepilogo del contenuto nel blocco. Il riepilogo può essere utile anche per eseguire query con una ricerca indicizzata perché può contenere parole chiave per la corrispondenza. Strumenti: modello linguistico.
Sommario. Il riepilogo è simile al titolo in quanto si tratta di un valore restituito comune e può essere usato nelle ricerche indicizzate. I riepiloghi sono in genere più lunghi dei titoli. Strumenti: modello linguistico.
Riformulazione del blocco. La riformulazione di un blocco può essere utile come campo di ricerca vettoriale perché la riformulazione acquisisce variazioni nel linguaggio, ad esempio sinonimi e parafrasazioni. Strumenti: modello linguistico.
Parole chiavi. Le ricerche con parole chiave sono utili per i dati non testuali, per la ricerca di una corrispondenza esatta e quando un termine o un valore specifico è importante. Ad esempio, un produttore automatico potrebbe avere revisioni o dati sulle prestazioni per ognuno dei relativi modelli per più anni. "Review for product X for year 2009" is semantically like "Review for product X for 2010" and "Review for product Y for 2009" (Revisione del prodotto X per l'anno 2009) e "Review for product Y for 2009". In questo caso, è più efficace trovare una corrispondenza con le parole chiave per il prodotto e l'anno. Strumenti: un modello linguistico, RAKE, KeyBERT, multi-rake.
Entità. Le entità sono informazioni specifiche, ad esempio persone, organizzazioni e posizioni. Come le parole chiave, le entità sono valide per le ricerche esatte delle corrispondenze o quando sono importanti entità specifiche. Strumenti: spaCy, Stanford Named Entity Recognizer (Stanford NER), scikit-learn, Natural Language Toolkit (NLTK).
Testo del blocco pulito. Testo del blocco pulito. Strumenti: modello linguistico.
Domande che il blocco può rispondere. In alcuni casi, la query incorporata non corrisponde al blocco incorporato. Ad esempio, la query potrebbe essere ridotta rispetto alle dimensioni del blocco. Potrebbe essere preferibile formulare le query che il blocco può rispondere ed eseguire una ricerca vettoriale tra la query effettiva dell'utente e le query pre-formulate. Strumenti: modello linguistico.
Origine. L'origine del blocco può essere utile come restituzione per le query. La restituzione dell'origine consente al queryr di citare l'origine originale.
Lingua. Il linguaggio del blocco può essere utile come filtro nelle query.
Il costo dell'aumento
L'uso di alcuni modelli linguistici per l'aumento dei blocchi può essere costoso. È necessario calcolare il costo di ogni arricchimento che si sta valutando e moltiplicarlo per il numero stimato di blocchi nel tempo. È consigliabile usare queste informazioni, insieme ai test dei campi arricchiti, per determinare la decisione aziendale migliore.