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

Рекомендации по настройке базы знаний в 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.