memory کے بغیر ایک AI agent ہر گفتگو میں خود کو دوبارہ متعارف کراتے پھنسا رہتا ہے۔ حل ایک vector database ہے — یہ آپ کی دستاویزات، notes یا ماضی کی chats کے embeddings ذخیرہ کرتا ہے تاکہ agent متعلقہ ٹکڑے مانگنے پر یاد کر سکے (یہی RAG میں "R" ہے)۔ آپ اسے ایک managed سروس کے طور پر کرائے پر لے سکتے، یا اسے خود ایک VPS پر چلا کر اپنا ڈیٹا — جو اکثر آپ کا نجی ڈیٹا ہوتا ہے — اپنے کنٹرول کیے باکس پر رکھ سکتے ہیں۔ یہ رہا کیسے، اور یہ دراصل RAM میں کتنا خرچ کرتا ہے۔
دو اچھے اختیارات
آپ کو کچھ عجیب نہیں چاہیے۔ دو راستے تقریباً سب کو کور کرتے ہیں:
pgvector — ایک Postgres extension۔ اگر آپ پہلے ہی Postgres چلا رہے ہیں (یا خوشی سے چلائیں)، تو یہ آپ کے پہلے سے موجود database میں vector search جوڑتا ہے۔ ایک سروس، ایک backup، وہ SQL جو آپ جانتے ہیں۔ ایک وسیع فرق سے سب سے کم-محنت آغاز۔
Qdrant — ایک purpose-built vector engine۔ اسے تب پکڑیں جب آپ کے پاس بہت سے vectors ہوں (low millions+) یا تیز metadata filtering اور ایک dedicated API چاہیں۔ یہ چلانے کو ایک الگ سروس ہے، لیکن یہ بالکل اسی کام کے لیے بنا ہے۔
اپنے قدم جماتے زیادہ تر agents کے لیے، pgvector درست پہلا جواب ہے۔ جب آپ اس سے بڑھ جائیں تب Qdrant پر جائیں، پہلے نہیں۔
RAM حقیقت (یہ وہ حصہ ہے جسے لوگ کم آنکتے ہیں)
vector search تیز ہے کیونکہ index memory میں رہتا ہے — تو RAM، ڈسک نہیں، آپ کی اصل رکاوٹ ہے۔ ایک کچی رہنمائی:
- چند لاکھ embeddings — 2 GB میں آرام دہ۔
- چند لاکھوں (Low millions) — 4 GB+ کا منصوبہ بنائیں اور index tune کریں۔
- ڈسک آسان حصہ ہے: ایک ملین embeddings صرف چند GB ہیں، تو 25–45 GB ایک سنجیدہ store کور کرتی ہے۔
تو index کے لیے size کریں، فائل کے لیے نہیں۔ (عمومی sizing گائیڈ کی وہی منطق — بھاری چیز ماپنے تک واضح نہیں ہوتی۔)
فوری آغاز: pgvector
Postgres والے ایک باکس پر (Docker سب سے آسان ہے — n8n self-host کا وہی پیٹرن):
CREATE EXTENSION IF NOT EXISTS vector;
CREATE TABLE memory (
id bigserial PRIMARY KEY,
content text,
embedding vector(1536) -- اپنے embedding ماڈل کے dimensions سے میل کرائیں
);
-- ڈیٹا ہونے کے بعد، تیز search کے لیے ایک index بنائیں:
CREATE INDEX ON memory USING hnsw (embedding vector_cosine_ops);
آپ کا agent content + اس کا embedding داخل کرتا ہے، پھر قریب ترین memories نکالنے کو ORDER BY embedding <=> $query_embedding LIMIT 5 سے query کرتا ہے۔ یہی پورا loop ہے۔
Qdrant ترجیح دیں؟ یہ ایک HTTP/gRPC API expose کرتا ایک واحد Docker container ہے؛ آپ اپنے vector size کے ساتھ ایک collection بناتے اور points upsert کرتے ہیں۔ وہی خیال، dedicated engine۔
کیا یہ agent کے ساتھ ایک باکس شیئر کر سکتا ہے؟
جی ہاں — چھوٹے-سے-درمیانے memory stores کے لیے، vector DB کو agent کے ہی VPS پر چلائیں۔ یہ سادہ تر ہے اور latency بنیادی طور پر صفر ہے۔ انہیں الگ سرورز پر تب ہی تقسیم کریں جب ایک دوسرے کو RAM سے باہر دھکیلنے لگے۔ یہ ایک بعد کا، اچھا-مسئلہ-رکھنے کا فیصلہ ہے، پہلے-دن کا نہیں۔
ایماندار احتیاطیں
- RAM دیوار ہے، اور یہ خاموش ہے۔ search تب تک تیز رہتا ہے جب تک index memory میں نہ سماے، پھر یہ خراب ہوتا ہے۔ memory دیکھیں اور اس کے کاٹنے سے پہلے resize کریں — سست queries کے بتانے کا انتظار نہ کریں۔
- Embeddings بنانے میں tokens خرچ ہوتے ہیں۔ ہر دستاویز جو آپ embed کرتے ہیں وہ ایک embedding ماڈل کو ایک API کال ہے۔ store host کرنا سستا ہے؛ vectors بنانا بار بار آنے والی لاگت ہے — ایک agent دراصل کیا خرچ کرتا ہے سے متعلق۔
- اسے backup کریں۔ آپ کے agent کی memory کسی بھی اور کی طرح ڈیٹا ہے۔ اگر یہ اہم ہے، تو اسے snapshot کریں۔
اُس کے اندر، ایک self-hosted vector store اپنا نجی ڈیٹا کسی تیسرے-فریق کو دیے بغیر ایک agent کو پائیدار memory دینے کا ایک صاف طریقہ ہے۔ ایک 2 GB باکس پر pgvector سے شروع کریں، RAM پر نظر رکھیں، اور Qdrant یا ایک بڑے پلان میں تب ہی بڑھیں جب نمبر آپ کو کہیں۔
تبصرے
ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