Добавить в корзинуПозвонить
Найти в Дзене
Цифровой Путь

Почему векторный поиск не подходит для памяти AI-агентов

# Почему векторный поиск не подходит для памяти AI-агентов AI-агент — это программа, которая выполняет задачи за пользователя. Чтобы делать это хорошо, ей нужна память: что обсуждали раньше, какие данные использовались, что менялось. Стандартный подход — **векторный поиск**. Текст превращают в числовой вектор (набор чисел), и потом ищут «похожие» записи по расстоянию между векторами. Звучит красиво, работает — не всегда. Пользователь спрашивает: «Какой ключ я использовал для этого сервиса?» Векторный поиск не различает конкретные ключи или идентификаторы. Для него все строки вида `sk-proj-...` выглядят одинаково — это «какой-то ключ». Точное значение теряется при преобразовании текста в вектор. То же самое с IP-адресами, номерами заказов, любыми кодами. Если в данных есть название внутреннего проекта или редкое имя — модель их не знает. Она пытается найти что-то похожее по смыслу и ошибается. Пример: проект «Байкал» — модель думает про озеро и подтягивает совсем не то. Вопрос «что изме
Оглавление

# Почему векторный поиск не подходит для памяти AI-агентов

Как обычно устроена память агента

AI-агент — это программа, которая выполняет задачи за пользователя. Чтобы делать это хорошо, ей нужна память: что обсуждали раньше, какие данные использовались, что менялось.

Стандартный подход — **векторный поиск**. Текст превращают в числовой вектор (набор чисел), и потом ищут «похожие» записи по расстоянию между векторами. Звучит красиво, работает — не всегда.

Три проблемы, с которыми мы столкнулись

Проблема 1: точные значения теряются

Пользователь спрашивает: «Какой ключ я использовал для этого сервиса?»

Векторный поиск не различает конкретные ключи или идентификаторы. Для него все строки вида `sk-proj-...` выглядят одинаково — это «какой-то ключ». Точное значение теряется при преобразовании текста в вектор.

То же самое с IP-адресами, номерами заказов, любыми кодами.

Проблема 2: незнакомые названия

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

Пример: проект «Байкал» — модель думает про озеро и подтягивает совсем не то.

Проблема 3: нет понимания времени

Вопрос «что изменилось за последнюю неделю?» векторный поиск не понимает. Он найдёт все записи про изменения — вчерашние и годичной давности вперемешку.

Для памяти агента хронология критична. Без неё агент путает старые и новые данные.

Решение: гибридный подход

Вместо одного метода поиска — три, каждый для своей задачи:

**Текстовый поиск (BM25)** — классический поиск по точному совпадению слов. Находит конкретные идентификаторы, ключи, названия. Работает через стандартные возможности PostgreSQL.

**Векторный поиск** — остаётся для запросов по смыслу. Когда нужно найти «как решали проблему с производительностью» — здесь он незаменим.

**Фильтрация по времени** — каждая запись хранит дату события. Запросы про «последнюю неделю» или «после обновления» автоматически фильтруют по дате.

Результаты перехода

После внедрения гибридного подхода на тех же данных:

- Общая точность поиска выросла с 72% до 91% - Поиск по идентификаторам — с 23% до 94% (рост в четыре раза) - Поиск по незнакомым названиям — с 34% до 87% - Запросы с привязкой ко времени — с 41% до 89%

Кому это нужно

Если AI-агент работает с абстрактными текстами — векторного поиска может хватить.

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

Сложность чуть выше. Но качество памяти агента — несравнимо.