hermes-memory-pgvector 1.0.0 आ चुका है। यह पहला रिलीज़ है जिसमें हम वादा करते हैं कि जिन हिस्सों के लिए आप स्क्रिप्ट लिखते हैं उन्हें तोड़ेंगे नहीं। इस पोस्ट में हम बताएँगे कि यह प्लगइन क्या है, 1.0 क्या गारंटी देता है, प्री-रिलीज़ समीक्षा में क्या सामने आया, और कैसे अपग्रेड करें।
यह क्या है
hermes-memory-pgvector एक Postgres + pgvector मेमोरी प्रोवाइडर है जो hermes-agent के लिए है। यह सहयोग करने वाले एजेंटों के एक बेड़े के लिए एक साझा मेमोरी स्तर है, जो एक Postgres इंस्टेंस और एक एम्बेडिंग एंडपॉइंट पर बना है, जिसे आप संभवतः पहले से चला रहे हैं।
डिज़ाइन के नियम पहले लेख के बाद से नहीं बदले हैं:
- स्टोरेज स्तर, मेमोरी मॉडल नहीं। एजेंट बिल्ट-इन
memoryटूल को कॉल करते रहते हैं। प्लगइन उन राइट्स को Postgres में मिरर करता है और सिमैंटिक सर्च के लिए महत्वपूर्ण चैट टर्न सहेजता है। - मेमोरी हॉट पाथ में कोई LLM नहीं। एम्बेडिंग वेक्टर गणित है। कोई डेराइवर नहीं, कोई डायलेक्टिक लूप नहीं, कोई ड्रीम साइकल नहीं।
- डिफ़ॉल्ट रूप से प्रति-एजेंट थीम। हर पंक्ति पर एक
agent_identityहोता है। जब तक एजेंटscope='all'न माँगे, रिकॉल वर्तमान थीम के भीतर ही रहता है। - फेल-सॉफ्ट। यदि एम्बेड एंडपॉइंट डाउन है, तो राइट्स टेक्स्ट-ओनली पर डिग्रेड हो जाती हैं। यदि राइटर क्यू भरा है, तो राइट एक बार की चेतावनी के साथ छोड़ दी जाती है। यदि डेटाबेस डाउन है, तो प्लगइन लॉग करता है और स्किप करता है। एजेंट लूप तक कोई अपवाद नहीं पहुँचता।
- एडमिन/रनटाइम अलगाव। DDL एक बार सुपरयूज़र के रूप में
hermes-pgvector migrateके माध्यम से चलता है। रनटाइम रोल को केवल DML मिलता है।
1.0 का क्या अर्थ है
1.0.0 से प्रोजेक्ट अपने सार्वजनिक इंटरफ़ेस पर सिमैंटिक वर्शनिंग का पालन करता है:
plugins.pgvector.*कॉन्फ़िग कुंजियाँ- टूल के नाम और पैरामीटर (
recall_memory,recall_conversation) - CLI कमांड, फ़्लैग और एग्ज़िट कोड
- डेटाबेस टेबल और कॉलम के नाम
pgvectorप्रोवाइडर का नाम और pip एंट्री पॉइंट
1.x के भीतर वह सतह बढ़ सकती है, लेकिन सूची में किसी चीज़ का नाम या हटाया नहीं जाएगा, और बिना 2.0 के कोई डिफ़ॉल्ट व्यवहार नहीं बदलेगा। MemoryStore और अन्य Python क्लासेज़ व मॉड्यूल्स आंतरिक हैं और कवर नहीं किए गए। रिलीज़ किया गया माइग्रेशन फ़ाइल कभी जगह-पर-पर एडिट नहीं किया जाता; स्कीमा परिवर्तन एक नई क्रमांकित माइग्रेशन के रूप में आते हैं।
सपोर्ट मैट्रिक्स हर पुश पर CI में टेस्ट किया जाता है: Python 3.11, 3.12 और 3.13, PostgreSQL 16, 17 और 18 के साथ pgvector 0.5.0 या नए पर। एक अपस्ट्रीम hermes-agent कन्फ़ॉर्मेंस सूट एक पिन किए गए रेफ़ के विरुद्ध चलता है, साथ ही अपस्ट्रीम main के विरुद्ध नॉन-ब्लॉकिंग साप्ताहिक ड्रिफ़्ट चेक भी होता है।
समीक्षा में क्या मिला
1.0.0 रिलीज़ कैंडिडेट का री-टैग नहीं है, जिसे PyPI पर कभी प्रकाशित नहीं किया गया था। रिलीज़ से पहले हमने मल्टी-पास, पूरे कोडबेस की समीक्षा चलाई: समानांतर AI समीक्षक एजेंटों के साथ कई पास, जहाँ किसी फ़ाइंडिंग पर कार्य करने से पहले ठोस पुनरुत्पादन या स्वतंत्र जाँच अनिवार्य थी। 0.6.0 पहले की 1.0-तत्परता समीक्षा से निकला था।
समीक्षा में एक High-गंभीरता का बग मिला, और वह डेटा-लॉस बग था। hermes-pgvector remap --old X --new X --execute थीम X की हर memory_entries पंक्ति को हटा देता था और 0 पर एग्ज़िट होता था। हर पंक्ति इंसर्ट पर खुद से कन्फ़्लिक्ट करती थी, और फिर डिलीट मूल पंक्तियों को हटा देता था। अब remap खाली या समान --old और --new को exit 1 के साथ अस्वीकार करता है, ड्राई-रन में भी।
Medium और Low फ़ाइंडिंग भी देखने योग्य हैं यदि आप इसे प्रोडक्शन में चलाते हैं:
identity_signature()स्टार्टअप पर कॉन्फ़िग को फ़्रोज़न पढ़ता था, इसलिएallowed_themesयाidentity_aliasesमें एडिट कैश्ड गेटवे एजेंटों तक रीस्टार्ट तक नहीं पहुँचते थे। अब यह बदलने परconfig.yamlको फिर से पढ़ता है।on_session_endबैकस्टॉप मल्टीमोडल यूज़र टर्न दो बार लिख सकता था और बड़े/skillस्कैफ़ोल्डिंग को सहेज सकता था।replace()खालीold_textके साथ एक मनमानी पंक्ति को ओवरराइट कर देता था।- एम्बेड क्लाइंट NaN, Infinity या null वाले वेक्टर स्वीकार कर लेता था। डेटाबेस उन्हें अस्वीकार कर देता था और ड्यूरेबल पंक्ति खो जाती थी। अब वे किसी अन्य एम्बेड विफलता की तरह टेक्स्ट-ओनली पंक्ति पर डिग्रेड होते हैं।
backfillगैर-ASCII व्हाइटस्पेस से बनी खाली पंक्तियों को अनंत तक रीट्राई करता था, औरSQL_ASCIIडेटाबेस पर हर पंक्ति फ़ेल होती थी।- एक स्पष्ट
--configजिसे पढ़ा नहीं जा सकता था, पहले चेतावनी देकर चुपचाप डिफ़ॉल्ट DSN पर वापस चला जाता था। अब यह एक एरर है। - Telegram forum (topic) चैट्स, LINE रूम्स और webhook सेशंस को मल्टी-पार्टी सेशंस के रूप में पहचाना नहीं जाता था, इसलिए उनके रॉ सेशन कीज़, जिनमें एक पार्टिसिपेंट id भी था, अपने-अपने थीम बन जाते थे। अब वे अन्य ग्रुप ट्रैफ़िक की तरह साझा
external-groupबकेट में जाते हैं।
टेस्ट सूट 442 से बढ़कर 500 से अधिक टेस्ट का हो गया है, जिसमें इन फ़िक्सेज़ के लिए लगभग 80 रिग्रेशन टेस्ट शामिल हैं। CI इन्हें लाइव Postgres 16, 17 और 18 पर चलाता है, और अब किसी भी स्किप्ड टेस्ट पर फ़ेल होता है, इसलिए टूटा हुआ वातावरण अब हरा नहीं हो सकता।
इंस्टॉल और अपग्रेड
pip install hermes-memory-pgvector
hermes-pgvector migrate --admin-dsn \
"dbname=<your-memory-db> user=postgres host=/var/run/postgresql"
hermes config set memory.provider pgvector
hermes memory status
यदि आप 0.6.0 से आ रहे हैं, तो कोई स्कीमा परिवर्तन नहीं है और कोई नई माइग्रेशन नहीं है। पैकेज अपग्रेड करें, रीस्टार्ट करें, और CHANGELOG में 1.0.0 के अपग्रेड नोट्स पढ़ें। ये व्यवहार बदलते हैं:
remapखाली या समान--old/--newको अस्वीकार करता है।- एक स्पष्ट
--configजिसे पढ़ा या पार्स नहीं किया जा सकता, अब डिफ़ॉल्ट DSN पर चुपचाप वापस जाने की बजाय एक एरर है। - बूलियन कॉन्फ़िग कुंजियाँ केवल
1/true/yes/onऔर0/false/no/offस्वीकार करती हैं। खाली या अपरिचित मान अब उस कुंजी के डिफ़ॉल्ट का अर्थ रखते हैं। prefetch_budget,prefetch_limitऔरmin_similarityको उनकी प्रलेखित रेंज तक क्लैंप किया जाता है।- Telegram forum, LINE room और webhook सेशंस की नई राइट्स
external-groupथीम में जाती हैं; उनके रॉ कीज़ के अंतर्गत पहले से लिखी पंक्तियाँ जहाँ हैं वहीं रहती हैं। - इंस्टॉल बैकअप अब एक छिपी हुई
plugins/.pgvector.bak-<ts>डायरेक्टरी में चले जाते हैं। पुरानी किसी भी दृश्यमानpgvector.bak*डायरेक्टरी को हटा दें ताकि hermes-agent उसे दूसरे प्रोवाइडर के रूप में डिस्कवर न करे।
यदि 0.6.0 से पुराने किसी संस्करण से आ रहे हैं, तो पहले 0.6.0 के नोट्स पढ़ें, और वहाँ के क्रम नियम का पालन करें: migrate चलाने से पहले उस डेटाबेस को लिखने वाले हर होस्ट पर पैकेज अपग्रेड करें। पूरी प्रक्रिया docs/upgrading.md में है।
लिंक
प्रोजेक्ट BSD-3-Clause लाइसेंस के अंतर्गत है, कॉपीराइट Green Yoga Inc। बग रिपोर्ट और केंद्रित PR का स्वागत है।
