AnnuncioTi presentiamo MongoDB 8.0, il MongoDB più veloce di sempre! Leggi >
AnnuncioVoyage AI si unisce a MongoDB per potenziare applicazioni AI più accurate e affidabili su Atlas. Scopra di più >
Blog home
arrow-left

Architettura di database strategica per l'AI: unificata a confronto con separata

22 maggio 2025 | Updated: 3 giugno 2025

Punti chiave:

  • Un’architettura unificata riduce notevolmente la complessità dello sviluppo eliminando le sfide di sincronizzazione tra database vettoriali e operativi separati.

  • La coerenza dei dati è garantita tramite transazioni atomiche in sistemi unificati, prevenendo "documenti fantasma" e altri errori di architettura separata.

  • Il costo totale di proprietà è solitamente inferiore con le architetture unificate grazie al consolidamento dell'infrastruttura e alla riduzione dell'onere di manutenzione.

  • La velocità di sviluppo aumenta con approcci unificati poiché i team possono concentrarsi sulla creazione di funzionalità piuttosto che sul codice di integrazione e sulla gestione degli errori.

  • MongoDB Atlas offre vantaggi a prova di futuro con funzionalità di AI integrate come la ricerca vettoriale, la quantizzazione automatica e altro ancora.

L'AI richiede di più ai database e le decisioni architettoniche che le aziende prendono oggi incidono direttamente sul loro time-to-market e sul vantaggio competitivo. Nell'era della Generative AI, il database deve supportare sia ricerche vettoriali ad alta dimensione che carichi di lavoro transazionali veloci per tenere il passo con il rapido cambiamento tecnologico e aziendale.

In questo articolo, esaminiamo le considerazioni architettoniche che i leader tecnologici e gli architetti devono valutare quando gestiscono i diversi requisiti di dati delle applicazioni AI, inclusi gli incorporamenti vettoriali ad alta dimensionalità per la ricerca semantica insieme ai dati operativi tradizionali (profili utente, metadati dei contenuti, ecc.). Questa dicotomia presenta due distinti approcci architettonici,—separato rispetto a unificato— ciascuno con implicazioni significative per le prestazioni dell'applicazione, la coerenza e l'esperienza dello sviluppatore.

Nota: per i responsabili tecnici che desiderano dotare i propri team dei dettagli pratici o che necessitano di prove solide per convincere gli sviluppatori scettici, abbiamo pubblicato una guida all'implementazione completa. Sebbene questo articolo si concentri sulle considerazioni strategiche, la guida approfondisce le realtà a livello di codice che il team di sviluppo apprezzerà.

Perché l'architettura dei dati è importante

La creazione di prodotti e funzionalità di AI di successo implica pensare in anticipo alla velocità e al costo dell'intelligenza su larga scala. Indipendentemente dal fatto che si implementi una ricerca semantica per una knowledge base o si alimenti un motore di raccomandazione in tempo reale, l'architettura del database è alla base della velocità e dell'affidabilità con cui tali funzionalità possono essere immesse sul mercato.

Nell'era dell'AI, il successo non dipende più esclusivamente dal possesso di algoritmi innovativi: è determinato fondamentalmente dall'accuratezza e dalla pertinenza dell'output. Questo rappresenta un cambiamento profondo: l'architettura dei dati, un tempo relegata ai dipartimenti IT, è diventata una preoccupazione strategica per tutti. Incide direttamente sulla velocità con cui i tuoi sviluppatori possono innovare (velocità degli sviluppatori), sulla rapidità con cui puoi introdurre nuove funzionalità sul mercato (time-to-market) e sull'affidabilità delle prestazioni dei tuoi sistemi in condizioni reali (affidabilità operativa).

In sostanza, la tua architettura dei dati è diventata il fondamento su cui la tua intera strategia di AI ha successo o fallisce. La tua architettura dei dati è il tuo fondamento dei dati.

A differenza delle applicazioni tradizionali che si occupano principalmente di dati strutturati e semplici query CRUD, le applicazioni AI generano e interrogano rappresentazioni vettoriali di dati non strutturati (come testo, immagini e audio) per trovare elementi "simili". Spesso questi vettori sono memorizzati in database vettoriali dedicati o in motori di ricerca ottimizzati per la ricerca di somiglianze. Allo stesso tempo, le applicazioni hanno comunque bisogno di query tradizionali (ricerche esatte, aggregazioni, transazioni sui dati aziendali). Questo solleva una questione architettonica fondamentale:

Utilizziamo database specializzati separati per questi diversi carichi di lavoro e strutture dati, o li unifichiamo in un unico sistema?

Cogliamo anche l'occasione per affrontare brevemente il concetto di "database AI" emerso per descrivere un sistema in grado di gestire sia carichi di lavoro operativi standard che operazioni specifiche per l’AI, come la ricerca vettoriale. In breve, dietro le funzionalità di ricerca AI nelle moderne applicazioni di AI si celano tecniche di recupero AI abilitate da database ottimizzati per carichi di lavoro AI.

Architettura separata: integrazione di un archivio vettoriale separato

In un'architettura separata, le operazioni vettoriali e la gestione dei dati transazionali sono delegate a sistemi separati e specializzati. Un database generico (ad esempio, MongoDB, PostgreSQL) mantiene i dati operativi, mentre un archivio vettoriale dedicato (ad esempio, Elasticsearch, Pinecone) gestisce gli incorporamenti e le operazioni di ricerca di somiglianza. A prima vista, questo approccio divide et impera consente a ciascun sistema di fare ciò che sa fare meglio.

