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

Рекомендации по настройке базы знаний в Jay Knowledge Hub

В этой статье собраны рекомендации по подбору оптимальных параметров для всех этапов работы базы знаний:

  • Индексация: как правильно разбить документы на чанки.
  • Поиск: как находить информацию, максимально релевантные запросу.
  • Генерация: как генерировать точный и вежливый ответ.

Вы узнаете, как проверить работу базы знаний, определить причины неверных или неполных ответов и устранить их.

подсказка

Прежде чем начать, ознакомьтесь с основами работы Jay Knowledge Hub.

Общий алгоритм

Настройка базы знаний — итеративный процесс:

  1. Начните со стандартных настроек.
  2. Проверьте несколько запросов вручную.
  3. Если ответ некорректный — определите, на каком этапе проблема: перефразирование запроса, поиск или генерация ответа.
  4. Скорректируйте параметры для проблемного этапа.
  5. Запустите автоматическую оценку качества.
  6. Проанализируйте проблемные запросы и повторите цикл.
подсказка

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

Подготовка файлов перед загрузкой

Качество ответов базы знаний напрямую зависит от качества исходных данных. Чтобы база знаний работала корректно, следуйте правилам из раздела Загрузка файлов.

Настройка индексации

Индексация — это процесс преобразования документов в формат, в котором система сможет быстро искать информацию.

к сведению

Полный список настроек индексации приведен в справочнике.

Выбор векторизатора

  • text-embedding-3-large от OpenAI — обеспечивает небольшое улучшение качества поиска, особенно для текстов на русском языке.
  • intfloat/multilingual-e5-large — оптимальный выбор, если необходимо исключить передачу данных на внешние сервисы.

Выбор способа разделения текста

  • По длине — подходит для простых документов с однородной структурой (статьи, инструкции без сложного форматирования). Это самый быстрый и экономичный способ.
  • С помощью LLM — рекомендуется для документов с многоуровневыми заголовками, списками и сложным форматированием. Модель старается разбивать текст так, чтобы не терялся смысл.
подсказка

Если вы используете чанкинг с помощью LLM, после завершения индексации скачайте архив с чанками и проверьте их. Если фрагменты получились слишком короткими или обрывочными, попробуйте увеличить средний размер чанка до 1200–1500 токенов. Если результат не улучшился, переключитесь на способ «По длине».

Настройка поиска

На этом этапе система извлекает из базы знаний чанки, наиболее релевантные запросу пользователя.

к сведению

Полный список настроек поиска приведен в справочнике.

Выбор пайплайна

В большинстве случаев рекомендуем использовать семантический пайплайн: он обеспечивает высокое качество поиска и предоставляет гибкие возможности для настройки.

Перефразирование

В настройках доступны два варианта перефразирования.

  • Учет истории диалога — включите, если AI-ассистент должен поддерживать диалог с пользователем.

    Например, если пользователь сначала написал «здравствуйте, а есть банкомат на улице пушкина?», а потом «а на московской?», второй запрос будет заменен на «есть ли банкомат на улице Московской».

  • Перефразирование запроса — полезно, если поддержка диалога не требуется, а пользователи часто задают слишком короткие, неясные вопросы или пишут с ошибками.

Важно
  • Если включены обе опции, выполняется только перефразирование с учетом истории.
  • Каждое перефразирование — это дополнительный запрос к LLM, что увеличивает стоимость и время ожидания ответа.
  • На этап генерации передается перефразированный, а не оригинальный запрос.

Редактирование промта для перефразирования

к сведению

