Архітектура RAG для SaaS-додатків з використанням Amazon Bedrock

Мій перший виробничий пакет на Autowired.ai коштував утричі більше мого бюджету.

Я надсилав повний OCR-текст із 200 документів передовій моделі для кожного окремого поля. Це було помилкою. Я платив за дані, які моделі були не потрібні.

Я переробив архітектуру і скоротив витрати на 40%. Ось як ви можете зробити так само.

  1. Припиніть використовувати LLM для всього підряд

Textract чудово справляється з вилученням структурованих полів, таких як дати та підсумкові суми. Я використовував Bedrock, щоб переробляти роботу, яку Textract уже виконав.

Новий процес складається з трьох етапів: • Використовуйте Textract для основної частини роботи. • Надсилайте до Bedrock лише відсутні поля для заповнення пропусків (gap-fill). • Використовуйте Bedrock для фінальної перевірки.

Якщо Textract впевнений у результаті, Bedrock виконує менше роботи. Це миттєво зменшує кількість ваших токенів.

  1. Використовуйте кешування промптів (Prompt Caching)

Системні промпти для визначення полів і схем є статичними. Вони не змінюються від документа до документа.

Amazon Bedrock дозволяє кешувати ці промпти. За перший виклик у пакеті ви платите невелику надбавку. Кожен наступний виклик у межах цього вікна використовує кеш за 10% від звичайної ціни. Це зменшило мої витрати на вхідні дані на 20%.

  1. Фільтруйте свій контекст

Не надсилайте повну відповідь OCR до Bedrock.

• Для заповнення пропусків: надсилайте лише конкретні OCR-блоки, пов'язані з відсутніми полями. • Для перевірки: надсилайте вилучені значення, а не сирий OCR-текст.

Я також почистив свої промпти. Видалення зайвих інструкцій зменшило розмір мого промпту з 2400 токенів до 1100 токенів без жодної втрати точності.

  1. Підбирайте модель під завдання

Не використовуйте Claude Sonnet для кожного завдання. Sonnet у 5 разів дорожчий за Haiku.

Я протестував їх на конкретних завданнях: • Заповнення пропусків у структурованих формах: точність Haiku становила лише 2% від точності Sonnet. Я перейшов на Haiku. • Неструктуровані контракти: Haiku був менш точним. Я залишився на Sonnet. • Перевірка: Haiku показав себе добре. Я перейшов на Haiku.

Обирайте модель залежно від складності завдання, а не всієї системи.

  1. Впровадьте кешування на рівні додатка

Я додав кеш у DynamoDB, використовуючи хеш схеми та результатів Textract. Якщо ви кілька разів запускаєте один і той самий тестовий набір під час налагодження коду, це усуває від 80% до 90% ваших викликів Bedrock.

Підсумок архітектури-переможця: • Кешування на рівні додатка, щоб пропускати Bedrock при повторних запитах. • Кешування промптів Bedrock для статичних системних інструкцій. • Рівневе використання моделей (model tiering), щоб використовувати Haiku там, де це можливо. • Фільтрація контексту, щоб надсилати лише необхідні дані.

Вимірюйте свої токени перед оптимізацією. Дані покажуть вам, де ви марно витрачаєте гроші.

Джерело: https://dev.to/yogieee/rag-architecture-for-saas-applications-using-amazon-bedrock-10df

Додаткова спільнота для навчання: https://t.me/GyaanSetuAi