Il motore di ricerca o l'archivio vettoriale dedicato può essere specializzato in query di somiglianza vettoriale, mentre il database operativo gestisce gli aggiornamenti e la persistenza. Ciò sfrutta ottimizzazioni specializzate in ciascun sistema, ma introduce requisiti di sincronizzazione tra gli archivi di dati.

Molti team AI hanno implementato in questo modo la ricerca semantica e altre funzionalità di AI, utilizzando un indice vettoriale esterno insieme al database delle applicazioni, con entrambi i sistemi mantenuti sincronizzati tramite un middleware personalizzato o una logica a livello di applicazione.

Caratteristiche dell'architettura separata:

  • Sistemi specializzati: ogni database è ottimizzato per il proprio ruolo (ad es. il database operativo garantisce scritture rapide, transazioni ACID e query complesse; il motore di ricerca vettoriale fornisce una ricerca di similarità efficiente utilizzando indici come HNSW per la ricerca approssimata del vicino più prossimo).

  • Duplicazione dei dati: gli incorporamenti di vettori (e spesso alcuni identificatori o metadati) sono duplicati nell'archivio vettoriale. L'ID principale o la chiave esiste in entrambi i sistemi per collegare i risultati.

  • Logica di sincronizzazione: l'applicazione deve gestire la sincronizzazione: per ogni creazione/aggiornamento/eliminazione di un record, è necessario aggiornare o eliminare anche la voce vettoriale corrispondente nell'indice di ricerca. Questo può avvenire tramite flussi di eventi, acquisizione delle modifiche o nel codice dell'applicazione che chiama due sistemi.

  • Query dei dati: modelli di query in più fasi che richiedono un coordinamento tra i sistemi

Stack di esempio: un esempio è l'utilizzo di MongoDB come fonte di verità per i documenti di prodotto e di Elasticsearch come motore di ricerca vettoriale per gli incorporamento delle descrizioni di prodotto. L'app scrive su MongoDB, quindi indicizza l'incorporamento in Elasticsearch e, al momento della query, esegue una ricerca vettoriale in Elasticsearch, per poi recuperare il documento completo da MongoDB tramite ID.

Questo modello di sistema è ciò che sentiamo dire da diversi team di AI che sfruttano MongoDB e... beh, praticamente qualsiasi altra cosa che prometta di far ballare i vettori più velocemente.

È l'equivalente architetturale di indossare sia una cintura che le bretelle: certo, i pantaloni non cadono, ma stai lavorando duramente per risolvere quello che potrebbe essere un problema più semplice. Questi team finiscono spesso con il creare più codice di sincronizzazione che funzionalità reali, trasformando quella che dovrebbe essere un'innovazione AI in un complesso gioco di destrezza di coordinamento del database.

Diagramma che mostra l'architettura separata per MongoDB + Elasticsearch. Al centro del diagramma c'è una casella intitolata molteplici tecnologie, che include il database operativo e il database vettoriale, collegati tramite ETL. Da questa casella, il Database vettoriale invia il contesto del prompt al livello di orchestrazione e il database operativo invia DB normalizzato per le query per i dati non correlati ai vettori al layer di orchestrazione. Da lì, il layer di orchestrazione si collega all'LLM e all'app basata sulla Generative AI.
Figura 1. Architettura separata: database operativo MongoDB + archivio vettoriale Elasticsearch.

Mettendo da parte gli eccessi, il punto fondamentale è che la separazione dell'architettura ha un costo.

Ora hai due fonti di verità che devono rimanere sincronizzate. Ogni volta che aggiungi o aggiorni dati, devi indicizzare il vettore nel motore di ricerca. Ogni query comporta più round trip – uno al servizio di ricerca per trovare gli elementi pertinenti e l'altro al database per recuperare i dettagli completi.

Questa ulteriore complessità può rallentare lo sviluppo e introdurre potenziali punti di errore. Il funzionamento di un sistema separato comporta sfide, come vedremo, legate alla coerenza (i.e. registri "ghost" quando i due sistemi non sono sincronizzati) e una maggiore complessità di sviluppo e manutenzione.

Nei casi d'uso ad altissima scala o a bassissima latency (ad esempio, >1B di vettori o <1 ms di SLA NN), un motore vettoriale dedicato come FAISS o Milvus potrebbe comunque superare un database generico nel throughput di ricerca per somiglianza grezza. Tuttavia, i Search Nodes di MongoDB Atlas isolano i carichi di lavoro di ricerca vettoriale su istanze separate ottimizzate per la memoria, consentendo di scalare e ottimizzare le prestazioni di ricerca indipendentemente dai nodi del database, fornendo spesso le garanzie di bassa latency richieste dalle moderne applicazioni di AI.

Architettura unificata con MongoDB Atlas: un'unica piattaforma per i dati dell'AI

In un'architettura unificata, una singola piattaforma di database gestisce sia i dati operativi che la ricerca vettoriale. MongoDB Atlas Vector Search integra l'indicizzazione e la ricerca vettoriale direttamente nel database MongoDB.

Questo pattern architetturale semplifica il modello di dati memorizzando gli incorporamenti accanto ai dati associati nella stessa struttura di documento. Il sistema di database gestisce internamente l'indicizzazione vettoriale (utilizzando algoritmi come HNSW) e fornisce funzionalità di query integrate sia per i pattern di dati vettoriali che per quelli tradizionali.

In pratica, ciò significa che l'applicazione può eseguire una query (su MongoDB) che filtra e trova i dati in base alla somiglianza vettoriale, senza bisogno di un secondo sistema. Ciò significa che tutti i dati – i documenti della tua applicazione e le loro rappresentazioni vettoriali – risiedono in un unico luogo, sotto un unico sistema transazionale conforme ad ACID per il tuo carico di lavoro AI.

