mnemo: لایهٔ حافظهٔ محلی برای هر LLM
خلاصهٔ کاملتر
تو این مخزن، mnemo بهعنوان یه لایهٔ حافظهٔ «محلی-اول» برای هر مدل زبانی (LLM) معرفی شده. مشکلی که حل میکنه اینه: اپلیکیشنهایی که روی پایپلاینهای سفارشی ساخته میشن بین جلسهها هیچ حافظهٔ ماندگاری ندارن. به گفتهٔ سازنده، mnemo یه سرویس sidecar هست که هر گفتگویی رو که بهش بدی تماشا میکنه، موجودیتها و رابطههاشونو با کمک یه LLM درمیاره، یه گراف دانش ماندگار تو SQLite میسازه و کانتکست مرتبط رو در کمتر از ۵۰ میلیثانیه به پرامپتهای بعدی تزریق میکنه.
جریان کارش سادهست. متن خام (یه نوبت گفتگو، یه سند یا یه یادداشت) رو با POST /ingest میفرستی؛ mnemo اونو به مدل پیکربندیشده میده تا موجودیتهایی مثل آدمها، ابزارها، مکانها و مفهومها و رابطههاشون استخراج شن. موجودیتها بر اساس نام و نوع یکتاسازی میشن، نامهای مستعار ادغام میشن و همهچی تو SQLite نوشته میشه و گراف درونحافظهای (با کتابخونهٔ petgraph) بهصورت اتمی بهروز میشه.
موقع بازیابی، فراخوانی POST /retrieve یه پایپلاین ششمرحلهای رو اجرا میکنه: جستجوی تماممتن روی تکهها، جستجوی نام موجودیت، گسترش گراف با پیمایش BFS روی گراف دانش، فیلتر رابطهها، امتیازدهی و رتبهبندی، و در آخر سرهمکردن یه رشتهٔ context_prompt که خودت تو پرامپت سیستمیِ مدلت میذاری.
به گفتهٔ سازنده، تفاوت اصلی mnemo با گزینههای مشابه همین لایهٔ گرافه. خیلی از ابزارای حافظه یا درونحافظهاین یا روی ابر، اغلب به یه مدل خاص قفل شدن و کانتکست رو خام و بدون رتبهبندی برمیگردونن. ولی mnemo یه باینری Rust واحده که بعد از ریاستارت هم پابرجاست، موجودیتها رو بین جلسهها یکتا میکنه، رابطهها رو وزندار و چندپرشی پیمایش میکنه و نتایجِ گسترشیافته با گراف رو با ضریب ۰.۵ امتیاز میده تا تطبیقهای مستقیم همیشه بالاتر از نتایج استنتاجی بشینن.
از نظر بکاند مدل انعطافپذیره: با Ollama کاملاً محلی و رایگان کار میکنه، ولی OpenAI و Anthropic و هر API سازگار با OpenAI رو هم میپذیره؛ همهچی با متغیرهای محیطی مثل MNEMO_LLM_PROVIDER و MNEMO_LLM_BASE_URL یا یه فایل TOML تنظیم میشه و متغیرهای محیطی بر مقادیر TOML اولویت دارن. خود پروژه از چهار crate تشکیل شده: هستهٔ منطقی، یه API REST با Axum، یه ابزار CLI، و یه بسته بنچمارک.
سازنده تأکید کرده که mnemo برای همه نیست؛ اگه از یه harness مدیریتشده استفاده میکنی که خودش حافظه رو هندل میکنه بهش نیازی نداری. مخاطبش توسعهدهندههایی هستن که پایپلاین سفارشی LLM میسازن و حافظهٔ ماندگار، ساختارمند و محلی میخوان که کامل تو کنترل خودشون باشه. برای شروع سریع هم SDK پایتون کار رو راحت میکنه:
from mnemo import MnemoClient
client = MnemoClient()
client.ingest("I'm building a Rust vector database called vecdb")
print(client.get_context("what am I working on?"))نکات کلیدی:
- لایهٔ حافظهٔ محلی و متنباز (Rust، مجوز MIT) برای هر LLM، بدون وابستگی به ابر
- متن رو به موجودیت و رابطه میشکنه و یه گراف دانش ماندگار تو SQLite میسازه
- بازیابی با یه پایپلاین ششمرحلهای شامل گسترش گراف و امتیازدهی و رتبهبندی انجام میشه
- با Ollama کاملاً محلی، و همچنین OpenAI/Anthropic و هر API سازگار با OpenAI کار میکنه
- یه باینری استاتیک واحد با SDKهای پایتون و CLI و کانتکست در کمتر از ۵۰ میلیثانیه