Для просмотра и редактирования промтов необходима роль KHUB_ADMIN.

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

  • Добавьте контекст: укажите информацию о компании или проекте.

    Пример для учета истории диалога: «Прочитай переписку клиента банка [Название] с оператором службы поддержки…»

  • Замените примеры исходного и перефразированного запроса на примеры из своей предметной области.

    Пример:

    USER_QUERY:
    "хочу вел с собой в самолет взять"

    IMPROVED_QUERY:
    """
    Перевозка спортивного инвентаря
    Правила и стоимость провоза велосипеда в самолете

    Похожие запросы:
    (1) как провезти велосипед в багаже
    (2) габариты спортивного инвентаря
    (3) перевозка негабаритного груза
  • Укажите дополнительные требования, если необходимо.

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

Настройка генерации

На этапе генерации LLM формулирует итоговый ответ на основе найденной информации.

к сведению

Полный список настроек генерации приведен в справочнике.

Редактирование системного промта

к сведению

Для просмотра и редактирования промта необходима роль KHUB_ADMIN.

Что включить в системный промт:

  • Роль AI-ассистента: «Ты — профессиональный консультант компании [Название]».
  • Инструкции на случай отсутствия данных: «Если в предоставленных текстах нет ответа, вежливо извинись и предложи написать на support@example.com».
  • Ограничения: «Не сравнивай нас с конкурентами», «Не отвечай на личные вопросы».
  • Форматирование: например, требование использовать списки или Markdown-разметку.

Настройки LLM

  • Чтобы база знаний давала более развернутые ответы, увеличьте Максимальное количество токенов в ответе.
  • Для всех расширенных настроек LLM (Top P, Presence penalty, Frequency penalty) рекомендуем оставить значения по умолчанию, за исключением случаев, когда создатели модели указывают другие параметры.

Проверка работы базы знаний

  1. Ручное тестирование: выполните 5–10 запросов в разделе Тестирование.

  2. Автоматизированная оценка: для получения объективной картины проведите оценку качества.

    • Размер тест-сета зависит от количества и объема документов-источников, но стандартный выбор — 3–5 вопросов на документ и 200–400 на всю базу знаний.
    • Для более объективной оценки выбирайте LLM из другого семейства. Например, для оценки качества ответов GPT-модели используйте модель из семейства Qwen, и наоборот.
  3. Анализ логов (для On-premise): если запрос обрабатывается некорректно, проверьте логи по requestId. Это поможет увидеть, как именно был перефразирован запрос, не возникло ли ошибки превышения контекстного окна и т. д.

Решение проблем

Чанки не найдены

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

  1. Постепенно увеличивайте Количество результатов поиска до 15, а Количество соседних чанков до 5. Посмотрите, появляется ли нужный чанк в результатах поиска.

    Обратите внимание: добавление чанков увеличивает размер запроса к LLM на генерацию ответа.

    • Чтобы исключить лишние данные из запроса, включите Повторное ранжирование чанков. Начните с режима «Эмпирическое». Если нужный чанк не попадает в итоговую выдачу, постепенно увеличивайте количество результатов поиска после переранжирования.
    • Чтобы LLM могла обработать запрос большего размера, может потребоваться повысить Максимальное количество токенов в запросе в настройках генерации.
  2. Подключите Полнотекстовый поиск (по ключевым словам). Рекомендуемый режим — Гибридный.

  3. Если в документах используются аббревиатуры, специфичные термины, названия продуктов, а в вопросах пользователей — различные вариации их написания, перечислите их в JSON-файле. Подробнее смотрите в разделе Аббревиатуры.

    Этот файл можно загрузить не только в настройки, но и как обычный источник в базу знаний.

Если эксперименты с настройками поиска не помогли, попробуйте следующее:

  1. Увеличьте размер чанка в настройках индексации.
  2. Включите опцию Обогащать чанки в настройках индексации и Поиск по метаданным чанков в настройках поиска.
  3. Если есть возможность, добавьте синонимичные формулировки в документы-источники (например, альтернативные варианты вопросов в список вопросов и ответов). Загрузите их в базу знаний, а предыдущие версии удалите.

После обновления источников и изменения настроек индексации переиндексируйте базу знаний.

Ответ неполный или неверный

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

Пошаговый пример настройки

Настроим базу знаний для интернет-магазина электроники. Вы увидите, как анализировать ответы, находить проблемы и подбирать оптимальные параметры.

Исходные данные

Допустим, у нас есть документ DOCX с информацией о смартфонах: описания товаров, характеристики, условия гарантии и доставки. Документ представляет собой таблицу, где в одном столбце — вопрос покупателя, в другом — ответ.

Поскольку обе колонки содержат текст, а не числовые данные, конвертировать документ в формат CSV нет смысла — агент на основе SQL здесь отработает плохо.

Шаг 1. Настройка индексации

  1. Загрузим документ в базу знаний.
  2. Выберем векторизатор. Если политика компании допускает передачу данных на внешние сервисы, будем использовать text-embedding-3-large от OpenAI.
  3. Выберем разбиение С помощью LLM — это позволит применить специальный чанкинг для больших таблиц.
  4. Оценим размер типичного вопроса и ответа в документе. Если это около 300–500 символов, установим размер чанка «с запасом» — 500 токенов.

Установим начальные параметры:

  • Количество результатов поиска: 5.
  • Количество соседних чанков: 3.

Шаг 3. Настройка перефразирования

Учет истории диалога включен в настройках поиска по умолчанию. Добавим в промт для учета истории информацию о проекте:

Прочитай историю диалога с покупателем интернет-магазина электроники и определи,
является ли запрос покупателя (USER_QUERY) продолжением диалога (HISTORY).
Если да, то переформулируй текущий вопрос (USER_QUERY) с учетом истории (HISTORY),
добавив ее в виде контекста; сделай вопрос более понятным, четким и структурированным,
добавь к вопросу похожие запросы и заголовок, верни текст с заголовком.

USER_QUERY:
"где мой заказ когда приедет телефон"

IMPROVED_QUERY:
"""
# Статус заказа и сроки доставки

Как отследить доставку смартфона и узнать дату прибытия

