Amazon Bedrock Kullanarak SaaS Uygulamaları İçin RAG Mimarisi

Autowired.ai üzerindeki ilk üretim partim bütçemin 3 katına mal oldu.

Her bir alan için 200 belgeden gelen tam OCR metnini frontier bir modele gönderdim. Bu bir hataydı. Modelin ihtiyaç duymadığı veriler için ödeme yapıyordum.

Mimariyi yeniden tasarladım ve maliyetleri %40 oranında düşürdüm. Siz de aynısını şu şekilde yapabilirsiniz:

  1. Her şey için LLM kullanmayı bırakın

Textract; tarih ve toplam gibi yapılandırılmış alanları çıkarmada mükemmeldir. Ben, Textract'in halihazırda bitirdiği işi tekrar yapmak için Bedrock kullanıyordum.

Yeni akış üç aşamadan oluşuyor: • İşin büyük kısmında Textract kullanın. • Eksik alanları tamamlamak (gap-fill) için sadece eksik olanları Bedrock'a gönderin. • Son doğrulama çağrısı için Bedrock kullanın.

Eğer Textract eminse, Bedrock daha az iş yapar. Bu da token sayınızı anında düşürür.

  1. Prompt Caching kullanın

Alan tanımları ve şemalar için kullanılan sistem istemleri (system prompts) statiktir. Belgeler arasında değişmezler.

Amazon Bedrock bu istemleri önbelleğe almanıza olanak tanır. Bir partideki ilk çağrı için küçük bir ek ücret ödenir. O penceredeki sonraki her çağrı, normal fiyatın %10'una önbellekten karşılanır. Bu, girdi maliyetlerimi %20 oranında azalttı.

  1. Bağlamınızı (context) filtreleyin

Tam OCR yanıtını Bedrock'a göndermeyin.

• Eksik alan tamamlama (gap-fill) için: Sadece eksik alanlarla ilgili belirli OCR bloklarını gönderin. • Doğrulama için: Ham OCR'ı değil, çıkarılan değerleri gönderin.

Ayrıca istemlerimi (prompts) temizledim. Gereksiz talimatları çıkarmak, doğruluktan hiçbir ödün vermeden istem boyutumu 2.400 tokenden 1.100 tokene düşürdü.

  1. Modeli göreve uygun seçin

Her görev için Claude Sonnet kullanmayın. Sonnet, Haiku'dan 5 kat daha pahalıdır.

Onları belirli görevlerde test ettim: • Yapılandırılmış form eksik alan tamamlama: Haiku, Sonnet'in %2'si kadar doğruydu. Haiku'ya geçtim. • Yapılandırılmamış sözleşmeler: Haiku daha az doğruydu. Sonnet'te kaldım. • Doğrulama: Haiku iyi performans gösterdi. Haiku'ya geçtim.

Modelinizi tüm sisteme göre değil, görevin karmaşıklığına göre seçin.

  1. Uygulama katmanı önbelleğe almayı (application-layer caching) uygulayın

Şemanın ve Textract çıktısının bir hash'ini kullanarak DynamoDB'de bir önbellek ekledim. Kodunuzu optimize ederken aynı test setini birden fazla kez çalıştırıyorsanız, bu durum Bedrock çağrılarınızın %80 ila %90'ını ortadan kaldırır.

Kazanan mimarinin özeti: • Tekrarlanan işlemlerde Bedrock'ı atlamak için uygulama önbelleği. • Statik sistem talimatları için Bedrock prompt cache. • Mümkün olan yerlerde Haiku kullanmak için model katmanlandırması. • Sadece gerekli verileri göndermek için bağlam filtreleme.

Optimize etmeden önce token kullanımınızı ölçün. Veriler, parayı nerede boşa harcadığınızı size gösterecektir.

Kaynak: https://dev.to/yogieee/rag-architecture-for-saas-applications-using-amazon-bedrock-10df

İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi