Перейти к основному содержимому

Подключение баз знаний (RAG)

Использование баз знаний (RAG, от англ. Retrieval-Augmented Generation) — один из способов наделить AI-агента экспертизой в конкретной области.

Базы знаний позволяют агенту находить ответы в документах, статьях и других источниках. Благодаря этому он генерирует точные и релевантные ответы, основанные на ваших данных, а не на общих знаниях модели, которых может быть недостаточно.

Платформа Agent Platform имеет встроенную интеграцию с базами знаний, которые размещаются в Jay Knowledge Hub — платформе для создания, хранения и управления знаниями от компании Just AI. Если у вас есть аккаунт в Agent Platform, вы можете использовать его для доступа к Jay Knowledge Hub без дополнительной регистрации.

Создание подключения

Подготовьте в Jay Knowledge Hub базу знаний с документами, которые агент будет использовать для поиска ответов. Задайте необходимые настройки поиска релевантных фрагментов и генерации ответов — они будут использоваться при вызове функций из Agent Platform. Подробнее о создании базы знаний смотрите в документации Jay Knowledge Hub.

к сведению

Agent Platform и Jay Knowledge Hub поддерживают работу в нескольких аккаунтах — группах проектов. Вы можете использовать одинаковые или разные аккаунты в Agent Platform и Jay Knowledge Hub. Это будет влиять на способ подключения.

Выбор аккаунта в Agent Platform
  1. В левом меню перейдите в раздел Интеграции.

  2. Нажмите Подключить и выберите База знаний RAG.

  3. В поле Доступ к базе знаний выберите, как вы будете подключаться к базе знаний:

    • Текущий аккаунт — если база знаний находится в том же аккаунте Jay Knowledge Hub, что и проект в Agent Platform.
    • Другие учетные данные — если база знаний находится в другом аккаунте Jay Knowledge Hub.
  4. Заполните параметры в зависимости от выбранного способа подключения:

    • Выберите нужный проект с базой знаний из списка.
    • Укажите название интеграции — оно будет отображаться на странице с интеграциями.
  5. Нажмите Сохранить.

Интеграция появится в списке, и вы сможете выбрать ее в настройках функций Rag на холсте.

Использование в процессе

После создания интеграции вы сможете использовать встроенные функции Rag в конструкторе процессов:

  • retrieveChunks — ищет в базе знаний фрагменты документов, релевантные запросу. Полученные фрагменты можно передать агенту для генерации ответа или дополнительной обработки. В этом случае функцию нужно использовать как инструмент.
  • generateAnswer — генерирует ответ на вопрос на стороне Jay Knowledge Hub, используя базу знаний. Эту функцию лучше использовать как отдельный шаг в процессе.

Режим «Функция»

Базовый режим, чтобы использовать функцию как отдельный шаг в процессе.

  • Как работает: система вызывает выбранную функцию с заданными параметрами. Для получения результата в следующем блоке используйте метод Context.getLastFunctionResult().
  • Когда использовать: для задач, где вызов внешней системы — это четкий шаг в процессе. Например: «получить курс валют», «рассчитать доставку», «проверить статус заказа».

Настройка

  1. В левом меню перейдите в Конструктор.

  2. Выберите ФункцииВстроенныеRag.
  3. Перетащите функцию на холст.

    подсказка

    Чтобы добавить сразу все функции коллекции на холст, просто перетащите туда коллекцию.

  4. Укажите параметры функции. Вы можете ввести их вручную или использовать динамическую подстановку данных, например:

    • Для движка версии 2: ID этого канала: {{ request.botId}}.
    • Для версии 1: {{'ID этого канала: ' + Context.getBotId()}}.
  5. Если в вашем проекте движок версии 2, вы можете задать параметры на вкладке Поведение:

    • Время ожидания ответа: до 60 минут. Если выполнение функции не завершится за это время, будет зафиксирована ошибка.

    • Повторные попытки при ошибке: до 10 повторных вызовов.

      Например, если указать таймаут 20 секунд и количество повторных попыток 3, то суммарное время ожидания может составить до 80 секунд: 20×(1+3).

    • Возвращать указанное значение вместо ошибки: если функция не выполнится успешно после всех попыток, процесс не прервется, а на выход блока будет передано заданное значение (число, строка, JSON-объект, true/false или null).

Пример

  1. Добавьте на холст:
    • триггер Сообщение;
    • функцию Rag.generateAnswer();
    • функцию Reactions.sendText().

    Соедините их последовательно.

  2. В настройках функции Rag.generateAnswer():
    • выберите из списка интеграцию с базой знаний;
    • в параметре query укажите значение
      • для движка версии 2: {% if request.query %} {{ request.query }} {% else %}Чем ты можешь помочь?{% endif %};
      • для версии 1: {{ Context.getMessageContent().text || "Чем ты можешь помочь?" }}.
  3. В настройках функции Reactions.sendText() укажите значение:
    • для движка версии 2: {{ previousResult.response }};
    • для версии 1: {{ Context.getLastFunctionResult().response }}.

Такой процесс передает запрос пользователя в базу знаний, а ответ базы знаний возвращает пользователю.

Режим «Инструмент»

Используется совместно с блоком Агент, позволяя AI самостоятельно решать, когда вызывать функцию.

  • Как работает: вы не вызываете функцию напрямую — она становится «инструментом» для агента. Агент сам решает, когда и как ее использовать, исходя из диалога с пользователем.
  • Когда использовать: для гибких систем, где агент взаимодействует с внешним миром: например, «забронируй переговорную» или «какой у меня баланс?».
подсказка

Подробнее о настройке функций в режиме инструмента смотрите в разделе про блок «Агент».

Вызов в коде

Функцию можно вызвать:

  • Из выражений в блоках Код и Условие. Пример смотрите в разделах Код и Условие.

  • Из кода других (пользовательских) функций.

  • Из параметров других JavaScript-функций (только если в вашем проекте движок версии 1).

    Пример
    Вызов функции в параметре

При вызове функций указывайте коллекцию, например:

// Вызов функции generateAnswer из коллекции Rag
Rag.generateAnswer();

При вызове встроенных функций передавайте аргументы:

  • Для движка версии 2 — в виде объекта, например:

    AgentContext.putValue({key: "lastOrder", value: order});
  • Для версии 1 — позиционно, например:

    AgentContext.putValue("lastOrder", order);
примечание

Из JavaScript-кода нельзя вызывать Python-функции, и наоборот.

Сохранение результата в контекст

Результат выполнения блока функции можно записывать в служебную память, используемую агентами. Подробнее смотрите в разделе Управление контекстом агентов.