Похожие запросы:
(1) где мой заказ по номеру
(2) курьерская доставка сроки
(3) задержка доставки что делать
"""
<…>

Шаг 4. Настройка генерации

Отредактируем системный промт:

Ты — AI-консультант интернет-магазина электроники <…>.
Ты помогаешь покупателям искать информацию о товарах, доставке, гарантии и возврате.
Для этого у тебя есть доступ к базе знаний магазина.

Твоя задача — при помощи предложенной документации (DOCUMENTATION) ответить на запрос покупателя.
Твой ответ должен прямо отвечать на поставленный вопрос или запрос.

При формировании ответа соблюдай следующие правила:

- (1) Сначала найди в Документации (DOCUMENTATION) информацию, связанную с Вопросом (QUESTION).
- (2) Отвечай строго в соответствии с документами. Не придумывай ничего нового.
- (3) Если на Вопрос (QUESTION) существует более одного ответа, перечисли все возможные варианты.
- (4) Если прямого Ответа нет, а есть только информация по связанной теме, ответь ею.
- (5) Если ты не можешь найти ответ в документации, ответь "%NoAnswer%".
- (6) Отвечай на русском языке.
- (7) Тебе запрещается упоминать «документ» или «документацию» в своем ответе.
- (8) Если вопрос о доставке за пределы России, объясни, что доставка осуществляется
только по территории России и Беларуси.
- (9) Отвечай вежливо и дружелюбно.

Шаг 5. Ручное тестирование

Прежде чем запускать автоматическую оценку качества, проверим несколько запросов вручную.

Тест 1: запрос «смартфон про макс»

Ответ корректный — база знаний нашла информацию о линейке смартфонов Pro Max.

Тест 2: запрос «галакси»

База знаний ответила %NoAnswer%, хотя информация о линейке Galaxy в документации есть.

Анализ проблемы:

  1. Проверим результаты поиска — релевантный чанк найден.
  2. Посмотрим в логах, как был перефразирован запрос.

В данном случае вместо линейки смартфонов был добавлен контекст про галактику и космос. LLM не поняла, как отвечать на такой запрос.

Решение:

Уберем из промта для учета истории требование добавлять похожие запросы:

Прочитай историю диалога и определи, является ли запрос пользователя (USER_QUERY)
продолжением диалога (HISTORY). Если да, то переформулируй текущий вопрос (USER_QUERY)
с учетом истории (HISTORY), добавив ее в виде контекста;
сделай вопрос более понятным, четким и структурированным.

Пример:

HISTORY:
"""
user: привет я из новосибирска
System: Здравствуйте! Чем могу помочь? Если у вас есть вопросы о товарах или доставке,
задавайте!
"""

USER_QUERY: "хочу телефон забрать из магазина"

IMPROVED_QUERY:
"""
Как забрать заказ самовывозом в Новосибирске
"""

Если запрос не является продолжением диалога (HISTORY) или затрагивает новую тему,
в качестве своего ответа (IMPROVED_QUERY) верни только оригинальный запрос.
Отвечай только на русском языке.

Если история (HISTORY) пустая, всегда возвращай только оригинальный запрос (USER_QUERY).

----
HISTORY:
{history_str}

USER_QUERY:
{query_str}

{context_str}

IMPROVED_QUERY:

После изменения промта повторим тест — теперь ответ корректный.

Шаг 6. Автоматическая оценка качества

Сгенерируем тест-сет из 200–400 вопросов и запустим оценку качества.

Результат хороший, но есть проблемные запросы:

ВопросОжидаемый ответФактический ответ
Хочу оформить премиум-гарантию, куда обратиться?Оформить расширенную гарантию можно на сайте: https://example.com/warranty%NoAnswer%
Какие способы связи есть для покупателей из регионов?Вы можете позвонить на горячую линию 8-800-… или написать в чат на сайте%NoAnswer%
Условия возврата для товара без упаковки?Возврат возможен в течение 14 дней при сохранении товарного вида…%NoAnswer%

Шаг 7. Анализ проблемных запросов

Запрос «Хочу оформить премиум-гарантию, куда обратиться?»

  • Перефразирование отработало корректно.
  • Чанки про премиум-гарантию не найдены в результатах поиска.

Решение: увеличим Количество результатов поиска до 10.

После изменения чанк найден, ответ корректный.

Запрос «Какие способы связи есть для покупателей из регионов?»

  1. При 10 чанках нужная информация не найдена.
  2. Увеличим Количество результатов поиска до 15 — чанк появился, но 15 чанков — это много для LLM.

Решение: включим Повторное ранжирование с помощью модели и установим количество результатов 10.

Запрос «Условия возврата для товара без упаковки?»

Проверим с новыми настройками — ответ корректный.

Шаг 8. Итоговые настройки

После всех экспериментов:

  • Количество результатов поиска: 10.
  • Количество соседних чанков: 3.
  • Повторное ранжирование: с помощью модели.
  • Промт для учета истории: без расширения похожими запросами.

Сохраним настройки и повторно запустим оценку качества. Результат — качество заметно выросло.


Если у вас возникли сложности, свяжитесь с нами: support@just-ai.com.