Architettura RAG per applicazioni SaaS utilizzando Amazon Bedrock
Il mio primo lotto di produzione su Autowired.ai è costato il triplo del mio budget.
Ho inviato il testo OCR completo di 200 documenti a un modello all'avanguardia per ogni singolo campo. È stato un errore. Stavo pagando per dati di cui il modello non aveva bisogno.
Ho riprogettato l'architettura e ridotto i costi del 40%. Ecco come potete fare lo stesso.
- Smetti di usare gli LLM per tutto
Textract è eccellente nell'estrarre campi strutturati come date e totali. Usavo Bedrock per rifare il lavoro che Textract aveva già completato.
Il nuovo flusso utilizza tre fasi: • Usa Textract per la maggior parte del lavoro. • Invia a Bedrock solo i campi mancanti per una chiamata di gap-fill. • Usa Bedrock per una chiamata di verifica finale.
Se Textract è sicuro del risultato, Bedrock lavora meno. Questo riduce immediatamente il numero di token utilizzati.
- Usa il Prompt Caching
I prompt di sistema per le definizioni dei campi e gli schemi sono statici. Non cambiano tra un documento e l'altro.
Amazon Bedrock ti consente di memorizzare questi prompt nella cache. La prima chiamata in un lotto prevede un piccolo sovrapprezzo. Ogni chiamata successiva in quella finestra utilizza la cache al 10% del prezzo abituale. Questo ha ridotto i miei costi di input del 20%.
- Filtra il tuo contesto
Non inviare l'intera risposta OCR a Bedrock.
• Per il gap-fill: Invia solo i blocchi OCR specifici relativi ai campi mancanti. • Per la verifica: Invia i valori estratti, non l'OCR grezzo.
Ho anche ripulito i miei prompt. Rimuovere le istruzioni ridondanti ha ridotto la dimensione del prompt da 2.400 token a 1.100 token, senza alcuna perdita di precisione.
- Abbina il modello al compito
Non usare Claude Sonnet per ogni compito. Sonnet è 5 volte più costoso di Haiku.
Li ho testati su compiti specifici: • Gap-fill di moduli strutturati: Haiku era accurato quanto il 2% di Sonnet. Sono passato a Haiku. • Contratti non strutturati: Haiku era meno accurato. Ho mantenuto Sonnet. • Verifica: Haiku ha fornito buone prestazioni. Sono passato a Haiku.
Scegli il modello in base alla complessità del compito, non dell'intero sistema.
- Implementa il caching a livello applicativo
Ho aggiunto una cache in DynamoDB utilizzando un hash dello schema e dell'output di Textract. Se esegui lo stesso set di test più volte mentre perfezioni il codice, questo elimina l'80-90% delle chiamate a Bedrock.
Riepilogo dell'architettura vincente: • Cache applicativa per saltare Bedrock in caso di ripetizioni. • Prompt cache di Bedrock per le istruzioni di sistema statiche. • Tiering dei modelli per utilizzare Haiku dove possibile. • Filtraggio del contesto per inviare solo i dati necessari.
Misura i tuoi token prima di ottimizzare. I dati ti mostreranno dove stai sprecando denaro.
Fonte: https://dev.to/yogieee/rag-architecture-for-saas-applications-using-amazon-bedrock-10df
Community di apprendimento opzionale: https://t.me/GyaanSetuAi