Arquitectura RAG para aplicaciones SaaS usando Amazon Bedrock
Mi primer lote de producción en Autowired.ai costó el triple de mi presupuesto.
Envié el texto completo de OCR de 200 documentos a un modelo de vanguardia para cada uno de los campos. Fue un error. Estaba pagando por datos que el modelo no necesitaba.
Rediseñé la arquitectura y reduje los costos en un 40%. Así es como puedes hacer lo mismo.
- Deja de usar LLMs para todo
Textract es excelente extrayendo campos estructurados como fechas y totales. Estaba usando Bedrock para repetir el trabajo que Textract ya había terminado.
El nuevo flujo utiliza tres etapas: • Usa Textract para la mayor parte del trabajo. • Envía solo los campos faltantes a Bedrock para una llamada de completado (gap-fill). • Usa Bedrock para una llamada de verificación final.
Si Textract tiene un alto nivel de confianza, Bedrock trabaja menos. Esto reduce tu recuento de tokens de inmediato.
- Usa el almacenamiento en caché de prompts (Prompt Caching)
Los prompts del sistema para las definiciones de campos y esquemas son estáticos. No cambian entre documentos.
Amazon Bedrock te permite almacenar estos prompts en caché. La primera llamada de un lote tiene un pequeño recargo. Cada llamada posterior en ese intervalo utiliza la caché al 10% del precio habitual. Esto redujo mis costos de entrada en un 20%.
- Filtra tu contexto
No envíes la respuesta completa de OCR a Bedrock.
• Para el completado (gap-fill): Envía solo los bloques de OCR específicos relacionados con los campos faltantes. • Para la verificación: Envía los valores extraídos, no el OCR sin procesar.
También limpié mis prompts. Eliminar instrucciones redundantes redujo el tamaño de mi prompt de 2,400 tokens a 1,100 tokens sin pérdida de precisión.
- Empareja el modelo con la tarea
No uses Claude Sonnet para cada tarea. Sonnet es 5 veces más caro que Haiku.
Los probé en tareas específicas: • Completado de formularios estructurados: La precisión de Haiku fue solo el 2% de la de Sonnet. Me cambié a Haiku. • Contratos no estructurados: Haiku fue menos preciso. Me quedé con Sonnet. • Verificación: Haiku funcionó bien. Me cambié a Haiku.
Elige tu modelo basándote en la complejidad de la tarea, no en todo el sistema.
- Implementa el almacenamiento en caché en la capa de aplicación
Añadí una caché en DynamoDB utilizando un hash del esquema y la salida de Textract. Si ejecutas el mismo conjunto de pruebas varias veces mientras ajustas tu código, esto elimina entre el 80% y el 90% de tus llamadas a Bedrock.
Resumen de la arquitectura ganadora: • Caché de aplicación para omitir Bedrock en repeticiones. • Caché de prompts de Bedrock para instrucciones de sistema estáticas. • Niveles de modelos para usar Haiku siempre que sea posible. • Filtrado de contexto para enviar solo los datos necesarios.
Mide tus tokens antes de optimizar. Los datos te mostrarán dónde estás desperdiciando dinero.
Fuente: https://dev.to/yogieee/rag-architecture-for-saas-applications-using-amazon-bedrock-10df
Comunidad de aprendizaje opcional: https://t.me/GyaanSetuAi