Belleksiz bir yapay zeka ajanı her konuşmada kendini yeniden tanıtmakta takılıp kalır. Çözüm bir vektör veritabanıdır — dokümanlarının, notlarının ya da geçmiş sohbetlerinin gömmelerini saklar, böylece ajan ilgili parçaları talep üzerine hatırlayabilir (RAG'daki "R" budur). Bunu yönetilen bir hizmet olarak kiralayabilir ya da onu bir VPS'te kendin çalıştırıp verini — ki çoğu zaman senin özel verindir — kontrol ettiğin bir kutuda tutabilirsin. İşte nasıl ve RAM'de gerçekte neye mal olduğu.
İki iyi seçenek
Egzotik bir şeye ihtiyacın yok. İki yol neredeyse herkesi kapsar:
pgvector — bir Postgres uzantısı. Zaten Postgres çalıştırıyorsan (ya da çalıştırmaktan memnunsan), bu, zaten sahip olduğun veritabanına vektör araması ekler. Tek hizmet, tek yedek, bildiğin SQL. Farkla en az çabalı başlangıç.
Qdrant — amaca özel bir vektör motoru. Çok sayıda vektörün (düşük milyonlar+) olduğunda ya da hızlı meta veri filtrelemesi ve özel bir API istediğinde ona başvur. Çalıştırılacak ayrı bir hizmettir ama tam olarak bu iş için yapılmıştır.
Ayaklarını yeni bulan çoğu ajan için pgvector doğru ilk cevaptır. Onu aştığında Qdrant'a geç, önce değil.
RAM gerçeği (bu, insanların hafife aldığı kısım)
Vektör araması hızlıdır çünkü indeks bellekte yaşar — o yüzden gerçek kısıtın disk değil RAM'dir. Kaba bir rehber:
- Birkaç yüz bin gömme — 2 GB'da rahat.
- Düşük milyonlar — 4 GB+ planla ve indeksi ayarla.
- Disk kolay kısımdır: bir milyon gömme yalnızca birkaç GB'dır, o yüzden 25–45 GB ciddi bir depoyu kapsar.
Yani dosyaya göre değil, indekse göre boyutlandır. (Genel boyutlandırma kılavuzuyla aynı mantık — ağır şey ölçene kadar belli olmaz.)
Hızlı başlangıç: pgvector
Postgres'li bir kutuda (Docker en kolayı — n8n'i kendi kendine barındırmakla aynı desen):
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE memory (
id bigserial PRIMARY KEY,
content text,
embedding vector(1536) -- gömme modelinin boyutlarıyla eşleştir
);
-- verin olduğunda, hızlı arama için bir indeks kur:
CREATE INDEX ON memory USING hnsw (embedding vector_cosine_ops);
Ajanın content + gömmesini ekler, sonra en yakın anıları çekmek için ORDER BY embedding <=> $query_embedding LIMIT 5 ile sorgular. Tüm döngü bu.
Qdrant'ı mı tercih ediyorsun? HTTP/gRPC API'si sunan tek bir Docker konteyneridir; vektör boyutunla bir koleksiyon oluşturup noktaları upsert edersin. Aynı fikir, özel motor.
Ajanla bir kutuyu paylaşabilir mi?
Evet — küçük ila orta bellek depoları için, vektör veritabanını ajanla aynı VPS'te çalıştır. Daha basittir ve gecikme temelde sıfırdır. Onları ayrı sunuculara ancak biri diğerini RAM'den sıkıştırmaya başladığında böl. Bu sonraki, güzel-bir-sorun kararıdır, ilk gün değil.
Dürüst uyarılar
- Duvar RAM'dir ve sessizdir. Arama, indeks artık belleğe sığmayana kadar hızlı kalır, sonra bozulur. Belleği izle ve seni ısırmadan önce büyüt — yavaş sorguların söylemesini bekleme.
- Gömmeler oluşturmak token'a mal olur. Gömdüğün her doküman bir gömme modeline bir API çağrısıdır. Depoyu barındırmak ucuzdur; vektörleri üretmek yinelenen maliyettir — bir ajanı çalıştırmanın gerçekte neye mal olduğuyla ilgili.
- Yedekle. Ajanının belleği de her veri gibi veridir. Önemliyse, anlık görüntüsünü al.
Bunun içinde, kendi kendine barındırılan bir vektör deposu, özel verini üçüncü bir tarafa vermeden bir ajana kalıcı bellek vermenin temiz bir yoludur. 2 GB'lık bir kutuda pgvector ile başla, RAM'e göz kulak ol ve Qdrant'a ya da daha büyük bir plana ancak sayılar söylediğinde büyü.
Yorumlar
Henüz yorum yok. İlk olun.