Progettazione dei dati di base per carichi di lavoro di intelligenza artificiale in Azure
Per le applicazioni di intelligenza artificiale, l'approccio Well-Architected Framework alla progettazione dei dati deve soddisfare requisiti non funzionali come operabilità, costi e sicurezza e rispettare i principi fondamentali dei pilastri di Azure Well-Architected Framework. Deve anche considerare i requisiti funzionali, ad esempio l'inserimento dei dati, la preparazione e la convalida.
Il modello di intelligenza artificiale scelto influisce sulle decisioni di progettazione dei dati successive. Questo articolo illustra le considerazioni principali sull'architettura per i modelli di base che richiedono l'aumento per migliorare la pertinenza dei risultati. Questi modelli sono in genere generativi.
I modelli di intelligenza artificiale generativi sono predefiniti o sottoposti a training preliminare, che consentono di usarli immediatamente senza apportare modifiche. Tuttavia, i modelli predefiniti spesso non soddisfano requisiti specifici del carico di lavoro. Per risolvere questo problema, i modelli vengono aumentati con dati specifici del contesto per migliorare le prestazioni. Ad esempio, è possibile usare il modello GPT in vari casi d'uso. Queste applicazioni includono il recupero di informazioni dai documenti, il supporto tecnico IT e il riepilogo di informazioni complesse. Per usare i modelli di base per soddisfare le esigenze specifiche, è importante comprendere queste considerazioni.
Importante
La progettazione dei dati è un processo iterativo basato sulla sperimentazione statistica. Le applicazioni di intelligenza artificiale generative inviano query al modello che include i dati di richiesta e contesto. Per perfezionare la progettazione dei dati, i dati di richiesta e contesto devono essere entrambi iterati. Il processo iterativo deve includere la pre-elaborazione, la selezione di incorporamenti e la suddivisione in blocchi. Questi passaggi consentono di creare dati adatti a un indice. Per altre informazioni, vedere Progettazione e sviluppo di una soluzione di generazione aumentata (RAG, Retrieval-Augmented Generation).
Durante l'esperimento e l'iterazione, tenere presenti i casi d'uso del consumo. Modificare la progettazione dei dati in base ai modelli di query effettivi. Determinare cosa è accettabile tramite perfezionamento e test.
In una soluzione è possibile usare una combinazione di modelli generativi di intelligenza artificiale e di intelligenza artificiale discriminante per soddisfare i requisiti del carico di lavoro. Per altre informazioni sui dati di training, vedere Progettazione dei dati di training.
Consigli
Ecco il riepilogo delle raccomandazioni fornite in questo articolo.
Suggerimento | Descrizione |
---|---|
Prevedere le query utente. | Comprendere i tipi di domande previsti correlati ai dati di origine e le loro aspettative di aggiornamento. Questa comprensione consente di progettare pipeline e indici di dati per fornire dati di base pertinenti. |
Esternalizzare i dati in un indice di ricerca. | Anziché eseguire query direttamente dal sistema di origine, usare un indice di ricerca. Valutare tecnologie di indice diverse in base ai requisiti del carico di lavoro. Creare una matrice di funzionalità per valutare la scelta più adatta alle proprie esigenze. Prendere in considerazione tecnologie avanzate per gli indici di ricerca, ad esempio Elasticsearch o Ricerca di intelligenza artificiale. ▪ Indicizzazione |
Sviluppare una strategia di inserimento. | Sviluppare una strategia completa di gestione degli indici che copre l'inserimento e la pre-elaborazione dei dati. Rimuovere dati rumorosi o irrilevanti indirizzando incoerenze e duplicati e standardizzazione a uno schema comune. Convertire i formati e i tipi di origine in tipi di dati che facilitano l'esecuzione di query e l'analisi. ▪ Preparazione dei dati ▪ Reimpostazione del volume di dati |
Progettare l'indice per ottenere la massima pertinenza. | Abilitare funzionalità come il filtro, l'ordinamento e la gestione dei metadati in campi specifici per migliorare l'efficienza delle query. Ad esempio, etichettare i campi come ricercabili solo se si intende cercarli. Per evitare costi di archiviazione non necessari, non rendere recuperabili tutti i campi senza un caso d'uso specifico. ▪ Progettazione dello schema ▪ Funzionalità dell'indice ▪ Esecuzione efficiente di query |
Aggiornare l'indice per impedire l'inferenza dei dati non aggiornati. | Quando si aggiorna un indice, prendere in considerazione l'adozione di una strategia di distribuzione side-by-side per la manutenzione. La ricompilazione dell'indice garantisce che le eliminazioni e gli aggiornamenti vengano gestiti perché l'indice diventa un nuovo set di dati. Questo approccio consente test approfonditi dei dati prima di rendere attivo l'indice. Quando si apportano modifiche agli indici, coordinare le modifiche dello schema con gli aggiornamenti del codice. Questa pratica garantisce transizioni senza problemi. ▪ Manutenzione dell'indice |
Tipi di dati
È possibile aumentare i modelli di intelligenza artificiale generative usando i dati di contesto durante l'inferenza o ottimizzarli ulteriormente tramite un processo di ottimizzazione. Entrambi gli approcci richiedono dati supplementari che forniscono al modello un contesto maggiore. Il modello usa tale contesto per rispondere alla query dell'utente e forma la risposta in base alle aspettative. In genere, si usano i tipi di dati seguenti:
I dati di origine sono dati esistenti nell'ambiente di produzione. Questi dati possono essere strutturati, ad esempio i dati nei database o semistrutturati, ad esempio i file JSON. Può anche essere non strutturato, ad esempio documenti, immagini e file audio.
I dati di base provengono dai dati di origine che contengono informazioni sugli argomenti non trattati nei dati di training iniziali del modello. I dati di base vengono combinati con la query dell'utente per formare la richiesta inviata al modello linguistico di grandi dimensioni nel contesto di una chiamata di inferenza specifica. Altri dati che è possibile includere nella chiamata di inferenza sono la richiesta di sistema, esempi di esecuzione singola o con pochi scatti e dati contestuali come le interazioni precedenti.
Questi dati devono essere facilmente ricercabili e recuperabili rapidamente. A causa di questo requisito, è necessario archiviare i dati in un indice ottimizzato per la ricerca. Questo indice è accessibile in tempo reale mentre l'utente attende la risposta. Senza questi dati, il modello potrebbe produrre risultati non corretti o non essere applicabile a ciò che l'utente sta cercando in modo specifico.
L'ottimizzazione dei dati è un'informazione usata per influenzare il modello in modo che possa adattarsi a specifiche attività, domini o stili di risposta per le future richieste di inferenza. Ad esempio, se si prevede che il modello fornisca risposte in uno stile grammaticale specifico, tale guida di stile fungerebbe da dati di ottimizzazione.
I dati utente includono informazioni fornite dagli utenti durante le interazioni con l'applicazione. Quando si interagisce con i modelli generativi, si verificano interazioni con stato. Questi modelli non hanno memoria intrinseca e considerano ogni interazione come atomica.
Quando si gestiscono interazioni con stato, noti anche come TURN data in applicazioni di chat, è importante archiviare i dati per il tempo più breve necessario. Idealmente, questi dati devono essere eliminati definitivamente al termine della sessione. Tuttavia, potrebbero esserci motivi operativi o di conformità che richiedono di conservare determinati dati, ad esempio la domanda originale o la risposta del modello, oltre la durata della sessione. Quando possibile, evitare di archiviare questi dati oltre la sessione.
Indicizzazione
Il nucleo della progettazione dei dati include l'archiviazione e la gestione efficiente dei dati di base. Questo approccio garantisce che i dati possano essere aumentati per ottenere il massimo livello di pertinenza.
Una semplice strategia di intelligenza artificiale potrebbe comportare l'esecuzione di query sui dati di origine per ogni interazione dell'utente. Tuttavia, questo approccio non è pratico a causa dei costi elevati e delle complessità delle interazioni dirette con l'origine dati. È invece consigliabile riutilizzare i dati di origine come copia in un indice ottimizzato per la ricerca e il recupero. L'obiettivo di questo approccio è migliorare la comprensione del modello e la sua capacità di generare risposte pertinenti.
Si consideri un carico di lavoro bancario che archivia i dettagli relativi a conti bancari utente e preferenze e transazioni finanziarie in un archivio dati. In uno scenario di intelligenza artificiale generativa che usa un modello RAG, i dati di base vengono creati e indicizzati con contesto in modo che il modello possa fornire risposte pertinenti. Ad esempio, fornendo dati rilevanti sulle transazioni utente per il contesto durante l'inferenza, il modello può rispondere a domande correlate ai modelli di spesa dell'utente nell'ultimo trimestre.
Tecnologia di indicizzazione specializzata
Valutare la possibilità di esternalizzare i dati di base in un indice di ricerca. Usare questo approccio anziché eseguire query direttamente dal sistema di origine.
L'indice di ricerca offre vantaggi. È possibile modellare e trasformare la copia dei dati in base alle query previste. Le query dirette all'origine primaria sono problematiche perché è possibile che i dati di origine non siano accessibili. Un indice garantisce che i dati rimangano disponibili purché siano rilevanti per l'applicazione. È anche possibile evitare di stressare il sistema dati di origine. Questa strategia garantisce che le query correlate all'intelligenza artificiale non influiscano sul relativo caso d'uso principale.
Alcune opzioni tecnologiche hanno funzionalità di auto-indicizzazione. Gli indici possono raggiungere le origini dati e incorporare i dati. Per questa opzione, le considerazioni sulla rete sono fondamentali. Se l'indice deve connettersi ai database, esistono potenziali problemi, ad esempio latenza di rete e affidabilità.
È previsto un costo iniziale per l'importazione dei dati. Dopo che i dati si trovano nell'indice, non sarà necessario spostarli di nuovo a meno che non siano presenti modifiche o aggiornamenti. La gestione dei dati nel tempo è un aspetto fondamentale della progettazione dell'indice. Per altre informazioni, vedere Manutenzione dell'indice.
Indice predefinito o personalizzato
Alcune tecnologie supportano automaticamente la creazione di un indice predefinito per i dati. Questo indice viene generato nell'inserimento dati con input minimo. L'indice include funzionalità predefinite. Un indice predefinito potrebbe essere accettabile per i concetti di prova e alcuni scenari di produzione.
Alcuni scenari potrebbero richiedere di avere uno schema di indice personalizzato per migliorare la pertinenza in base a requisiti specifici del carico di lavoro. Questi requisiti determinano come progettare lo schema, abilitare le funzionalità degli indici e includere i metadati pertinenti.
Progettazione dello schema
È possibile considerare gli indici come strutture che organizzano e ottimizzano i dati per il recupero. In particolare, organizzano i dati in documenti e campi di una tabella. Considerare gli aspetti seguenti:
Topologia dell'indice. Valutare se condividere tutti i dati in un singolo indice o distribuirli tra più indici. Questa decisione influisce significativamente sulle prestazioni delle query, sulla manutenzione dell'indice, sulla semplicità delle query e sulla configurazione di campi diversi (o schema) tra documenti.
Si considerino, ad esempio, query utente che richiedono contenuto in una lingua specifica. La scelta di progettazione dei dati più semplice consiste nel tradurre tutte le lingue in una sola lingua e archiviarla in un singolo indice. In alternativa, i dati possono essere archiviati in tutte le lingue in un singolo indice. Questa scelta comporta più documenti per ogni lingua. La funzionalità di filtro dell'indice può essere usata per limitare i risultati alla lingua desiderata. In alternativa, ogni indice può contenere le versioni tradotte per una determinata lingua come previsto nella query.
In alcune situazioni, potrebbero essere necessari più indici di ricerca. Questo approccio consente di ottimizzare in modo indipendente ogni indice per ottenere la massima pertinenza dalle query di ricerca. Ad esempio, un manuale per i dipendenti delle risorse umane e un manuale di manutenzione del prodotto servono scopi e destinatari diversi. Tramite l'indicizzazione separatamente, è possibile personalizzare lo schema e le query di ricerca per ognuno di essi, migliorando così l'esperienza utente. Questo approccio può essere complesso da implementare e richiede un agente di orchestrazione per facilitare le chiamate a ogni indice. Il componente di orchestrazione è descritto in Progettazione di applicazioni per carichi di lavoro di intelligenza artificiale in Azure.
Nota
La scelta tra le due topologie e la strategia di segmentazione dei dati dipende dai requisiti del carico di lavoro, dai casi d'uso e dalle aspettative degli utenti.
L'esecuzione di query tra indici può risultare complessa e può influire sulla pertinenza della ricerca. Nel peggiore dei casi, potrebbe essere necessario esaminare manualmente i risultati, decidendo quali sono i criteri. Questo processo introduce la latenza e aggiunge complessità. Al contrario, un singolo approccio all'indice è più semplice e più semplice. La pertinenza può essere migliorata usando funzionalità di indice come il filtro.
In alcuni casi, le considerazioni sulla conformità portano alla necessità di indici separati. Ad esempio, se i requisiti aziendali richiedono che i dati siano isolati tra Europa e America, più indici potrebbero essere inevitabili.
Progettazione del documento. Allineare la progettazione dei dati alle query utente previste per ottimizzare la pertinenza. Valutare il modo in cui ogni documento deve gestire le query. Per gli indici di ricerca, classificare in ordine di priorità i documenti pertinenti e perfezionare i risultati in un set conciso che è densamente compresso con informazioni pertinenti.
Progettazione dei campi. Configurare i campi dell'indice per supportare le prestazioni e la pertinenza della ricerca. I campi dell'indice devono essere mappati agli attributi del documento che si desidera rendere ricercabile, recuperabile, filtrabile e ordinabile. Includono incorporamenti, ID o altri dati che possono migliorare la ricerca.
Funzionalità dell'indice
Configurare i campi dell'indice di ricerca per restituire il set di documenti più pertinente. La decisione dipende dalle funzionalità supportate dalla tecnologia dell'indice di ricerca e dai requisiti del carico di lavoro.
Filtrare, cercare e ordinare le opzioni. Prendere in considerazione queste opzioni perché sono direttamente correlate ai casi d'uso per l'aumento. Ad esempio, filtrabile determina true o false rispetto a un valore fornito nella query e restituisce i documenti pertinenti. Per la ricerca, l'attributo indica se la query di ricerca può fare riferimento al campo. Ad esempio, è possibile verificare se un campo di testo contiene testo specifico o se è matematicamente correlato a un altro vettore. Facoltativamente, è possibile assegnare un peso relativo a tale campo come parte della query di ricerca. È anche possibile rendere ordinabili i set di risultati, che elenca i risultati in base alla pertinenza.
Cambio. L'abilitazione delle funzionalità per indicizzare i campi aumenta i requisiti di spazio, con effetti sui costi. Aggiungere solo funzionalità che si intende usare.
Metadata. Gli indici in genere hanno metadati associati ai campi dell'indice. I metadati ci aiutano a comprendere e gestire i dati fornendo dettagli pertinenti su di esso. Quando si progettano indici, valutare se i metadati sono recuperabili o usati solo per la determinazione della pertinenza. La decisione influisce sui costi di calcolo perché il processo di indicizzazione sottostante è diverso. Un numero eccessivo di metadati può aumentare inutilmente le dimensioni dell'indice.
Esistono molte opzioni tecnologiche per l'indicizzazione. Molte condividono caratteristiche simili, ad esempio quelle elencate in precedenza. Alcuni indici potrebbero avere funzionalità aggiuntive, ad esempio l'elaborazione del testo e l'analisi della lingua durante l'indicizzazione. Per rendere il testo più adatto per l'indicizzazione e la ricerca, suddividere il testo in token, convertirlo in lettere minuscole o rimuovere parole non significative.
Esecuzione di query efficiente
I dati di base vengono usati nelle applicazioni di intelligenza artificiale generative per aumentare l'accuratezza e la pertinenza delle risposte alle query degli utenti. Prendere in considerazione le query utente in anticipo. Comprendere le domande che possono essere poste, chi le chiede e la frequenza con cui vengono poste. Queste informazioni consentono al contesto del modulo dell'applicazione di comprendere il risultato che potrebbe essere rilevante.
I tipi tipici di ricerche sono:
Le query vettoriali cercano elementi simili in base alle rappresentazioni vettoriali o ai punti dati in uno spazio ad alta dimensione.
La ricerca di parole chiave esegue ricerche all'interno dell'intero contenuto dei documenti testuali. Indicizza ed esegue query su grandi volumi di dati di testo e viene comunemente usato nei motori di ricerca, nei database e nei sistemi di gestione dei documenti.
La classificazione semantica migliora la pertinenza dei risultati della ricerca riordinandoli in base alla pertinenza semantica della query, promuovendo le corrispondenze più pertinenti semanticamente all'inizio dell'elenco.
La ricerca ibrida combina diversi tipi di ricerca, ad esempio la ricerca vettoriale, la ricerca full-text e la classificazione semantica, per migliorare ulteriormente la pertinenza dei risultati della ricerca.
Per migliorare ulteriormente le prestazioni del modello, combinare i tipi di ricerca.
Il modo in cui i dati vengono archiviati ed elaborati influisce sull'efficienza delle query. Ogni volta che i dati vengono aggiunti a un indice, per l'indicizzazione sono necessari cicli di calcolo. Se l'indicizzazione e la risposta alle query vengono eseguite sulle stesse risorse di calcolo, potrebbe verificarsi una contesa. Idealmente, un indice deve concentrarsi sull'obiettivo principale di rispondere alle query in modo efficiente e trovare documenti pertinenti anziché un'indicizzazione eccessiva.
I costi e le prestazioni sono fattori chiave della progettazione dell'indice. Tecniche come la creazione di copie shadow possono velocizzare l'esecuzione di query. Tuttavia, la duplicazione dei dati avviene tramite indici, che comporta costi.
Cambio. La progettazione degli indici deve considerare sia i costi che le prestazioni. Trovare un equilibrio ottimizzando l'archiviazione e assegnando priorità a una risposta efficiente alle query e al recupero di documenti pertinenti rispetto all'indicizzazione eccessiva.
Per le scelte tecnologiche per l'archivio dati, gli indici di ricerca, ad esempio Elasticsearch o Ricerca di intelligenza artificiale, offrono potenti funzionalità di ricerca, tra cui ricerche vettorializzate e basate sulla pertinenza. In alternativa, prendere in considerazione le opzioni di database che supportano il tipo di dati disponibili e i tipi di query necessari perché sono ottimizzati per l'esecuzione di query. In definitiva, si tratta delle funzionalità offerte dalle opzioni e dall'investimento della creazione di nuovi set di competenze nel team.
Preparazione dei dati
I dati di base si basano sui dati esistenti, che devono essere resi adatti per l'esecuzione di query semantiche. Alcune query per trovare documenti pertinenti nell'indice possono essere corrispondenti a valori letterali. Altre query richiedono la corrispondenza fuzzy.
Prima che i dati contestuali siano pronti per supportare le richieste di inferenza al modello, esiste un passaggio di pre-elaborazione iniziale che mira a pulire, trasformare e strutturare i dati. L'obiettivo è ridurre il rumore e la distorsione, la ricerca in modo efficiente e ottimizzare la pertinenza delle ricerche negli indici. Gli strumenti di scelta o la logica per la pre-elaborazione dipendono dal team del carico di lavoro, ma esistono alcune considerazioni generali.
Reimpostazione del volume di dati
La ridefinizione del volume di dati comporta la modifica dell'ambito dei dati espandendoli o restringendoli per creare un indice ristretto in modo che la pertinenza venga aumentata. L'efficienza delle query è un'altra preoccupazione significativa. L'archiviazione di dati non necessari influisce negativamente su entrambi gli obiettivi. Si considerino, ad esempio, i dati sulla posizione per un utente. Se solo la parte della città è rilevante, ottimizzare archiviando solo il testo della città anziché il testo completo che rappresenta l'indirizzo.
Ecco alcune considerazioni generali.
Eliminazione dei dati. Mantieni solo ciò che è essenziale per la funzionalità del prodotto, ignorando i dettagli non necessari. Ecco alcuni esempi comuni.
Eliminazione qualitativa. Un modo per eseguire la transizione da un ambito ampio a un ambito più ristretto consiste nell'eliminare i dati di bassa qualità scegliendo in modo selettivo di indicizzare i dati di origine pertinenti. La sfida consiste nell'identificare a livello di codice il contenuto non pertinente per gli scenari di intelligenza artificiale. Anche se il contenuto può essere utile per altre finalità, ad esempio il controllo o la completezza, incluso il contenuto nel carico di lavoro di intelligenza artificiale rischia di ridurre la pertinenza. Un modo per contrassegnare tale contenuto consiste nell'usare metadati che possono essere usati in fase di popolamento dell'indice se il contenuto deve essere aggiunto all'indice.
Dati sensibili. La copia di dati dai dati di origine a un indice potrebbe anche trasferire informazioni riservate. Rispettare le etichette di classificazione dei dati applicate all'origine e mantenere lo stesso livello di riservatezza per questo set di dati. Quando si gestiscono dati con informazioni personali, non archiviare i dati personali, a meno che non sia necessario rispondere alla query. Ad esempio, applicare la classificazione dei dati durante l'indicizzazione dei messaggi di posta elettronica. Se un messaggio di posta elettronica viene contrassegnato come sensibile, evitare di archiviarlo in un archivio dati di riservatezza generale.
Normalizzazione e standardizzazione del testo. L'indirizzamento degli errori di digitazione e della standardizzazione del testo è fondamentale per gli indici basati su parole chiave. Un potenziale caso d'uso è la traduzione, soprattutto quando si tratta di contenuti multilingue.
Questo tipo di pre-elaborazione è necessario anche per gli incorporamenti, che consente di confrontare le parole in base al contesto e al significato. Tuttavia, una sfida si verifica dalla distinzione tra maiuscole e minuscole delle parole. Il contesto conta, e ci possono essere sfumature, come le differenze semantiche tra l'aggettivo "civic" e il sostantivo corretto "(Honda) Civic".
Aggiunta dei dati. Il contesto di aumento si basa spesso sui metadati, che in genere non sono presenti nei dati di origine. Si consideri ad esempio un frammento di testo. Un essere umano nel ciclo o nell'intelligenza artificiale crea domande pertinenti a cui è possibile rispondere usando il contesto del frammento di codice. Quando si archiviano queste domande insieme ai dati di base, le query utente possono essere confrontate con le query generate per valutare la pertinenza dei documenti. La condivisione di questi nuovi dati con i dati di base è un modo efficace per arricchire i dati in blocchi.
Un altro caso d'uso è costituito da entità di addizione trovate durante l'analisi dei dati non strutturati. Queste entità possono essere aggiunte all'indice e usate per la ricerca e il filtro di sistemi esterni o usati per eseguire calcoli complessi. Ad esempio, se si identifica un nome di società, è possibile cercare il proprio settore o altre informazioni rilevanti da un database esterno e aggiungerlo all'indice.
Prendere in considerazione la gestione della derivazione dei dati. È importante per i carichi di lavoro di intelligenza artificiale tenere traccia dell'origine dei dati perché queste informazioni possono andare perse quando un sistema aggrega vari componenti in un unico indice. Queste informazioni potrebbero non essere mai esposte agli utenti, ma le informazioni sulle origini dei dati sono fondamentali per i team di governance dei dati interni. Questi metadati non sono necessariamente per il modello. Consente di mantenere trasparenza e responsabilità.
Cambio. Da un lato, l'aggiunta di nuovi dati aumenta le probabilità di trovare la pertinenza all'interno del set di dati. Tuttavia, questo vantaggio è a un costo. In particolare, le risorse di calcolo necessarie per elaborare e gestire tale campo. Il tempo impiegato per la raccolta e l'archiviazione dei dati può essere sostanziale. Tenere presente che l'overload con campi non necessari può sovraccaricare le risorse.
Elaborazione di dati di testo. Prendere in considerazione tecniche come sinonimi, stemming e prossimità semantica per migliorare la pertinenza. Delegare queste tecniche agli strumenti, se possibile. Alcune tecnologie, ad esempio Elasticsearch o la ricerca di intelligenza artificiale, offrono funzionalità di pre-elaborazione dei dati durante la creazione dell'indice.
Modifica del tipo di dati
I campi di indice in un archivio dati sono tipizzati da dati per soddisfare uno scopo specifico. I campi numerici facilitano query efficienti, i campi di testo consentono ricerche basate su testo e i campi booleani gestiscono informazioni binarie.
I dati di origine sono in genere presenti in vari tipi di dati, ad esempio testo, immagini e tabelle, e l'elaborazione dei dati potrebbe essere complessa. Potrebbe essere necessario estrarre coppie chiave-valore, identificare le intestazioni di sezione per la suddivisione in blocchi semantici, riconoscere identificatori specifici e così via.
Ad esempio, se i dati di origine contengono immagini, non sono intrinsecamente ricercabili. Devono essere convertiti in rappresentazioni vettoriali per consentire ricerche e confronti semantici efficienti. Se la pertinenza è legata ai dati dietro questi formati, investire nell'estrazione dei dati. Trasformare i tipi di dati di origine in tipi di dati funzionali che consentono di eseguire query e analisi.
Suddivisione in blocchi e incorporamento
I dati di base spesso contengono un volume elevato di informazioni, ma il modello è in grado di tokenizzare solo una determinata quantità. La suddivisione in blocchi è una strategia di progettazione dei dati importante perché prevede la suddivisione di un documento in parti più piccole che possono essere elaborate e indicizzate singolarmente. Questa strategia consente una ricerca e un recupero efficienti nonostante le limitazioni dei token. Controllare il numero massimo di token che possono essere gestiti dal modello linguistico di grandi dimensioni. I blocchi non devono superare tale limite.
Esistono molte tecniche per implementare la suddivisione in blocchi. Per altre informazioni, vedere Approcci di suddivisione in blocchi.
Gli incorporamenti sono anche un'altra strategia di progettazione che consente funzionalità di ricerca vettoriale. Gli incorporamenti sono una rappresentazione matematica di un oggetto generato dai modelli di intelligenza artificiale basati sui dati di base. Vengono archiviati nell'indice e aggiungono altro contesto che consente a query complesse di produrre risultati con maggiore pertinenza. Per ulteriori informazioni, vedere Generare incorporamenti.
Manutenzione degli indici
La manutenzione nel tempo è un aspetto fondamentale della progettazione dell'indice. Per i dati statici, in cui i documenti rimangono invariati, la manutenzione dell'indice è semplice. Ma la maggior parte degli indici è dinamica. Nel corso del tempo potrebbero essere stati aggiunti nuovi dati e lo schema dell'indice potrebbe richiedere nuovi campi. Al contrario, alcuni dati e campi potrebbero essere eliminati se non sono più pertinenti. Le opzioni tecnologiche comunemente usate per gli indicizzatori hanno funzionalità per gestire automaticamente gli aggiornamenti. Per informazioni sulle caratteristiche di indice consigliate, vedere Considerazioni per un indice di ricerca.
Criteri di manutenzione
Aggiornamenti delle funzionalità. Potrebbe essere necessario aggiornare l'indice se è presente una modifica della funzionalità dell'applicazione. Questa situazione si verifica quando vengono poste nuove domande. Per gestire queste modifiche, potrebbe essere necessario aggiungere nuovi campi all'indice o modificare le opzioni di filtro, ricerca o elaborazione del testo nei campi esistenti.
Eliminazione dei dati. L'eliminazione dei dati è complessa perché è necessario analizzare i dati disponibili e mancanti per determinare ciò che è irrilevante. Per escludere il contenuto obsoleto da un indice, prendere in considerazione l'uso di metadati che impedisce ai motori di ricerca di indicizzare pagine o contenuti specifici. Inoltre, quando si scelgono le opzioni di archiviazione, selezionare una tecnologia che supporta le eliminazioni in modo efficiente. Ad esempio, l'archiviazione BLOB supporta le eliminazioni temporanea. Se si usa la ricerca di intelligenza artificiale e si caricano documenti dall'archiviazione BLOB, l'archiviazione BLOB può rilevare i documenti rimossi ed eliminare le voci corrispondenti. Questo approccio non è ideale, ma è necessario quando la reindicizzazione è costosa a causa di dimensioni elevate dell'indice.
Il concetto di diritto da dimenticare si riferisce al diritto di un individuo di rimuovere i propri dati personali dalle piattaforme online o dai database. Assicurarsi di disporre di criteri per rimuovere i dati personali, se usati per il training. È possibile soddisfare questo requisito reindicando il set di dati. Se i dati vengono eliminati dal database transazionale, gli aggiornamenti successivi dell'indice riflettono tali modifiche.
Mantenimento della compatibilità. Le applicazioni spesso richiedono strutture di dati specifiche e qualsiasi deviazione può compromettere la funzionalità. Ad esempio, se un campo viene rimosso e l'applicazione richiede tale campo, potrebbe verificarsi una condizione di errore. Come si farebbe per un database tradizionale, adottare una mentalità orientata alla compatibilità in avanti per gli indici e mantenere un livello di rigore. Quando si apportano modifiche all'indice, ad esempio l'aggiunta o la rimozione di campi, coordinare le modifiche dello schema con gli aggiornamenti del codice.
Cambio. Le azioni di aggiunta, aggiornamento ed eliminazione su un indice sono costose. Prendere in considerazione la frequenza degli aggiornamenti e il costo delle prestazioni in base alle dimensioni e all'efficienza dell'archivio dati. Mantenere i documenti obsoleti nell'indice comporta costi di archiviazione, manutenzione ed esecuzione di query.
Strategia di distribuzione
Strategia di distribuzione. Esistono due strategie principali per aggiornare l'indice.
Distribuzioni side-by-side. In questo approccio, un nuovo indice con aggiornamenti si trova insieme a quello esistente. Dopo che il nuovo indice è stato testato e completamente operativo, le query vengono spostate in modo da usare l'indice aggiornato. L'applicazione rimane a conoscenza di questa opzione perché interagisce solo con il nuovo indice. Se si rilevano altri problemi dopo la distribuzione del nuovo indice nell'ambiente di produzione, è possibile ripristinare l'indice precedente. Questo approccio riduce al minimo i tempi di inattività e garantisce la disponibilità continua.
Gli aggiornamenti side-by-side funzionano bene quando il costo della ricompilazione dell'indice è ragionevole e può essere completato in un intervallo di tempo ragionevole. In generale, cercare di mantenere gli indici il più efficiente possibile perché gli indici di dimensioni maggiori utilizzano più risorse. Monitorare e gestire regolarmente gli indici per evitare una crescita non necessaria.
Suggerimento
Quando si eseguono attività di pre-elaborazione dei dati a elevato utilizzo di risorse, ad esempio riconoscimento di entità, ricerche e calcoli, è consigliabile salvare una copia dei risultati. Questo approccio garantisce che, quando è necessario ricompilare l'indice, è possibile evitare di ripetere tutti i calcoli. Alcuni calcoli potrebbero non essere più applicabili a causa di eliminazioni o aggiornamenti, ma molti rimarranno rilevanti.
Distribuzioni di aggiornamenti sul posto. Questo approccio modifica direttamente l'indice esistente. Il risparmio del costo della duplicazione può essere vantaggioso, ma comporta anche rischi a causa di potenziali tempi di inattività e operazioni a elevato utilizzo di risorse. Se l'indice è di grandi dimensioni e la ricompilazione da zero supera la frequenza di aggiornamento desiderata, è possibile prendere in considerazione l'uso degli aggiornamenti sul posto. Tuttavia, questo approccio è complesso e comporta il rischio di violazione dell'obiettivo del livello di servizio (SLO).
Cambio. Valutare il costo di eseguire distribuzioni side-by-side degli indici rispetto all'esecuzione di aggiornamenti sul posto che distribuiscono aggiunte, aggiornamenti ed eliminazioni. Nella maggior parte dei casi, è consigliabile usare gli aggiornamenti side-by-side anziché gli aggiornamenti sul posto. Quando un indice viene ricompilato, il processo gestisce in modo efficace le eliminazioni e gli aggiornamenti perché crea un set di dati completamente nuovo. Questa strategia offre l'opportunità di testare i dati. Anche se le distribuzioni side-by-side duplicano temporaneamente i dati e comportano costi aggiuntivi, i vantaggi della valutazione dei test e delle prestazioni spesso giustificano questo requisito di archiviazione. Prima di rendere attivo un indice, esaminare i dati per assicurarsi che siano allineati alle aspettative.
Aggiornamenti pianificati. Anziché mantenere la comunicazione continua in tempo reale con le origini dati, è possibile aggiornare periodicamente i dati a terra. Questo approccio garantisce che i dati rimangano rilevanti tramite gli aggiornamenti pianificati, eliminando così la necessità di un'interazione costante.
Aggiornamenti di emergenza. Possono verificarsi situazioni impreviste, ad esempio la perdita accidentale di dati indesiderati nell'indice di ricerca. Se si verifica questo problema, potrebbe essere necessario intervenire immediatamente, ad esempio rimuovendo documenti specifici o modificando i dati all'interno dell'indice. Indipendentemente dalla strategia di distribuzione scelta, ad esempio aggiornamenti side-by-side o aggiornamenti sul posto, pianificare sempre la possibilità di operazioni di emergenza.
Indice ad aggiornamento automatico. Se la tecnologia di indicizzazione supporta l'aggiornamento automatico dell'indice per mantenerlo sincronizzato con un'origine dati esterna, potrebbe essere possibile elaborare automaticamente le modifiche nei dati. Le modifiche ai dati includono aggiunte o eliminazioni, senza intervento manuale. Tenere presente che ogni modifica attiva un'operazione nell'indice, che utilizza le risorse. L'indice potrebbe rimanere reattivo alle query, ma la capacità di gestirli potrebbe essere ridotta durante il processo di aggiornamento.
Operazioni di aggiornamento
Misurare l'intervallo di tempo tra la creazione o la modifica dei dati di origine e l'aggiunta all'indice come indicatore e tenerne traccia rispetto agli obiettivi di servizio. Questo indicatore determina le decisioni relative all'aggiornamento della progettazione della pipeline di dati per garantire che i dati siano disponibili nell'indice quando necessario. Un indice deve essere aggiornato solo come richiesto.
Per mantenere l'aggiornamento, è possibile ricompilare completamente l'indice o aggiornarlo in modo incrementale per rimanere sincronizzato con le origini dati originali. Entrambi i metodi assicurano che l'indice rimanga aggiornato e accurato.
L'investimento iniziale nell'ottimizzazione del modello potrebbe essere meno costoso rispetto all'implementazione di un modello RAG, alla progettazione dei prompt e ai metodi di aumento dei dati.