Все ноды/AI/RAG

RAG-запрос

Выполняет семантический поиск по базе знаний и возвращает релевантный контекст. Принимает запрос через порт 'query' и KB через порт 'kb'. Результат передаётся в LLM для генерации ответа.

RAG-запрос▶
ЗапросКонтекст
База знаний
Вектор

Тип в графе: rag_query

Exec

Можно включить выход ошибки и обработать сбой отдельным путём.

Порты можно разделить на исполнение и данные (split ports).

Как попробовать

Минимальный рабочий сценарий

Вход
RAG-запрос▶
Выход▶
  • Исполнение + данные
Нажмите «Скопировать ноды», откройте редактор и нажмите Ctrl+V на холсте.

Перед запуском выберите своё подключение или базу знаний — в графе стоит REPLACE_ME.

Как применять

Берите RAG-запрос, когда контекст из базы нужен всегда: справочный ответ, поиск по документации, подстановка фрагментов в промпт перед генерацией. Поиск выполняется на каждом проходе, его результат предсказуем и виден в логе запуска. Если решение «искать или нет» должно принимать сама модель — это RAG-инструмент. Если нужно переранжировать уже найденное — поставьте следом Rerank.

Как это работает

Порт Запрос приносит и запуск ноды, и текст запроса. Когда в него приходит только исполнение, текст берётся из поля «Запрос» — шаблон вида {{ inputs.query }} или {{ nodes.x.output }}. Дальше запрос превращается в вектор и сравнивается с чанками базы.

На выходе — объект: context (склеенные чанки), chunks (массив с score, document_id, chunk_id и метаданными), query и kb_found. При формате text чанки склеиваются разделителем ---, при json в context кладётся сериализованный массив. Окно контекста добавляет к каждому попаданию соседние чанки того же документа, порог релевантности 0 означает «отдавать всё».

Порт Вектор принимает готовый вектор от ноды Embed Text — тогда запрос не эмбеддится второй раз. Вектор обязан быть посчитан той же моделью, что и база: иначе не совпадёт размерность.

Частые ошибки

  • Пустой результат принимают за поломку. kb_found: true с пустым context — база на месте, совпадений нет; false — базу не нашли (удалена или принадлежит другому пространству).
  • Весь объект уходит в промпт. В шаблоне берите {{ nodes.<id>.output.context }}, иначе модель получит JSON со score и метаданными вместо текста.
  • Ничего не подключено к порту «Запрос». Нода не запустится: у неё нет отдельного входа исполнения, запуск приходит именно этим портом.
  • Top K правят на ноде при подключённой Базе знаний. Тогда Top K, порог и окно контекста приезжают оттуда, а поля здесь неактивны.
  • Порог подняли «на всякий случай». Значения похожести зависят от модели эмбеддингов; начните с 0 и поднимайте, глядя на реальные score в логе.

Входы

ПортПроводДанныеПримечания
ЗапросqueryИсполнение + данныеexecute_data—

Текст поиска: подключённый порт заменяет шаблон в форме.

База знанийkbДанныеdata—

Нода базы знаний: база, число фрагментов, порог и окно перекрывают поля формы, а фильтры по метаданным объединяются с ними.

ВекторembeddingДанныеdata—

Готовый вектор запроса от ноды эмбеддингов — тогда текст запроса не векторизуется второй раз.

Выходы

ПортПроводДанныеПримечания
КонтекстoutputИсполнение + данныеexecute_dataobject

Настройки

ПолеТипПо умолчаниюОписание
Запросquery_templatestring{{inputs.query}}

Текст запроса. Поддерживает {{inputs.query}}, {{nodes.x.output}}

поддерживает шаблоны

База знанийkb_idstring""

База знаний, в которой выполняется поиск. Подключённая нода Knowledge Base задаёт это значение и перекрывает поле.

перекрывается портом: kb

Сколько фрагментов найтиtop_kinteger5

Максимальное число возвращаемых чанков. Подключённая нода Knowledge Base задаёт это значение и перекрывает поле.

перекрывается портом: kb

Формат выводаformatstringtext

text: чанки, объединённые через ---. json: массив с метаданными.

Варианты: text — Текст, json — JSON

Дополнительно
Порог релевантностиscore_thresholdnumber0

Минимальная схожесть, которую должен набрать чанк. Подключённая нода Knowledge Base задаёт это значение и перекрывает поле.

перекрывается портом: kb

Окно контекстаcontext_windowinteger0

Соседние чанки, включаемые вокруг каждого результата (0 = отключено). Подключённая нода Knowledge Base задаёт это значение и перекрывает поле.

перекрывается портом: kb

Фильтры метаданныхmetadata_filtersarray—

Жёсткие фильтры по метаданным чанков (AND). Операторы: = != < > <= >=. Объединяются с фильтрами подключённой ноды KB, а не заменяются ими.

Общие поля

Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.

  • expose_error_output — Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этой ноды.
  • split_ports_in — Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.
  • split_ports_out — Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.

Готовые примеры с этой нодой