AI-агент без пам'яті приречений знову відрекомендовуватися щорозмови. Рішення — векторна БД: зберігає ембединги ваших документів, нотаток чи минулих чатів, щоб агент на запит згадував потрібні шматки (це «R» у RAG). Можна взяти managed-сервіс, а можна підняти самому на VPS і тримати дані — часто ваші приватні — на машині, яку контролюєте ви. Ось як, і що це реально коштує по RAM.
Два хороші варіанти
Нічого екзотичного не потрібно. Два шляхи покривають майже всіх:
pgvector — розширення Postgres. Якщо вже крутите Postgres (чи не проти) — воно додає векторний пошук у БД, що у вас уже є. Один сервіс, один бекап, знайомий SQL. Найненапружніший старт із великим відривом.
Qdrant — профільний векторний рушій. Беріть, коли багато векторів (низькі мільйони+) або потрібна швидка фільтрація за метаданими й окремий API. Це окремий сервіс, але він зроблений рівно під цю задачу.
Для більшості агентів, що стають на ноги, pgvector — правильна перша відповідь. До Qdrant переходьте, коли переросли, не раніше.
Реальність по RAM (це й недооцінюють)
Векторний пошук швидкий, бо індекс живе в пам'яті — тож RAM, не диск, ваше реальне обмеження. Грубий орієнтир:
- Пара сотень тисяч ембедингів — комфортно в 2 ГБ.
- Низькі мільйони — закладайте 4 ГБ+ і тюньте індекс.
- Диск — легка частина: мільйон ембедингів це лише кілька ГБ, тож 25–45 ГБ покривають серйозне сховище.
Тож беріть під індекс, не під файл. (Та сама логіка, що в загальному гайді по sizing — важке неочевидне, поки не виміряєш.)
Швидкий старт: pgvector
На машині з Postgres (Docker найпростіше — той самий патерн, що self-host n8n):
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE memory (
id bigserial PRIMARY KEY,
content text,
embedding vector(1536) -- під розмірність вашої моделі ембедингів
);
-- коли з'являться дані, побудуйте індекс для швидкого пошуку:
CREATE INDEX ON memory USING hnsw (embedding vector_cosine_ops);
Агент вставляє content + його ембединг, потім запитує ORDER BY embedding <=> $query_embedding LIMIT 5, щоб дістати найближчі спогади. Це весь цикл.
Хочете Qdrant? Це один Docker-контейнер із HTTP/gRPC API; створюєте колекцію з розміром вектора й upsert'ите точки. Та сама ідея, профільний рушій.
Чи може він ділити машину з агентом?
Так — для малих-середніх сховищ запускайте векторну БД на тому самому VPS, що й агент. Простіше, і затримка майже нуль. Розносьте по різних серверах, лише коли один починає тіснити інший по RAM. Це пізня приємна проблема, не задача першого дня.
Чесні застереження
- RAM — це стіна, і тиха. Пошук лишається швидким, поки індекс влазить у пам'ять, потім деградує. Стежте за пам'яттю й збільшуйте до того, як укусить — не чекайте повільних запитів як сигналу.
- Ембединги коштують токенів. Кожен документ, що ви ембедите, — виклик API моделі ембедингів. Сховище дешево тримати; генерація векторів — повторюваний витрата, релевантно тому, що реально коштує тримати агента.
- Бекапте. Пам'ять агента — дані як будь-які інші. Важливо — снапшотьте.
У цих межах self-hosted векторне сховище — чистий спосіб дати агенту міцну пам'ять, не віддаючи приватні дані третім. Старт із pgvector на 2 ГБ, стежте за RAM, і ростіть у Qdrant чи більший тариф, лише коли цифри скажуть.