Эфир 18.11 · Поток 318 ноября в 19:00 МСК — бесплатный практический эфир по ИИ-агентам · Живой Поток 3 стартует 23.11Эфир 18 ноября →Поток 3 (23.11)
Безопасность и правоAPI / Продукт · В работуAWS Machine Learning Blog→ оригинал

Bedrock Knowledge Base научили выбирать глубину поиска: от 0 вызовов LLM до агентного RAG

Раньше в Bedrock Managed Knowledge Base приходилось выбирать: агентный поиск с планированием или отдельный API для простых запросов. Теперь параметр maxAgentIteration в AgenticRetrieveStream принимает значения 0–5 и задаёт глубину. Значение 1 — классический RAG: один поиск и один вызов модели. Значение 0 — только пассажи без LLM, а 2–5 включают планирование с подзапросами.

AI-обработка оригинала AWS Machine Learning Blog; редакция Hamidun News
Bedrock Knowledge Base научили выбирать глубину поиска: от 0 вызовов LLM до агентного RAG
Источник: AWS Machine Learning Blog. Коллаж: Hamidun News.
Слушать статью
Паспорт материала и цифры
ПараметрДанные
ПервоисточникAWS Machine Learning Blog ↗
Главный редактор
Ключевой факт #10: только пассажи, ноль вызовов LLM, generateResponse=true даст 4xx
Ключевой факт #21: один поиск и один ответ — разумный дефолт для прямых вопросов
2–5до n−1 раундов планирования, последний шаг — генерация ответа

Утром сотрудник банка спрашивает внутреннего ИИ-ассистента, какие документы нужны для открытия счёта ИП. Ответ лежит в одном чек-листе. Днём он же спрашивает, чем отличаются требования для ИП, ООО и партнёрств с несколькими владельцами. Ответ размазан по нескольким регламентам. Ассистент один, а вопросы очень разные по сложности и по цене. Если на оба вопроса запускать тяжёлый агентный цикл, вы переплатите и потеряете в задержке. Если на оба делать один поиск, на сложном вопросе потеряете в точности.

AWS закрывает этот зазор в Amazon Bedrock Managed Knowledge Base. Раньше через AgenticRetrieveStream был доступен только агентный режим, теперь добавились ещё два.

Один параметр вместо двух API

Всё управляется через maxAgentIteration. Диапазон теперь 0–5, и от значения зависит поведение запроса.

0 — только поиск. Сервис делает один гарантированный поиск и ничего не генерирует. Вызовов foundation model нет, по сути это аналог обычного Retrieve API. Режим удобен тем, кто уже перешёл на AgenticRetrieveStream и не хочет переключаться на другой API ради запроса без генерации. Если при нуле выставить generateResponse=true, вернётся ошибка 4xx: для ответа нужна LLM.

1 — классический RAG. Один поиск, один вызов модели для ответа, никакого планирования и переписывания запроса. Пример из статьи: «Какие документы нужны для открытия бизнес-счёта ИП?». Чек-лист в базе есть, планировщик здесь только добавит задержку. Если большая часть трафика состоит из прямых и чётко очерченных вопросов, AWS намекает, что это ваш дефолт.

2–5 — агентный режим. Модель разбивает вопрос на подзапросы, ищет по каждому, оценивает, хватает ли найденного, и при необходимости уточняет поиск или подтягивает документ целиком. Значения 2–5 работают как раньше, существующие запросы не поломаются.

Как считаются итерации

Правило простое: одна итерация равна одному вызову foundation model. Последняя итерация всегда уходит на генерацию ответа. Поэтому значение n даёт до n−1 раундов планирования, а каждый раунд — это переписывание запроса плюс поиск.

Есть нюанс. Спекулятивный поиск, который запускается до первого шага планирования, в итерации не входит. Он не расходует лимит и может только ускорить запрос.

Отдельно AWS подчёркивает, что одиночный поиск не значит одну базу знаний. Все три режима, включая 0 и 1, работают с несколькими базами. Агентный режим добавляет декомпозицию вопроса, оценку найденных свидетельств и итеративный поиск, а мультибазность от него не зависит.

