Как передать базу знаний агенту так чтобы он реально ей пользовался
Загрузить документы в векторную базу это 30% работы. Остальные 70% это как сделать так чтобы агент искал в них правильно.
Самое частое разочарование
Клиент отдаёт мне гору документов. PDF с инструкциями. Тексты на сайте. Файлы с прайсами. Я всё это загружаю в базу знаний агента. Запускаем, спрашиваем что-то простое. Агент не находит.
Это происходит в 90% случаев на первой попытке. Не потому что я плохо настроил, а потому что просто загрузить документы недостаточно. Нужно их подготовить.
Подготовка документов это отдельная работа
Я делю документы на три типа.
Первый: чистый текст с хорошей структурой. Инструкции, FAQ, описания продуктов. Тут надо просто разбить на разумные куски и загрузить.
Второй: таблицы. Прайсы, характеристики товаров. Таблицы плохо ищутся в векторной базе если их загрузить как простой текст. Я конвертирую их в структурированные записи где каждая строка становится отдельным документом с метаданными.
Третий: сканы и PDF с неудобной вёрсткой. Юридические документы, старые инструкции. Тут сначала OCR, потом очистка мусора от OCR, потом структурирование. Это самый дорогой шаг, но без него агент будет отвечать ерунду.
Как я разбиваю на куски
Не по числу символов. Это ошибка которую делают почти все туториалы в интернете.
Я разбиваю по смыслу. Если документ структурирован по параграфам, беру параграф как основу. Если параграф слишком большой, режу его по предложениям с перекрытием. Если маленький, объединяю с соседним.
Размер куска я держу в диапазоне 300-800 токенов. Меньше этого агент теряет контекст. Больше этого агент получает слишком много шума в одном запросе.
Метаданные которые спасают
К каждому куску документа я добавляю метаданные. Источник документа. Дата обновления. Категория (продукт, политика, инструкция). Язык.
На запросах я фильтрую по метаданным. Если клиент спрашивает про доставку, я ищу в кусках с категорией "политика" или "доставка", а не во всей базе.
Это драматически улучшает качество. Я видел проекты где переход от "ищем везде" к "ищем с фильтрами" поднял точность с 60% до 90% без изменения модели.
Как я учу агента пользоваться найденным
В промпте агента я явно говорю: отвечай только на основании предоставленных фрагментов. Если ответа нет в них, признай это и передай человеку.
Это кажется очевидным но многие пропускают этот шаг. Без такого указания LLM начинает комбинировать найденное со своими общими знаниями и выдаёт гибрид который звучит правдоподобно но не соответствует документам клиента.
Я также прошу агента указывать источник в ответе. Не в тексте для клиента, а в логе. Это позволяет мне потом проверить откуда агент взял каждый ответ.
Обновление базы
Документы клиента меняются. Прайс раз в месяц. Политики реже. Инструкции иногда. Я делаю автоматическую ресинхронизацию: агент каждую ночь проверяет изменились ли источники и перезагружает то что обновилось.
Без автоматической ресинхронизации через полгода база протухает и никто не замечает пока клиент не скажет "а почему бот отвечает устаревшее".
Что делать если агент всё равно плохо ищет
Проверить три вещи.
Первое: эмбеддинги. Для русского языка берите мультиязычные модели, тестируйте их на реальных запросах клиента.
Второе: размер чанков. Если куски слишком большие или слишком мелкие, всё работает плохо.
Третье: формулировки запросов. Клиент может задавать вопросы так, что они не совпадают с формулировками в документах. Тут помогает reformulation: первый шаг агента переформулирует вопрос клиента в форму близкую к тому как написано в базе.
Как это начать у себя
Не сразу всю базу. Начни с 20-30 самых важных документов. Сделай поиск работающим на них. Потом добавляй остальное порциями проверяя качество.
Хочешь чтобы я помог подготовить твою базу знаний для агента, пиши в t.me/kulmashev. Это конкретная задача с конкретной ценой.
Готовы внедрить эти решения в свой бизнес?
Запишитесь на бесплатный разбор ваших бизнес-процессов.
Связаться с нами