1. Главная
  2. Блог
  3. pgvector отдаёт не тот фрагмент: что проверить в разработке ИИ-агентов до смены модели

pgvector отдаёт не тот фрагмент: что проверить в разработке ИИ-агентов до смены модели

pgvector отдаёт не тот фрагмент: что проверить в разработке ИИ-агентов до смены модели
Видео-версия3 мин · слайды, голос, субтитры
Открыть в VK Видео ↗

Менеджер спрашивает, можно ли отгрузить со скидкой без визы финансового директора. ИИ-агент отвечает уверенно и цитирует коммерческую политику. В файле на диске другая редакция: этот абзац заменили, когда порог согласования подняли. Модель здесь почти ни при чём. В разработку ИИ-агентов такой сбой приходит раньше спора о качестве: поиск по своим документам отдал устаревший фрагмент, а люди уже решили, что "агент тупой". Пока не ясно, какой кусок попал в ответ, менять модель рано. Это экономит круг переписывания инструкции тем, кто отвечает за внутренние регламенты, а не за витрину в интернете.

Сначала переписали инструкцию и промахнулись

Первый заход был привычный. Ужесточили формулировки, потребовали цитату дословно, на трёх дежурных вопросах ответ сел. На следующий день соседний вопрос снова вытащил отменённый пункт. Смотрели и на то, как по открытым страницам ищет Яндекс ИИ-агент: публичную норму он находит свежее, чем наша выгрузка месячной давности. Это не повод отдать ему внутренние папки. Чужие сайты он видит, нашей политики скидок у него нет.

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

Что именно лежит рядом с агентом

Документ режется на фрагменты, у каждого считается вектор, всё это живёт в PostgreSQL с расширением pgvector. На вопрос сотрудника считается такой же вектор, и в модель попадают не "все знания компании", а несколько ближайших кусков. Из них она и отвечает.

Дальше разработка ИИ-агентов упирается не в имя модели, а в поля, без которых фрагмент нельзя пускать в ответ: название документа, номер редакции, дата, с которой она действует, подразделение и пометка "архив". Без полей поиск умеет только про похожие слова. С полями он сначала отсекает старое и чужое, и только потом мерит близость.

Как чинится индекс, когда инструкция уже не помогает

Инструкцию агенту мы в тот раз почти не трогали. Разобрали конвейер документов.

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

Режем по правилу, а не по ровной длине. Один фрагмент - одно условие и его оговорка. Когда оговорка про визу финансового директора уехала в соседний кусок, агент бодро зачитывал общее разрешение. Когда в один кусок склеивали скидку и отсрочку, он цитировал середину и терял, к какой сделке это относится.

Ответ без опоры наружу не выходит. Если в отобранных фрагментах нет прямой формулировки, агент говорит, что в доступных документах этого нет, и отдаёт вопрос человеку. Дыра в базе - не повод додумывать порог скидки.

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

Где это снова ломается

Архив пометили в карточке документа и забыли в фильтре запроса. Для поиска он всё ещё живой.

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

Вопрос короче фрагмента. "Можно без визы?" цепляется за абзац, где виза обсуждается для другой схемы, например для маркетинговой акции. Лечится не настройкой случайности модели, а типом документа прямо в фрагменте: отгрузка, договор, рекламация.

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

Яндекс ИИ-агент эту дыру не закрывает. За справкой по открытым нормам его имеет смысл рассматривать только там, где это разрешает политика компании. Внутреннюю редакцию он не заменит, пока она не лежит в вашем индексе. Смешивать в одном ответе веб и корпоративную базу без подписи источника - способ снова процитировать не то.

Что заложить в своего агента

Фильтр стоит до поиска, а не после удачного ответа: редакция, срок действия, подразделение, доступ. Близость считается уже по очищенному набору.

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

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

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

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

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

Если агент уже спорит с файлом на диске, вы начнёте с новой инструкции или с вопроса, какая редакция сейчас лежит в pgvector?

Похожие статьи

Хотите так же?

Обсудим, как это внедрить у вас

Опишите задачу — подберём ИИ-решение под ваш процесс и бюджет: что сделать агентом, какие нужны данные и интеграции, с чего начать пилот.