একটি ইঞ্জিন, একটি ডিরেক্টরিতে প্রোথিত, আপনার প্রক্রিয়ায় যুক্ত।
Telys হলো AI এজেন্টের জন্য একটি এমবেডেড মেমরি ও রিট্রিভাল ইঞ্জিন। ইঞ্জিন physical layout-এর মালিক বলে, nearest-neighbours-where-key-equals-x একটি ডিরেক্টরি লুকআপ এবং একটি অবিচ্ছিন্ন ব্লকের sequential scan-এ পরিণত হয় — আপনার প্রক্রিয়ার ভেতরে, কোয়েরির সময় কোনো বাহ্যিক কল ছাড়াই।
পাবলিক API একটি facade: একটি ইঞ্জিন named collection ধারণ করে, প্রতিটি external id, metadata-চালিত partition key ও filter column সহ একটি filtered vector index, এবং স্পষ্ট add / upsert / delete semantics সহ।
from telys import Telys, scope_key db = Telys("./memory") col = db.create_collection("docs", dim=768, partition_by="tenant_id", filter_columns=["lang"]) col.add(vectors, ids=ids, metadata=metadata) # new rows only — raises on an existing id col.upsert(vectors, ids=ids, metadata=metadata) # existing id → a new visible version
Ingest স্পষ্ট। add বিদ্যমান id-তে error দেয়; upsert বিদ্যমান id-কে MVCC-এর অধীনে একটি নতুন দৃশ্যমান সংস্করণ দেয় — ইঞ্জিন কখনো একটি logical id-এর জন্য দুটি physical row রাখে না।
hits = col.search(qvec, top_k=10, where={"tenant_id": "acme"}, explain=True) hits["explain"]["plan"] # "PartitionSliceExactF32" # composite scope → one physical partition key sk = scope_key("acme/shop", "payments", "python") res = symbols.search_text("refund pending after migration", top_k=40, where={"scope_key": sk}, explain=True, target_recall=0.98)
প্রতিটি কোয়েরি একটি columnar where ফিল্টার নেয় এবং এটি পরিবেশনকারী physical strategy-র নাম দিয়ে একটি explain plan ফেরত দিতে পারে। target_recall সেই recall floor নির্ধারণ করে যা planner-কে মানতে হবে; composite scope, scope_key দ্বারা নির্মিত একটি physical key-এ partition করে।
col.delete(stale_ids) # tombstone — hidden from reads now, dropped at compact() col.compact() col.build_ivf(min_rows=20000, target_recall=0.98) # oversized partitions only snap = col.snapshot() # frozen MVCC read view col.save() # atomic — collection.json is written last, as the commit point col.stats() # partitions · external_ids · embedding_space
Maintenance surface-এর অংশ। Delete তাৎক্ষণিকভাবে tombstone করে এবং compaction-এ physically সরানো হয়; IVF প্রতি partition-এ নির্মিত হয়, কেবল যেখানে partition exact path ছাড়িয়ে যায়; save atomic, এবং পুনরায় খোলা ডেটা, প্রয়োগকৃত tuning এবং embedding space পুনরুদ্ধার করে।
| সক্ষমতা | বিবরণ |
|---|---|
| ফিল্টার-ভিত্তিক অনুসন্ধান | nearest-neighbors-where-key-equals-x একটি ডিরেক্টরি লুকআপ এবং একটি অবিচ্ছিন্ন ব্লকের sequential scan-এ পরিণত হয় — exact path-এ recall 1.0 (D≤384; D=768 reduction-order tie-তে 0.999–0.9995 পড়ে, কোনো genuine miss নেই)। একই অবিচ্ছিন্ন সাবসেটে এই স্ক্যান raw FAISS-এর সমকক্ষ — সুতরাং সুবিধাটি লেআউটের, কার্নেলের নয়। |
| persistence | WAL-backed write, MVCC স্ন্যাপশট, sealed সেগমেন্ট। save() atomically commit করে; open_collection() ডেটা, প্রয়োগকৃত tuning এবং embedding space পুনরুদ্ধার করে। |
| টেম্পোরাল মডেল | Versioned upsert: বিদ্যমান id একটি নতুন দৃশ্যমান সংস্করণ পায় যা পুরোনোটিকে supersede করে — কখনো duplicate row নয়। Tombstone মুছে ফেলা row তাৎক্ষণিকভাবে লুকায়; compaction সেগুলো physically সরায়। |
| embeddings | Embedding-agnostic। নিজের vector আনুন, অথবা EmbeddingProvider / CallableEmbedder সংযুক্ত করুন। একটি on-device bigram embedder অন্তর্ভুক্ত — lexical, in-process, কোনো মডেল ডাউনলোড নেই। |
| platforms | macOS arm64 · Linux x86_64 / arm64 · Windows under WSL2। |
| license | PyPI-তে Apache-2.0 পাবলিক SDK (pip install telys) এবং telys login দ্বারা ইনস্টল করা একটি সাইন করা, লাইসেন্সকৃত on-device রানটাইম। পাবলিক বিটা। |
| পরিমাপকৃত লেটেন্সি | p50/p95 প্রতিটি selectivity-তে recall 1.0-এ রিপোর্ট করা হয়েছে, single-thread, in-process, একটি প্রকাশিত M4 Max রিগে — raw sample ও স্ক্রিপ্টসহ। benchmarks পেজ দেখুন। |
একটি স্বাক্ষরিত রানটাইমের উপর পাতলা পাবলিক ফাসাদ।
পাবলিক SDK-এ কোনো ইঞ্জিন ইমপ্লিমেন্টেশন নেই। এটি একটি স্থির সংযোগ — RuntimeHandle — এর মাধ্যমে রানটাইমের সাথে কথা বলে, এবং রানটাইম তার হট লুপগুলো Mojo SIMD কার্নেলে রাখে: আপনার Python প্রসেসের ভেতরে একটি zero-Python হট পাথ।
Telys / Collection # public SDK facade — no engine code
└─ RuntimeHandle # the frozen SDK–engine seam
└─ signed runtime # hot loops in Mojo SIMD kernels — zero-Python hot path
├─ partition directory # key → contiguous block
└─ contiguous segments # one sequential scan per scopetelys — Apache-2.0
Telys ও Collection ফাসাদ, Eq ও scope_key, EmbeddingProvider ও Tuner ইন্টারফেস, একটি রানটাইম লোডার, এবং telys CLI। একটি রিলিজ গার্ড নিশ্চিত করে যে পাবলিক হুইলে কোনো ইঞ্জিন সোর্স কখনো যায় না।
telys login এটি ইনস্টল করে
একটি সাইন-ইনেই বিনামূল্যে ডিভাইস লাইসেন্স প্রভিশন হয় এবং স্বাক্ষরিত রানটাইম ফেচ হয়; স্বাক্ষর ও লাইসেন্স অফলাইনেও পুনরায় যাচাই হয়। রানটাইমে পার্টিশন ইনডেক্স, MVCC, কম্প্যাকশন ও IVF থাকে — এবং এক্সিকিউশনের জন্য এটি আবশ্যক।
পার্টিশনগুলো সংলগ্ন
ডিরেক্টরি একটি পার্টিশন কী-কে তার ব্লকে ম্যাপ করে; প্রতিটি পার্টিশনের রো সংলগ্নভাবে সংরক্ষিত। একটি স্কোপড কোয়েরি হলো একটি সিকোয়েন্শিয়াল স্ক্যান — আপনার কী উপেক্ষা করা কোনো ইনডেক্সে স্ক্যাটার নয়।
সময়ই ডেটা মডেল।
একটি ভেক্টর আর একটি মেটাডেটা ব্লব এজেন্ট মেমরি নয়। মেমরি মডেল প্রতিটি তথ্যকে একটি বৈধতা উইন্ডো, একটি স্পষ্ট সুপারসেশন চেইন, এবং একটি as_of ভিউ দেয় — যা বিশ্ব-সময়ের একটি বিন্দুতে কী জানা ছিল তা পুনর্গঠন করে। এটি এখানে যা তাই হিসেবে উপস্থাপিত: নির্দিষ্ট দিকনির্দেশনা, যার স্টোরেজ মেশিনারি ইতিমধ্যে নিচে শিপ করছে।
তথ্য বিরতির উপর বৈধ থাকে
একটি মেমরি বিশ্ব-সময়ে একটি [valid_from, valid_to) উইন্ডো বহন করে। একটি বিরোধ পুরনো উইন্ডো বন্ধ করে, রো মুছে দেয় না — একটি এজেন্টের জন্য উপস্থিত-বা-অনুপস্থিত যথেষ্ট নয়।
নীরব ওভাররাইট নেই
একটি সংশোধনকারী তথ্য যে তথ্যটি প্রতিস্থাপন করে তার দিকে নির্দেশ করে। চেইনটি স্পষ্ট ও পুনর্গঠনযোগ্য: এজেন্ট কী বিশ্বাস করত এবং কখন বিশ্বাস করা বন্ধ করল — এটি একটি কোয়েরি।
T সময়ে কী জানা ছিল
একটি as_of ভিউ একটি নির্দিষ্ট MVCC স্ন্যাপশটের অধীনে বিশ্ব-সময় T-তে বৈধ মেমরিগুলো হুবহু পুনর্গঠন করে — এমন রিকল যা পরে পুনরুৎপাদনযোগ্য ও নিরীক্ষাযোগ্য।
স্পেক, স্পেক হিসেবে চিহ্নিত।
remember, recall, ও as_of MEMORY-SEMANTICS ড্রাফটে সংজ্ঞায়িত — এগুলো দিকনির্দেশনা, শিপড API রেফারেন্স নয়। এগুলো আজ শিপ করা মেশিনারিতে নামে: ভার্সনড আপডেট, সুপারসেশন, টম্বস্টোন, এবং MVCC স্ন্যাপশট।
এটি কীভাবে কাজ করে পড়ুন- add / upsert — বিদ্যমান id একটি নতুন দৃশ্যমান ভার্সন হয়, কখনো ডুপ্লিকেট রো নয়
- search / search_text — where= ফিল্টার, explain প্ল্যান, target_recall ফ্লোর
- delete — টম্বস্টোন: রিড থেকে তাৎক্ষণিক আড়াল, কম্প্যাকশনে বাদ
- compact / build_ivf — সেগমেন্ট রক্ষণাবেক্ষণ; অতিরিক্ত বড় পার্টিশনের জন্য per-partition IVF
- snapshot / save / stats — MVCC রিড ভিউ, অ্যাটমিক ডিউরেবল সেভ, রিওপেন
- MVCC supersession — প্রতিটি আপডেট তার পূর্বসূরিকে সুপারসিড করে; কিছুই নীরবে ওভাররাইট হয় না