Caratteristiche dell'architettura unificata:

  • Unica fonte di verità: sia i dati non elaborati che gli indici vettoriali risiedono in un unico database. MongoDB Atlas, ad esempio, consente di archiviare campi vettoriali nei documenti ed eseguirvi query con operatori di ricerca vettoriale integrati. Non è necessario duplicare o sincronizzare i dati tra sistemi diversi.

  • Operazioni atomiche: gli aggiornamenti a un documento e al relativo incorporamento vettoriale si verificano in un'unica transazione atomica o operazione di scrittura. Ciò garantisce una coerenza forte – l'indice vettoriale non può divergere dai dati del documento. Se una transazione non riesce, nessuna delle modifiche (né il documento né il relativo incorporamento) viene confermata. Ciò elimina problemi come i "documenti fantasma" (che definiremo a breve) poiché è impossibile avere un incorporamento senza il documento corrispondente nello stesso database.

  • Funzionalità di query unificate: Il linguaggio di query (ad es. MQL di MongoDB) può combinare filtri tradizionali, ricerca full-text e ricerca di similarità vettoriale in un'unica query. Questa funzionalità di ricerca ibrida consente, ad esempio, di trovare documenti in cui category = "Tech" e l'incorporamento è simile a un vettore di query, il tutto in un'unica operazione. Non è necessario eseguire due query in sistemi diversi e poi unire i risultati nell'applicazione.

  • Semplicità operativa: esiste un solo sistema da gestire, proteggere, scalare e monitorare. In una piattaforma cloud gestita come MongoDB Atlas, ottieni un servizio completamente gestito che gestisce sia i carichi di lavoro operativi che quelli vettoriali, spesso con funzionalità per ottimizzare entrambi (ad esempio, "nodi di ricerca" dedicati che gestiscono l'indicizzazione e le query di ricerca in modo che le ricerche vettoriali pesanti non incidano sulle prestazioni del carico di lavoro transazionale).

Diagramma che mostra l'architettura unificata. Al centro si trova una casella etichettata come visualizzazione singola, che contiene MongoDB e Vector Search. Questa casella invia il contesto del prompt al layer di orchestrazione, che si connette all'LLM e all'app basata su Generative AI. A sinistra di questo ci sono caselle che riportano schemi flessibili e facilità di incorporazione di nuovi dati, entrambe con segni di spunta. A destra, ci sono di nuovo caselle tutte con segni di spunta. Questi dicono una tecnologia, un linguaggio di query, un'infrastruttura, nessuna duplicazione dei dati e riduzione dei costi.
Figura 2. Architettura unificata: MongoDB Atlas con Vector Search integrato.

MongoDB Atlas integra un motore Atlas Vector Search (basato su Apache Lucene, la stessa tecnologia utilizzata in alcuni motori di ricerca vettoriale dedicati) direttamente nel database. Ciò consente agli sviluppatori di archiviare vettori ad alta dimensionalità nei documenti ed eseguire ricerche di similarità utilizzando indici basati su algoritmi come HNSW (grafici Hierarchical Navigable Small World) per la ricerca approximate nearest neighbor (ANN).

Funzionalità aggiuntive come quantizzazione
vettoriale
(per comprimere i vettori per l'efficienza) e ricerca ibrida (combinando ricerche vettoriali e testuali) sono supportate fin da subito e create con il linguaggio di query MongoDB (MQL).

Tutto ciò avviene sotto l'egida del motore di transazione e dell'architettura di sicurezza del database MongoDB Atlas. In breve, l'approccio unificato mira a offrire il meglio dei due mondi – la ricca funzionalità di un archivio vettoriale specializzato e l'affidabilità/coerenza di un singolo archivio dati operativo.

Una considerazione strategica per i decisori

Per i leader tecnici che gestiscono sia l'innovazione che i budget, l'approccio unificato presenta un caso finanziario convincente oltre ai suoi meriti tecnici.

Se la tua organizzazione sta già sfruttando MongoDB come database operativo, come fanno migliaia di aziende in tutto il mondo, il percorso verso l'abilitazione dell'AI diventa notevolmente semplificato. Invece di allocare un budget per un sistema di database vettoriale completamente nuovo, con tutti i costi associati di licenza, infrastruttura e personale, puoi estendere il tuo investimento MongoDB esistente per gestire i carichi di lavoro vettoriali.

I tuoi team conoscono già l'architettura, il modello di sicurezza e le caratteristiche operative di MongoDB. L'aggiunta di funzionalità vettoriali diventa un'aggiunta di competenze incrementale anziché una ripida curva di apprendimento per un sistema completamente nuovo. Per i progetti già avviati, la migrazione dei dati vettoriali o la generazione di nuovi incorporamenti nell'infrastruttura MongoDB esistente può essere realizzata senza interrompere le operazioni in corso.

Panoramica tecnica dell'architettura separata a confronto con unificata

Per illustrare le implicazioni pratiche di ciascuna architettura, osserviamo le considerazioni operative e di implementazione di alto livello per un'applicazione di risposta alle domande basata su Knowledge Base. Entrambi gli approcci consentono la ricerca vettoriale per analogia, ma con notevoli differenze in termini di complessità di implementazione e garanzie di coerenza.

Diagramma che illustra i costi nascosti dell'architettura separata. Il diagramma è suddiviso in 4 categorie e ogni categoria include una descrizione dello scenario di errore, le conseguenze, le mitigazioni richieste e l'impatto sullo sviluppatore. La prima categoria è etichettata come creazione e lo scenario di errore è l'inserimento riuscito di MongoDB ma il fallimento dell'indicizzazione di Elasticsearch. Le conseguenze di questo scenario sono documentazione abbandonata in MongoDB, documenti invisibili alla ricerca vettoriale e logica di rollback manuale. Le mitigazioni richieste sono il gestore delle transazioni tra database, il processo di pulizia dei clienti e strumenti di monitoraggio per la sincronizzazione non riuscita. L'impatto sugli sviluppatori è il codice complesso di gestione degli errori e l'aumento dei tempi di sviluppo. La seconda categoria è la lettura e lo scenario di errore è che il vettore esiste in Elasticsearch ma il documento manca in MongoDB. Le conseguenze sono più round trip, risultati di ricerca interrotti e complessità della gestione degli errori. Le attenuazioni richieste sono query batch per le prestazioni, gestione del fallback per i documenti mancanti e filtraggio dei risultati per rimuovere gli elementi non disponibili. L'impatto sullo sviluppatore consiste nella complessità delle query multi-fase e nei costi generali di rete superiori. La terza categoria è l'aggiornamento e lo scenario di errore prevede il documento aggiornato in MongoDB ma l'aggiornamento del vettore non riesce in Elasticsearch. Le conseguenze di questo sono incorporamenti vettoriali obsoleti e risultati di ricerca che non corrispondono ai contenuti aggiornati. Le attenuazioni richieste sono processi di riconciliazione in background, meccanismo di ripetizione e registrazione degli eventi per gli aggiornamenti non riusciti. L'impatto di tutto ciò per gli sviluppatori è la scrittura di codice di sincronizzazione rispetto alle funzionalità e ai costi generali del meccanismo di ripristino. La quarta e ultima categoria è l'eliminazione, dove lo scenario di errore è il documento eliminato da MongoDB ma il vettore esiste ancora in Elasticsearch. Le conseguenze di tutto ciò sono documenti fantasma nei risultati della ricerca, un'esperienza utente compromessa e potenziali problemi di sicurezza/privacy. Le mitigazioni richieste includono il monitoraggio della coerenza dell'indice, processi periodici di pulizia e il filtraggio post-ricerca per i documenti fantasma. L'impatto sullo sviluppatore è la gestione degli errori per i documenti mancanti e la gestione della frustrazione dell'utente.
Figura 3. Architettura separata: il costo nascosto.

In un'architettura separata (ad esempio usando MongoDB + Elasticsearch): archiviamo il contenuto dell'articolo e i metadati in MongoDB e memorizziamo i vettori di incorporamento in un indice di Elasticsearch. Al momento della query, cercheremo nell'indice di Elasticsearch per somiglianza vettoriale per ottenere un elenco dei principali ID articolo, quindi recupereremo tali articoli da MongoDB tramite i loro ID.

Ci sono diverse operazioni chiave coinvolte in un'architettura a doppio database:

  • Creazione: durante la creazione dei documenti, l'applicazione deve coordinare le inserzioni in entrambi i sistemi. Per prima cosa, il documento viene archiviato in MongoDB, quindi il suo incorporamento vettoriale viene generato e memorizzato in Elasticsearch. Se una delle due operazioni fallisce, è necessaria una logica di rollback manuale per mantenere la coerenza. Ad esempio, se l'inserimento in MongoDB ha successo ma l'indicizzazione in Elasticsearch fallisce, gli sviluppatori devono implementare un codice di pulizia personalizzato per eliminare il documento MongoDB orfano.

  • Leggi: la ricerca vettoriale diventa un processo a più fasi in un'architettura separata. L'applicazione interroga prima Elasticsearch per trovare vettori simili, recupera solo gli ID dei documenti, quindi effettua un secondo round-trip verso MongoDB per recuperare i documenti completi che corrispondono a tali ID. Ciò introduce un'ulteriore latency di rete e richiede la gestione degli errori per i casi in cui i documenti esistono in un sistema ma non nell'altro.

  • Aggiornamento: l'aggiornamento dei contenuti presenta sfide di sincronizzazione significative. Dopo aver aggiornato un documento in MongoDB, l'applicazione deve anche aggiornare il vettore corrispondente in Elasticsearch. Se l'aggiornamento di Elasticsearch non riesce dopo il corretto aggiornamento di MongoDB, i sistemi non saranno più sincronizzati e la ricerca vettoriale restituirà risultati obsoleti o non corretti. Non esiste una transazione atomica che abbracci entrambi i sistemi, il che richiede complessi meccanismi di recupero.

  • Eliminazione: le operazioni di eliminazione presentano problemi di sincronizzazione simili. Quando un documento viene eliminato da MongoDB ma la corrispondente eliminazione in Elasticsearch non riesce, nei risultati della ricerca appaiono "documenti fantasma": vettori che puntano a documenti che non esistono più. Gli utenti ricevono risultati di ricerca a cui non possono accedere, creando un'esperienza confusa e potenziali problemi di sicurezza se le informazioni sensibili rimangono indirettamente accessibili tramite contenuti di anteprima archiviati in Elasticsearch.

Ognuna di queste operazioni richiede un'attenta gestione degli errori, meccanismi di riprova, sistemi di monitoraggio e processi di riconciliazione in background per mantenere la coerenza tra i due database. Inoltre, la complessità aumenta nel tempo, con problemi di sincronizzazione che diventano più difficili da rilevare e risolvere man mano che il volume dei dati cresce, incidendo in ultima analisi sia sulla produttività degli sviluppatori che sull'esperienza utente.

Diagramma che illustra le operazioni CRUD in un'architettura unificata con MongoDB Atlas con Vector Search. Il diagramma è suddiviso in 4 categorie e fornisce un rapido diagramma dell'architettura in alto e quindi i vantaggi e ciò che viene eliminato. La prima categoria è la creazione, dove MongoDB Atlas si collega a documento + vettore, quindi il documento con l'incorporamento viene inserito nell'applicazione. I vantaggi sono una singola operazione atomica, garanzie di transazione e una coerenza "all-or-nothing". Per quanto riguarda gli elementi eliminati, questi includono la logica di rollback manuale, il codice di pulizia, il coordinamento inter-sistema e i documenti orfani. L'impatto sugli sviluppatori è un codice più semplice e la concentrazione sulle funzionalità non sul codice di sincronizzazione. La seconda categoria è lettura, in cui MongoDB Atlas utilizza l'indice vettoriale per restituire il documento completo con l'operazione di ricerca vettoriale all'applicazione. I vantaggi sono una query a singolo round-trip, documenti completi restituiti, latency ridotta e risultati coerenti garantiti. Per quanto riguarda gli elementi eliminati, tra questi ci sono query multi-fase, raccolta e batch di ID e gestione degli errori per i documenti mancanti. L'impatto sugli sviluppatori è un codice più semplice e una concentrazione sulle funzionalità piuttosto che sul codice di sincronizzazione. La terza categoria è l'aggiornamento, in cui MongoDB Atlas utilizza Document + Vector per aggiornare documento e vettore (operazione atomica) per l'applicazione. Il vantaggio è la query round-trip singola, la restituzione di documenti completi, una riduzione della latency e la garanzia di risultati coerenti. Per quanto riguarda gli elementi eliminati, tra questi vi sono query multi-fase, raccolta e batch di ID e gestione degli errori per i documenti mancanti. L'impatto per gli sviluppatori è l'assenza di logica di riprova e di riconciliazione in background. La categoria finale è delete, in cui MongoDB Atlas utilizza documento + vettore per eliminare i documenti nell'applicazione. I vantaggi sono la rimozione automatica dei vettori, la coerenza garantita e un'unica operazione. Per quanto riguarda ciò che viene eliminato, sono inclusi l'assenza di documenti fantasma, risultati di ricerca interrotti, rischi di sicurezza/privacy e monitoraggio della sincronizzazione. L'impatto per lo sviluppatore è che non sono necessari processi di pulizia e nessun errore segnalato dagli utenti.
Figura 4. Operazioni CRUD in un’architettura unificata: MongoDB Atlas con ricerca vettoriale.

In un'architettura unificata (utilizzando MongoDB Atlas Vector Search): memorizziamo sia i dati dell'articolo sia il relativo vettore di incorporamento in un singolo documento MongoDB. Un indice Atlas Vector Search sul campo di incorporamento consente di eseguire una ricerca di somiglianza direttamente all'interno di MongoDB con una singola query. Il database utilizzerà internamente l'indice vettoriale per trovare i vicini più prossimi e restituire i documenti.

Esaminiamo come le stesse operazioni si semplificano drasticamente in un'architettura unificata:

  • Creazione: la creazione di documenti diventa un'operazione atomica. L'applicazione archivia sia il documento che il suo incorporamento vettoriale in un unico documento MongoDB con un'unica operazione di inserimento. L'intero documento (con il suo incorporamento) viene archiviato correttamente oppure non viene archiviato affatto. Non c'è bisogno di logica di rollback personalizzata o codice di pulizia poiché le garanzie transazionali di MongoDB garantiscono l'integrità dei dati senza codice applicativo aggiuntivo.

  • Leggi: La ricerca vettoriale è semplificata in un unico passaggio. Utilizzando la aggregation pipeline di MongoDB con Atlas Vector Search, l'applicazione interroga vettori simili e recupera i documenti completi in un unico round-trip. Non è necessario coordinarsi tra sistemi diversi né gestire incongruenze, in quanto la ricerca vettoriale è direttamente integrata con il recupero dei documenti, riducendo significativamente sia la latency che la complessità del codice.

  • Aggiornamento: gli aggiornamenti dei documenti mantengono una coerenza perfetta. Durante l'aggiornamento del contenuto di un documento, l'applicazione può aggiornare atomicamente sia il documento che il suo incorporamento vettoriale in un'unica operazione. Le garanzie transazionali di MongoDB assicurano che entrambi vengano aggiornati o nessuno dei due lo sia, eliminando la possibilità di rappresentazioni dei dati non sincronizzate. Gli sviluppatori non devono più implementare complessi meccanismi di recupero per gli errori parziali.

  • Eliminazione: Il problema del documento fantasma svanisce completamente. Quando un documento viene eliminato, anche il suo incorporamento vettoriale viene rimosso automaticamente, poiché si trovano nello stesso documento. Non c'è possibilità di vettori orfani o risultati di ricerca incoerenti. Ciò garantisce che i risultati della ricerca riflettano sempre lo stato attuale del database, migliorando sia l'affidabilità che la sicurezza.

Questo approccio unificato elimina l'intera categoria di sfide di sincronizzazione intrinseche alle architetture separate. Gli sviluppatori possono concentrarsi sulla creazione di funzionalità anziché su meccanismi di sincronizzazione, strumenti di monitoraggio e processi di ripristino. Il sistema scala naturalmente senza aumentare la complessità, mantenendo prestazioni e affidabilità costanti anche con la crescita dei volumi di dati. Oltre ai vantaggi tecnici, ciò determina cicli di sviluppo più rapidi, applicazioni più affidabili e, in definitiva, un'esperienza migliore per gli utenti finali che ricevono risultati di ricerca costantemente accurati.

La ricerca vettoriale e il recupero dei documenti avvengono in un unico round-trip verso il database, il che trasforma radicalmente sia le caratteristiche delle prestazioni che la semplicità operativa delle applicazioni basate sull'AI.

Sincronizzazione dei dati: sfide e "documenti fantasma"

Una delle maggiori sfide dell'architettura separata è la sincronizzazione dei dati. Poiché esistono due fonti di verità (il database operativo e l'indice vettoriale), qualsiasi modifica ai dati deve essere propagata a entrambe. In pratica, una sincronizzazione perfetta è difficile: problemi di rete, bug o errori di processo possono far sì che un archivio venga aggiornato mentre l'altro no. Ciò può portare a incongruenze difficili da rilevare e risolvere.

Un esempio noto in una configurazione suddivisa è lo scenario del "documento fantasma". Un documento fantasma si riferisce a una situazione in cui la ricerca vettoriale restituisce un riferimento a un documento che non esiste più (o non soddisfa più i criteri) nel database primario.

Ad esempio, supponiamo che un articolo sia stato eliminato o contrassegnato come privato in MongoDB, ma che il suo incorporamento non sia stato rimosso da Elasticsearch. Una ricerca vettoriale potrebbe comunque recuperare il suo ID come risultato principale – portando l'applicazione a tentare di recuperare un documento che non è presente o che non deve essere mostrato. Dal punto di vista dell'utente, ciò potrebbe far emergere un risultato interrotto o obsoleto.

Torniamo al nostro scenario pratico descritto in precedenza: immaginiamo un sistema di knowledge base per l'assistenza clienti in cui gli articoli vengono costantemente aggiornati e talvolta rimossi quando diventano obsoleti. Quando un agente dell'assistenza elimina un articolo su un prodotto fuori produzione, l'eliminazione avviene correttamente in MongoDB, ma a causa di un timeout della rete, la corrispondente eliminazione del vettore in Elasticsearch fallisce. E sì, succede, soprattutto con applicazioni che gestiscono milioni di richieste al giorno.

Successivamente, quando un cliente cerca soluzioni relative a quel prodotto fuori produzione, la ricerca vettoriale in Elasticsearch identifica l'articolo ormai eliminato come altamente pertinente e restituisce il suo ID. Quando l'applicazione tenta di recuperare il contenuto completo da MongoDB utilizzando questo ID, scopre che il documento non esiste più.

Il cliente vede un link interrotto o un messaggio di errore invece di contenuti utili, creando un'esperienza confusa e frustrante.

Ciò che è particolarmente insidioso di questo problema è che può manifestarsi in vari modi in tutta l'applicazione. Oltre ai problemi di eliminazione completa del documento, potresti riscontrare:

  • incorporamenti obsoleti: un documento viene aggiornato in MongoDB con nuovi contenuti, ma il vettore in Elasticsearch rappresenta ancora la vecchia versione, determinando risultati di ricerca che non corrispondono al contenuto effettivo.

  • Incoerenze delle autorizzazioni: le autorizzazioni di accesso di un documento cambiano in MongoDB (ad esempio, da pubblico a privato), ma il documento continua a essere visualizzato nei risultati della ricerca vettoriale per gli utenti che non dovrebbero accedervi.

  • Aggiornamenti parziali: solo alcuni campi vengono aggiornati tra i vari sistemi, portando a metadati non corrispondenti tra ciò che viene mostrato nelle anteprime di ricerca rispetto al documento effettivo.

Negli ambienti di produzione, i team di sviluppo ricorrono spesso all'implementazione di complesse soluzioni alternative per mitigare questi problemi di sincronizzazione:

  1. Processi di riconciliazione in background che confrontano periodicamente i documenti tra entrambi i sistemi e risolvono le incongruenze

  2. Modelli Outbox in cui le operazioni vengono registrate in un archivio separato e riprovate fino a quando non vanno a buon fine

  3. Sistemi di monitoraggio personalizzati progettati specificamente per rilevare e segnalare incoerenze tra database

  4. Processi di intervento manuale affinché i team di assistenza possano risolvere le discrepanze segnalate dagli utenti

Tutti questi meccanismi rappresentano un impegno di sviluppo significativo che potrebbe essere altrimenti indirizzato alla creazione di funzionalità che offrano un valore aziendale reale. Introducono inoltre ulteriori punti di errore e complessità operativa.

Fondamentalmente, un'architettura unificata evita l'intera classe di problemi. Poiché esiste solo un database, un documento eliminato viene rimosso automaticamente da qualsiasi indice associato all'interno della stessa transazione. Un modello di dati unificato rende relativamente impossibile avere un vettore senza il suo documento, perché questi ultimi sono una cosa sola e conservati nello stesso documento. Di conseguenza, problemi come documenti fantasma, riferimenti vettoriali obsoleti o la necessità di allineare due datastore semplicemente scompaiono.

Non è necessaria sincronizzazione: quando documenti e incorporamenti risiedono in un unico database, si riduce il rischio di documenti fantasma o letture incoerenti.

Compromessi e considerazioni

Quando si confrontano architetture separate e unificate per i dati AI occorre valutare diversi compromessi chiave. Come accennato, la scelta inciderà sulla complessità del sistema, sulle caratteristiche delle prestazioni, sulla scalabilità, sui costi e sull'agilità di sviluppo. Per i responsabili di progetti AI e i leader dell'AI aziendale è fondamentale comprendere queste considerazioni; di seguito ne sono riportate alcune:

Diagramma che mostra il confronto dei compromessi di un'architettura separata a confronto con unificata. Il diagramma è suddiviso in 4 categorie: complessità del sistema a confronto con coerenza dei dati, costi generali operativi a confronto con prestazioni, scalabilità a confronto con efficienza dei costi e onere di manutenzione a confronto con produttività degli sviluppatori. Per la prima categoria, complessità del sistema a confronto con coerenza dei dati, le menzioni per l'architettura separata sono: sincronizzazione personalizzata richiesta, doppie scritture tra i sistemi e coerenza finale nella migliore delle ipotesi. D'altra parte, le menzioni di MongoDB Unified Architecture sono: le transazioni ACID garantiscono la coerenza, singole operazioni atomiche e nessuna presenza di documenti fantasma né problemi di sincronizzazione. Nella categoria successiva, costi generali operativi a confronto con prestazioni, l'architettura separata presenta i compromessi di ottimizzazione specializzata per sistema, più round trip di rete e due sistemi da monitorare e mantenere, mentre l'architettura unificata ha i vantaggi di un'unica query con indici ottimizzati, un round trip di rete e monitoraggio e operazioni consolidati. La categoria successiva è scalabilità a confronto con efficienza dei costi e i compromessi per l'architettura separata sono lo scaling indipendente dei componenti, i costi dell'infrastruttura duplicati e l'archiviazione ridondante dei dati, mentre l'architettura unificata presenta i vantaggi dell'infrastruttura consolidata, dei nodi di ricerca dedicati quando necessario e di una pianificazione della capacità più semplice. La categoria finale, onere di manutenzione a confronto con produttività degli sviluppatori, elenca i compromessi per l'architettura separata come codice di integrazione esteso, più linguaggi di query e gestione complessa degli errori; mentre i vantaggi per l'unificazione sono concentrati sulla logica dell'applicazione, un singolo linguaggio di query e uno sviluppo di funzionalità più rapido.
Figura 5. Confronto dei compromessi: architettura separata a confronto con architettura unificata MongoDB.

Complessità del sistema a confronto con coerenza dei dati: il mantenimento della coerenza in una configurazione separata richiede una logica aggiuntiva e aumenta la complessità del sistema. Ogni dato viene gestito effettivamente due volte, introducendo possibilità di incoerenza e complesse modalità di errore. In un'architettura unificata, le transazioni ACID assicurano che gli aggiornamenti dei dati e del relativo vettore di incorporamento avvengano insieme o non avvengano affatto, semplificando la progettazione e riducendo il codice personalizzato per la gestione degli errori.

Costi operativi a confronto con performance: un'architettura separata può sfruttare motori specializzati ottimizzati per le query di similarità, ma introduce la latency di rete con più round trip e aumenta i costi generali operativi con due sistemi da monitorare. Le architetture unificate eliminano il salto di rete aggiuntivo, riducendo potenzialmente la latency delle query. MongoDB Atlas offre ottimizzazioni come la quantizzazione vettoriale e nodi di elaborazione di ricerca dedicati che possono corrispondere o superare le prestazioni dei motori di ricerca separati.

Scalabilità a confronto con efficienza dei costi: le architetture separate consentono una scalabilità indipendente dei componenti, ma comportano la duplicazione dei costi dell'infrastruttura e la ridondanza dei dati. Un'architettura unificata consolida le risorse pur consentendo l'isolamento del carico di lavoro tramite funzionalità come Atlas Search Nodes. La pianificazione della capacità risulta dunque semplificata ed è così possibile evitare il sovra-provisioning di più sistemi.

Onere di manutenzione a confronto con velocità di sviluppo: le architetture separate richiedono una notevole quantità di "glue code" per l'integrazione, le doppie scritture e la sincronizzazione, rallentando lo sviluppo e complicando le modifiche dello schema. Le architetture unificate consentono agli sviluppatori di concentrarsi sulla logica delle applicazioni con meno componenti mobili e un unico linguaggio di query, accelerando potenzialmente il time-to-market per le funzionalità AI.

A prova di futuro: architetture unificate più semplici rendono più facile e veloce l'adozione di nuove funzionalità man mano che la tecnologia AI si evolve. I sistemi separati accumulano debito tecnico a ogni aggiornamento dei componenti, mentre le piattaforme unificate possono incorporare nuove funzionalità in modo trasparente senza riprogettare i punti di integrazione.

Sebbene inizialmente alcune organizzazioni possano scegliere un approccio separato a causa di sistemi legacy o requisiti specifici, ora l'architettura unificata di MongoDB con Atlas Vector Search risolve molte delle ragioni storiche che portavano all'uso di motori di ricerca separati, offrendo funzionalità di ricerca ibrida, opzioni di precisione e strumenti di ottimizzazione all'interno di un unico ambiente di database.

Scegliere la giusta architettura per i carichi di lavoro AI

Quando scegliere un'architettura separata e quando ha più senso un'architettura unificata? La risposta dipende in definitiva dai requisiti e vincoli specifici.

Valuta un'architettura separata se hai già creato un'infrastruttura significativa attorno a un database di ricerca o vettoriale specializzato e questo soddisfa le tue esigenze. In alcuni casi, le applicazioni di ricerca su larghissima scala potrebbero essere perfezionate su un motore separato o i requisiti normativi potrebbero imporre l'uso di archivi dati separati.

Un approccio separato può avere senso anche se un tipo di carico di lavoro supera di gran lunga l'altro (ad esempio, si eseguono ricerche vettoriali su miliardi di elementi, ma si hanno operazioni transazionali relativamente leggere – anche se, in tal caso, una soluzione unificata con la giusta indicizzazione può gestire una scalabilità sorprendente).

Bisogna solo essere pronti a investire in strumenti e attività di ingegneria per mantenere i due sistemi in armonia. Se si sceglie questa strada, è necessario progettare attentamente i processi di sincronizzazione e prendere in considerazione l'utilizzo di change stream o bus di eventi per propagare le modifiche in modo affidabile. È inoltre necessario valutare i costi operativi: mantenere le competenze su due piattaforme e la loro integrazione non è un compito semplice.

Prendi in considerazione un'architettura unificata se stai creando una nuova applicazione basata sull'AI o modernizzandone una già presente e desideri semplicità, coerenza e velocità di sviluppo. Se evitare le insidie della sincronizzazione dei dati e ridurre la complessità operativa sono le priorità, un'architettura unificata è un'ottima scelta.

Una piattaforma unificata è ideale quando la tua applicazione richiede una stretta integrazione tra dati operativi e vettoriali – ad esempio, per eseguire una ricerca semantica con filtri di runtime sui metadati, o per aggiornare i contenuti e rifletterli immediatamente nei risultati di ricerca.

Con una soluzione come la piattaforma di dati moderna di MongoDB, ottieni un database completamente gestito e pronto per il cloud in grado di gestire sia le esigenze delle tue applicazioni online che quelle di ricerca AI sotto un unico tetto. Ciò porta a cicli di sviluppo più rapidi (poiché il tuo team può lavorare con un unico sistema e un unico linguaggio di query) e a una maggiore sicurezza che i risultati di ricerca riflettano il vero stato dei tuoi dati in qualsiasi momento.

Diagramma che illustra i vantaggi dell'architettura unificata in MongoDB Atlas Vector Search. Questi vantaggi includono l'assenza di problemi di sincronizzazione, le transazioni ACID, l'architettura semplificata, lo schema e il controllo degli accessi unificati, la riduzione della latency e la produttività degli sviluppatori.
Figura 6. Vantaggi dell'architettura unificata in MongoDB Atlas Vector Search.

Guardando al futuro, un'architettura unificata è probabilmente l'approccio più a prova di futuro. Le funzionalità di AI si evolvono a un ritmo accelerato, quindi avere i dati in un unico posto consente di sfruttare immediatamente le nuove funzionalità.

Lavoriamo con clienti di AI che stanno costruendo sofisticate applicazioni di AI e un'osservazione fondamentale è la necessità di semplificare le operazioni di elaborazione dei dati all'interno di applicazioni di AI che sfruttano le pipeline di RAG o l'AI agentica. Le operazioni critiche includono la suddivisione in blocchi, la generazione di incorporamenti, l'operazione di ricerca vettoriale e il reranking.

Abbiamo anche integrato i modelli di incorporamento e i rerankerall'avanguardia di Voyage AI in MongoDB. Presto, questi modelli risiederanno all'interno di MongoDB Atlas e consentiranno la conversione degli oggetti dati in incorporamento e rafforzeranno un ulteriore layer di gestione dei dati nelle pipeline di recupero saranno tutti all'interno di MongoDB Atlas. Questo passaggio è uno dei modi chiave in cui MongoDB continua a portare l'intelligenza al data layer e a creare una base dati veramente intelligente per le applicazioni AI.

La piattaforma Atlas di MongoDB espande continuamente le sue funzionalità incentrate sull'AI – dai miglioramenti della ricerca vettoriale all'integrazione con flussi di dati e analytics in tempo reale – garantendo al contempo che le garanzie fondamentali del database (come le transazioni ACID e l'alta disponibilità) rimangano solide. Ciò significa che non è necessario riprogettare il proprio data layer per adottare il prossimo grande progresso nell'AI; la piattaforma già presente cresce per supportarlo.

È comprensibile che il dibattito tra architettura separata e unificata sia un classico esempio di equilibrio tra specializzazione e semplicità. I sistemi separati possono offrire i migliori componenti della categoria per ogni attività, ma al costo di una maggiore complessità e di potenziali incongruenze. I sistemi unificati offrono eleganza e facilità, raggruppando le funzionalità in un unico luogo, e hanno rapidamente colmato il divario in termini di funzionalità e prestazioni.

Concludiamo con questo, MongoDB è stato costruito per il cambiamento e questo ethos è esattamente ciò di cui le organizzazioni hanno bisogno mentre affrontano la rivoluzione dell'AI. Consolidando la tua infrastruttura dati e abbracciando tecnologie che unificano le funzionalità, offri ai tuoi team la libertà di sperimentare e la sicurezza di esecuzione. Il futuro apparterrà a coloro che riusciranno a sfruttare insieme l'AI e i dati senza problemi. È tempo di valutare la propria architettura e assicurarsi che consenta di cavalcare l'onda dell'innovazione dell'AI e non di esserne travolti.

megaphone

In un'era in cui l'AI è prioritaria, la capacità di adattarsi rapidamente ed eseguire con eccellenza è ciò che distingue e definisce i leader. La scelta dell'infrastruttura del database è una parte fondamentale di tale esecuzione. Scegli con saggezza: la tua prossima svolta potrebbe dipendere da questo. Prova subito MongoDB Atlas gratuitamente, oppure visita il nostro Atlas Learning Hub per migliorare le tue competenze su MongoDB Atlas!

Risorse MongoDB
Hub di apprendimento Atlas|Customer Case Study|Hub di apprendimento AI|Documentazione|MongoDB University