Агентный RAG
Автор: Ai Flowi · Опубликовано
Агентный RAG — генерация с дополнением извлеченными данными, в которой агент решает, когда получать подтверждения и как использовать их для решения задачи. Фиксированный процесс RAG извлекает данные по заранее заданному пути; агентная схема предоставляет извлечение как инструмент. Начните с фиксированного извлечения, затем рассматривайте агента, если вопросы требуют разных поисков или уточнения.
Это руководство предлагает ограниченный инструмент извлечения в AI Flowi Workflow и процедуру сравнения. Контракты компонентов документированы в каталоге; Ai Flowi не тестировала их в производственной среде. Для связки инструмента извлечения с формированием ответа здесь нет зафиксированного результата выполнения.
1. Определите, что разрешено решать агенту
Задайте Agent узкую задачу: отвечать на вопросы по одной утвержденной базе знаний, указывать подтверждающие источники и останавливаться при отсутствии подтверждений. Оставьте загрузку документов, разрешения и обновления вне этой задачи. Извлеченный документ — сведения для изучения, а не разрешение запускать другой инструмент или менять процесс. Запишите это различие в system_prompt и проверьте на документе с текстом, похожим на инструкции.
Используйте существующее руководство по настройке базы знаний для создания и проверки базы. Эта схема начинается после подготовки корпуса. Запишите, какие версии документов допустимы и какие вопросы требуют уточнения. Если каждому запросу нужен один и тот же единственный поиск, схема чат-бота по базе знаний дает более простой путь для сравнения.
2. Подготовьте аккаунты и процесс только для извлечения
Вам нужны доступ к конструктору, заполненная база знаний, учетные данные ее провайдера эмбеддингов и настроенный провайдер языковой модели. Используйте собственный аккаунт и API-ключ провайдера, если они необходимы; провайдер взимает отдельную плату за использование. Настройте учётные данные по руководству о моделях, не помещая секреты в описание инструмента или промпт.
Соберите поисковую часть по документированному пути извлечения Knowledge Base, затем проверьте сопоставление запроса и возвращаемых данных загруженного процесса до превращения его в инструмент.
Отдельный выбор в этой схеме — объем разрешенного переформулирования запроса агентом. Рассмотрим учебный вопрос о возможности оставить оборудование при продлении срока размещения. Полезный поиск должен включать и оборудование, и продление; замена его общим вопросом о возврате может исключить условие, вызвавшее запрос. Сохраните первоначальный запрос рядом с предложенной формулировкой поиска и проверьте сохранность предмета и условия. Переформулирование должно устранять разговорную неоднозначность, не определяя заранее ответ по правилам.
3. Опишите инструмент и его границы
Настройки ограниченного извлечения: пример конфигурации, а не запись о проведённом тесте
| Компонент | Входные поля каталога для настройки | Проверка до продолжения |
|---|---|---|
| Knowledge Base | knowledge_base: ваш утвержденный корпус; top_k: 4; include_metadata: true. | Проверьте наличие текста фрагментов и идентификаторов источников в Results; четыре — иллюстративное число кандидатов. |
| Flow as Tool | flow_name: выберите сохраненный процесс извлечения; tool_name: policy_lookup; tool_description: поиск утвержденных фрагментов правил для одного вопроса; return_direct: false. | Проверьте сопоставление аргумента запроса и фактическую структуру возврата. В описании экспортируемых входных полей не документированы ни сопоставление аргумента запроса, ни структура возвращаемых данных. |
| Agent | model: настроенное подключение LanguageModel; tools: Tool для извлечения; max_iterations: 3; system_prompt: правила работы с подтверждениями ниже. | Число итераций — настройка испытания, а не измеренный бюджет вызовов или проверенная гарантия завершения. |
При подключении сохраненного инструмента извлечения соблюдайте требования к типу подключаемого инструмента из справочника входов Agent.
Сравните две возможные ошибки на этой границе: описание инструмента может быть слишком широким для выбора запроса или настолько узким, что агент не выбирает его для перефразированного вопроса. Сохраняйте один и тот же процесс, меняя только описание. Проверьте, становится выбранный запрос конкретнее, менее конкретным или остается прежним; новое описание, которое лишь дает более длинный ответ, не продемонстрировало полезного решения о поиске.
4. Отделите инструкции для поиска от инструкций для формирования ответа
После извлечения используйте требования к обоснованию ответа источниками из руководства по чат-боту на базе знаний; добавьте следующие инструкции выбора запроса для этого агентного испытания.
Before search, identify the requested subject and condition.
Ask the user to resolve an unstated subject before building a query.
Carry the subject and condition into the retrieval argument.
Do not rewrite a question into an assumed policy answer.
If another search is proposed, state which missing fact it seeks.
Задайте этот текст в Agent.system_prompt. Пусть tool_description описывает область поиска и возвращаемые подтверждения, а не обещает решить любой вопрос. Полезное описание отличает поиск правил от посторонних действий. Не подключайте к этому эксперименту инструменты записи или внешних сообщений: они добавляют разрешения, которых не требует задача извлечения.
Используйте оценку ИИ-агента для фиксации наблюдений за инструментами и обозначения ненаблюдавшегося поведения.
Для этой задачи решающее наблюдение — фактический поисковый запрос, полученный процессом извлечения. Хорошо написанный итоговый ответ не показывает, дошло ли до этого запроса условие продления. Сохраните полученный загруженным процессом аргумент рядом с исходным запросом; это также отличает плохое переформулирование агентом от правильного переформулирования, потерянного при привязке инструмента.
5. Сравните с фиксированным извлечением на одинаковых вопросах
Используйте один и тот же корпус, модель, инструкции по подтверждениям и набор вопросов для обеих схем. В фиксированном пути передавайте вопрос непосредственно в Knowledge Base.search_query. В агентном пути передавайте его в Agent.input_value. Сохраняйте фактически извлеченные фрагменты и итоговый ответ каждой попытки, чтобы отличать изменение извлечения от изменения генерации.
| Испытание запроса | Какое решение агента проверить | Сравнение с фиксированным путем |
|---|---|---|
| Вопрос об оборудовании с условием продления | Сохраняет ли переформулирование и предмет, и условие? | Сравните фрагменты с возвращенными для первоначальной формулировки. |
| Местоимение без явно указанного объекта, к которому оно относится | Происходит ли уточнение до построения аргумента поиска? | Не сравнивайте вопрос с неясным значением местоимения с полностью определенным запросом агента. |
| Длинный вопрос с сопутствующими подробностями | Какие подробности удалены и меняет ли какая-либо из них применимость? | Сохраняйте исходный полный запрос как базу сравнения. |
| Поиск не дает пригодного фрагмента | Меняет ли дополнительный запрос смысл вместо простого повторения? | Фиксируйте повторные поиски отдельно от новых подтверждений. |
Записывайте, произошло ли извлечение, соответствовал ли его запрос задаче и остановился ли агент должным образом. Отточенный ответ может скрывать нерелевантный поиск. Используйте оценку RAG, чтобы отдельно оценить, насколько найденные фрагменты охватывают вопрос и насколько ответ опирается на источники; не объявляйте агентный вариант лучшим лишь потому, что он выполнил больше поисков.
6. Когда агентное извлечение излишне?
Сохраняйте общие проверки разрешений инструментов и остановки в оценке ИИ-агента вместе с этим сравнением извлечения.
Выбирайте фиксированный путь, если агент снова и снова строит уже имеющийся у вас запрос. Выбирайте уточнение до любого из путей, если предмет вопроса пользователя не определен. Рассматривайте извлечение через выбранный инструмент только тогда, когда сохраненные наблюдения показывают полезное различие в выборе запроса для той же задачи. Решение относится к вашим вопросам; дополнительные поиски сами по себе не оправдывают еще одно решение модели.
Каталог не определяет привязку аргументов Flow as Tool, поведение Agent при достижении предела итераций, автоматические повторы или восстановление после сбоев. Изучите справочник Agent, чтобы проверить ограничения этих полей. Если в вашей среде нельзя наблюдать выбор инструмента и возвращенные подтверждения, сохраняйте фиксированный путь извлечения до устранения неопределенности. Повторные вызовы модели и извлечения также добавляют работу; измерьте использование ресурсов до выбора схемы.
Планирование использования ресурсов
Тарифы: Go от USD8 в месяц при годовой оплате (USD10 помесячно), Plus от USD16 (USD20 помесячно), Pro 100 от USD80 (USD100 помесячно), Pro 200 от USD160 (USD200 помесячно) и Pro 500 от USD400 (USD500 помесячно), от 5,000 до 250,000 Flowi Tokens в месяц с возможностью пополнения; 1 токен за каждый запуск узла; использование сторонних API и моделей не включено.
Считайте узлы, фактически выполненные при каждой попытке поиска и ответа. Настройка итераций не является оценкой оплаты, а токены модели — отдельная единица, отличная от выполнений узлов рабочего процесса.