На примере банка это выглядит так. Для вопроса про чек-лист ИП ставим maxAgentIteration=1 и generateResponse=true. Для сравнения ИП и ООО с проверками нерезидентов ставим 4, то есть до трёх раундов планирования. Когда сотруднику нужен сам текст регламента, а не пересказ, ставим 0 и generateResponse=false, и приложение показывает пассажи со ссылками на источники. Переключение из агентного вызова в обычный RAG — правка одного числа в JSON.

Ограничения и что делать на практике

Главное: выбор режима остаётся на стороне вашего приложения. Автоматической маршрутизации по сложности вопроса здесь нет. Нужен либо простой роутер (по типу сценария, по эвристике, по маленькому классификатору), либо жёсткое закрепление режима за конкретным экраном или фичей.

Второе: формат ответа в режиме 0 отличается от прямого Retrieve. Дедуплицированные пассажи приходят в result-событии стрима без полей score и location. Если ваш интерфейс опирается на оценку релевантности или точную локацию фрагмента, проверьте это до миграции.

Третье: примеры с банком в статье иллюстративные. Замеров задержки, стоимости или качества AWS не приводит. Заявление, что single-shot снижает латентность и расход модели по сравнению с агентным режимом, логично, но цифр под ним нет. Не принимайте его на веру.

Практический план такой:

  • Соберите набор реальных вопросов с эталонными ответами из ваших документов.
  • Прогоните его через режим 1 и через текущую агентную конфигурацию на одной и той же базе знаний.
  • Замерьте задержку и стоимость запроса и проверьте, что ответы верны и подтверждены найденными пассажами.
  • Обязательно включите вопросы, на которые нужно собирать ответ из нескольких документов. Именно на них одиночный поиск обычно проседает.

Если агентный режим сейчас стоит у вас по умолчанию, велик шанс, что на простых запросах вы платите за планирование, которое ничего не даёт. Начинайте с низкого значения для простого трафика и поднимайте его там, где точность на сложных вопросах важнее скорости. Лимит итераций тоже нужно подбирать на своих данных: больше итераций не всегда значит лучше ответ.

Сюжет

Вопросы и ответы по материалу

Что известно по теме: один параметр вместо двух API?

Всё управляется через maxAgentIteration. Диапазон теперь 0–5, и от значения зависит поведение запроса. 0 — только поиск. Сервис делает один гарантированный поиск и ничего не генерирует. Вызовов foundation model нет, по сути это аналог обычного Retrieve API. Режим удобен тем, кто уже перешёл на AgenticRetrieveStream и не хочет переключаться на другой API ради запроса без генерации. Если при нуле выставить generateResponse=true, вернётся ошибка 4xx: для ответа нужна LLM. 1 — классический RAG.

Что известно по теме: как считаются итерации?

Правило простое: одна итерация равна одному вызову foundation model. Последняя итерация всегда уходит на генерацию ответа. Поэтому значение n даёт до n−1 раундов планирования, а каждый раунд — это переписывание запроса плюс поиск. Есть нюанс. Спекулятивный поиск, который запускается до первого шага планирования, в итерации не входит. Он не расходует лимит и может только ускорить запрос. Отдельно AWS подчёркивает, что одиночный поиск не значит одну базу знаний.

Что известно по теме: ограничения и что делать на практике?

Главное: выбор режима остаётся на стороне вашего приложения. Автоматической маршрутизации по сложности вопроса здесь нет. Нужен либо простой роутер (по типу сценария, по эвристике, по маленькому классификатору), либо жёсткое закрепление режима за конкретным экраном или фичей. Второе: формат ответа в режиме 0 отличается от прямого Retrieve. Дедуплицированные пассажи приходят в result-событии стрима без полей score и location.

ЖХ
Жемал Хамидун — CPO Alpina Digital, продакт-менеджер AlpinaGPT. Делает AI-продукты с 2019 года. Hamidun News — pet project, который вырос в production-агрегатор с 6000+ читателей.
✦ Закрытый клуб практиков · Vibe Club

Внедряйте ИИ быстрее рынка вместе с инженерами и фаундерами

Внутри Vibe Club (hamidun.com/club): еженедельные живые мастермайнды и разборы архитектуры с Жемалом Хамидуном, закрытый Tech Radar, LMS и обновляемая база из 370+ боевых скиллов.

Вступить в Vibe Club →Тест-драйв Академии (72ч)
Что вы думаете?
Загружаем комментарии…