This release adds 2 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+12 more
Affected surfaces
Summary
AI summaryFixed a TypeError when setting an invalid embedder and exposed larger embedding models in the default wheel.
Full changelog
Two UX hotfixes coordinated with yantrikdb-hermes-agent v0.2 plugin work (swarm msg c8734310 → response cb79ae1b). Both Python-side, no engine code changed.
1. set_embedder hostile-input guard
Pre-v0.7.5, calling db.set_embedder('any-string') accepted the string silently, then exploded at first record_text() call with:
LookupError: unknown encoding: <text>
…because Python strings have a .encode(charset) method that interprets the argument as a charset name. Took an evening of debugging on the Hermes plugin side to track this trap (reported in msg c8734310).
Fix. set_embedder now probes the embedder at set time with a sentinel string and raises TypeError immediately if .encode() doesn't return a numeric vector:
>>> db.set_embedder('not-an-embedder')
TypeError: embedder.encode(text) must return list[float] or numpy.ndarray;
got non-numeric. Common cause: passing a str (str.encode is a charset codec,
not an embedder).
Costs one extra encode() call up front. Worth it for a localized, actionable error.
2. set_embedder_named exposed in the default wheel
The embedder-download Cargo feature has been in the engine since v0.7.2 but the Python crate's defaults didn't pull it through — so the PyPI wheel could only use the bundled potion-base-2M (dim=64). Power users wanting the larger variants had to build from source.
Now the default pip install yantrikdb wheel ships with embedder-download ON:
db = YantrikDB.with_default("./mem.db") # bundled potion-2M, dim=64, 8MB
db.record_text("Alice loves Rust", "semantic")
Or for the larger variants (downloads on first call from yantrikos/yantrikdb-models, SHA-256 verified, cached under dirs::cache_dir() / yantrikdb / models /):
# 28MB tarball, dim=256, ~92% MiniLM MTEB:
db = YantrikDB("./mem.db", embedding_dim=256)
db.set_embedder_named("potion-base-8M")
# 121MB tarball, dim=512, ~95% MiniLM MTEB:
db = YantrikDB("./mem.db", embedding_dim=512)
db.set_embedder_named("potion-base-32M")
Wheel size impact: ~0.5-1 MB extra for ureq + sha2 + dirs + tar + flate2 — all pure-Rust, no native-extension compile time.
Slim builds (--no-default-features) keep the method on the class but raise a clear actionable RuntimeError if called — better than AttributeError, which would have implied a typo.
Tests
1421 library tests pass. Both feature configs (default + --no-default-features) compile cleanly. NO engine code changed.
🤖 Generated with Claude Code
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About YantrikDB
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]