Эмбеддинг — это перевод куска текста в набор чисел, устроенный так, что близкие по смыслу куски получают близкие наборы. Векторная база данных — хранилище таких наборов, которое умеет быстро отвечать на вопрос «какие фрагменты ближе всего к вот этому». Вместе они дают поиск по смыслу: система находит нужный пункт регламента по фразе, в которой нет ни одного слова из этого пункта.
В коммерческом предложении оба термина обычно схлопываются в одну строку — «векторное хранилище, 180 000 ₽». Строка вводит в заблуждение: собственно хранилище и расчёт чисел стоят копейки, а деньги уходят на подготовку документов и на конвейер, который будет поддерживать базу в актуальном состоянии после запуска. Разница между этими двумя пониманиями и есть главный сюжет статьи.
Дальше — модельные расчёты по состоянию на сентябрь 2026 года: база из 1 200 документов, ставка инженера 3 000 ₽/час. Механику самого поиска, его слабые места и гибридную схему мы подробно разбирали в материале про эмбеддинги и векторный поиск; здесь — словарный разбор: что это, во что превращается в смете и какой вопрос задать подрядчику.
Поиск по словам и поиск по смыслу: один запрос, два результата
Проще всего понять разницу на живом обращении. Клиент пишет в поддержку: «не приходит акт». В регламенте компании этой формулировки нет — там написано «при отсутствии закрывающего документа более 10 рабочих дней менеджер инициирует повторную отправку через оператора ЭДО». Ни одного общего слова, кроме предлогов.
| Запрос клиента | Что найдёт поиск по словам | Что найдёт поиск по смыслу |
|---|---|---|
| «не приходит акт» | Ничего или случайные документы, где встречается слово «акт»: акт сверки, акт списания | Пункт про отсутствие закрывающего документа и повторную отправку через оператора ЭДО |
| «счёт № 4417 от 12.08» | Ровно этот счёт — точное совпадение по номеру | Похожие по формулировке счета других периодов; нужный может не попасть в первую пятёрку |
| «можно вернуть через месяц» | Ничего: в регламенте написано «в течение 14 календарных дней» | Пункт про четырнадцатидневный срок возврата |
Из таблицы видно и обратную сторону: там, где в запросе есть точный идентификатор, обычный текстовый индекс работает лучше и стоит на порядок дешевле. Поэтому рабочий стандарт — оба механизма сразу, а не замена одного другим. Если подрядчик предлагает выбросить полнотекстовый поиск, потому что «теперь есть векторный», это повод задать вопросы.
Числовое представление фрагмента текста: несколько сотен или тысяч чисел, вычисленных отдельной небольшой моделью. Бизнесу даёт поиск по смыслу вместо поиска по совпадению слов. В смете превращается в строку на несколько десятков рублей машинного счёта — и в десятки часов работы вокруг неё. Проверочный вопрос подрядчику: какая модель эмбеддингов используется, зафиксирована ли она по имени и версии в договоре.
Две горизонтальные дорожки от общего блока слева. Общий блок — реплика в рамке «не приходит акт». Верхняя дорожка подписана «Поиск по словам» и ведёт к трём листам с подписями «акт сверки», «акт списания», «ничего подходящего». Нижняя дорожка подписана «Поиск по смыслу» и ведёт к одному листу с подписью «отсутствует закрывающий документ более 10 рабочих дней — повторная отправка через оператора ЭДО», лист выделен рамкой. Тонкие чертёжные линии, подписи по-русски.
Что происходит с вашим архивом: четыре шага
Между папкой с документами и работающим поиском лежат четыре операции. Три из них разовые, четвёртая повторяется всю жизнь системы — и именно её чаще всего забывают заложить в бюджет.
- 1Архив режут на фрагменты
1 200 документов превращаются примерно в 9 000 фрагментов, средний фрагмент — около 700 токенов, то есть примерно полстраницы. Резать надо по смысловым границам: по пунктам регламента, по разделам договора, а не через каждые N символов.
- 2Каждый фрагмент прогоняют через модель эмбеддингов
На выходе — набор чисел на фрагмент. Это единственный шаг, который тарифицируется по объёму: порядка 0,02 ₽ за 1 000 токенов, то есть около 126 ₽ на весь архив из примера.
- 3Числа кладут в хранилище и строят индекс
9 000 наборов по тысяче с небольшим чисел занимают около 35 МБ — меньше, чем одна презентация. Индекс нужен, чтобы поиск ближайших занимал миллисекунды, а не секунды.
- 4Конвейер обновления запускают и не выключают
Правку регламента надо заметить, пересчитать фрагменты изменённого документа и убрать из базы старую редакцию. Без этого шага система месяцами отвечает по отменённому документу — и делает это уверенно.
Хранилище наборов чисел с быстрым поиском ближайших. В российской практике это чаще всего расширение pgvector к обычной PostgreSQL, а не отдельный продукт. Бизнесу даёт то, ради чего всё затевалось, — ответ «вот пять фрагментов, ближе всего подходящих к вопросу». В смете — 6–10 часов на развёртывание и схему, если база уже есть. Проверочный вопрос: где физически лежит хранилище и входит ли оно в контур, который вы уже аттестовали по 152-ФЗ.
Во что это превращается в смете
Ниже — разовые работы по модельному проекту. Обратите внимание на последнюю строку: расход, который в презентациях называют главным, составляет одну тысячную от суммы.
Тысячекратный разрыв между строками — не курьёз, а рабочий ориентир при чтении коммерческого предложения. Если подрядчик обосновывает цену «стоимостью векторного хранилища», он либо не разбирается, либо рассчитывает, что не разбираетесь вы. Правильное обоснование звучит иначе: столько-то часов на разбор архива, столько-то на правила нарезки, столько-то на конвейер обновления.
Регулярная часть скромнее, но она есть всегда. Если в месяц правится около 200 документов, это примерно 1 500 фрагментов и 1,05 млн токенов — 21 ₽ машинного счёта. Плюс 4 часа работы владельца базы: решить, какая редакция действующая, и убрать отменённую. При полной стоимости часа сотрудника 700 ₽ это 2 800 ₽ в месяц. Кто именно этот человек и что входит в его обязанности — тема отдельного разбора про владельца базы знаний.
Диаграмма из двух групп столбцов на общей рублёвой шкале. Левая группа «Разово»: высокий столбец «Работа людей, 42 ч — 126 000 ₽» и почти невидимая полоска рядом «Эмбеддинги — 126 ₽» с выноской. Правая группа «Каждый месяц»: столбец «Владелец базы, 4 ч — 2 800 ₽» и полоска «Переиндексация правок — 21 ₽» с выноской. Внизу подпись «модельный проект: 1 200 документов, 9 000 фрагментов, сентябрь 2026». Тонкие чертёжные линии, подписи по-русски.
Хранилище — не покупка, а конвейер
Главная ошибка в планировании бюджета: векторную базу закладывают как разовую покупку. На деле после запуска остаются три регулярные обязанности, и все три требуют человека, а не только машинного времени.
- Переиндексация изменённых документов. Поправили регламент — фрагменты этого документа надо пересчитать заново. Автоматизируется, но кто-то должен отслеживать, что автоматика отработала.
- Удаление отменённых редакций. Самый недооценённый пункт: система не понимает, что документ отменён, если его файл остался в папке. Отменённый регламент продолжает находиться и продолжает попадать в ответы.
- Полная переиндексация при смене модели эмбеддингов. Старые и новые числа несопоставимы, база пересчитывается целиком. Сам пересчёт стоит те же 126 ₽, а вот повторная настройка порогов и повторный замер качества — 25 000–40 000 ₽.
Если в тексте документа нет строки «редакция от такого-то числа», ни человек, ни система не отличат действующую версию от прошлогодней. Требование «каждый документ в базе несёт дату редакции и признак действующей» надо ставить до загрузки архива, а не после первого спорного ответа клиенту. Как готовить документы к загрузке — в материале про данные перед внедрением.
Где ошибаются при нарезке
Качество поиска определяется не моделью, а границами фрагментов. Три ошибки нарезки встречаются почти в каждом первом проекте и все три видны по симптомам в ответах.
| Ошибка нарезки | Как проявляется в ответах | Что делают |
|---|---|---|
| Фрагменты слишком крупные — по 3–4 страницы | Ответ размытый: в найденном куске есть и нужное правило, и три соседних | Режут по пунктам и подпунктам, ориентир — 500–900 токенов на фрагмент |
| Фрагменты слишком мелкие — по одному абзацу | Условие найдено, а исключение из него осталось в соседнем фрагменте и в ответ не попало | Делают перекрытие фрагментов и тянут вместе с фрагментом его пункт целиком |
| Заголовки разделов потеряны при нарезке | Найден пункт «срок — 5 рабочих дней», но неясно, к какому процессу он относится | К каждому фрагменту добавляют путь: название документа, раздел, номер пункта |
| Приложения и допсоглашения не связаны с основным документом | Найден основной текст договора, а действующее условие живёт в приложении № 2 | Связывают документ с приложениями при загрузке и выдают их вместе |
Три вертикальные колонки, в каждой — один и тот же лист документа с разной разметкой. Колонка 1 «Слишком крупно»: лист разделён одной линией на два больших блока, подпись «3–4 страницы в куске». Колонка 2 «Слишком мелко»: лист разлинован на восемь тонких полос, у одной полосы выноска «исключение осталось снаружи». Колонка 3 «По пунктам»: лист разделён на четыре блока по границам пунктов, у каждого блока слева ярлык с подписью «документ — раздел — пункт», внизу подпись «500–900 токенов». Тонкие чертёжные линии, подписи по-русски.
pgvector: почему в России чаще всего берут именно его
Для компании, у которой уже работает PostgreSQL, отдельное векторное хранилище обычно избыточно. Расширение pgvector ставится в ту же базу, попадает в тот же бэкап, в тот же контур доступа и в ту же аттестацию по 152-ФЗ. Для архива до нескольких сотен тысяч фрагментов этого достаточно с большим запасом: наш модельный пример на 9 000 фрагментов нагружает такую базу примерно никак.
Отдельное специализированное хранилище имеет смысл обсуждать, когда фрагментов миллионы, когда поиск идёт под серьёзной нагрузкой или когда векторную часть надо изолировать от учётной базы по требованиям безопасности. Во всех остальных случаях новая система в контуре — это дополнительный сервер, дополнительный бэкап и дополнительный предмет для разговора с проверяющим. Если решение всё-таки разворачивается в собственном контуре, полезно заранее прочитать разбор про подготовку базы знаний для RAG — большая часть работы там, а не в выборе хранилища.
И ещё одно про контур: векторное хранилище содержит ваши документы в переработанном виде, но это по-прежнему ваши документы. Если в базе лежат договоры с персональными данными, требования 152-ФЗ распространяются и на неё. Российское облако или свой сервер — вопрос, который решается до выбора модели эмбеддингов, а не после.
Четыре вопроса подрядчику
- 1Кто и как часто переиндексирует базу? Нужен ответ вида «автоматически раз в сутки для изменённых файлов, полная переиндексация по кнопке». Ответ «по мере необходимости» означает, что этого не делает никто.
- 2Что происходит при замене регламента? Проверяется на приёмке отдельным сценарием: заменили документ, задали контрольный вопрос, получили ответ по новой редакции. Если старая редакция всё ещё находится — работа не сдана.
- 3Как убедиться, что отменённый документ больше не находится? Должен быть способ спросить систему «на каких фрагментах построен этот ответ» и увидеть источник. Без показа источников проверить базу невозможно в принципе — этот вопрос мы разбираем и в статье про RAG.
- 4Зафиксирована ли модель эмбеддингов в договоре и за чей счёт пересчёт при её смене? Через год провайдер объявит версию устаревшей, и разговор о том, кто платит за перенастройку и повторный замер, лучше вести заранее.
Когда векторная база не нужна
Есть три ситуации, в которых 126 000 ₽ на векторное хранилище уходят впустую, и все три распознаются за один вечер без участия подрядчика.
- Почти во всех запросах есть точный идентификатор. Номер накладной, артикул, номер договора, дата. Возьмите 40–50 своих типовых запросов и посчитайте: если таких больше двух третей, начинайте с обычного индекса учётной системы, а векторный добавляйте потом.
- Документов меньше полусотни и они не меняются. Поиск по папке и нормальные названия файлов решают задачу за ноль рублей. Векторное хранилище здесь — решение проблемы, которой нет.
- Базу некому вести. Если после запуска никто не отвечает за то, какая редакция действующая, система через полгода превратится в поиск по свалке. Порядок в документах — условие входа, а не результат внедрения.
Векторное хранилище стоит 126 ₽, а проект стоит 126 000 ₽. Платят не за хранение чисел, а за решение, какая редакция регламента действующая.
