example community package
Project description
Swarmauri Embedding MLM
Trainable embedding provider that fine-tunes a Hugging Face masked language model (MLM) end-to-end so Swarmauri agents can produce contextual document vectors without leaving the framework.
Features
- Wraps any Hugging Face masked language model (
embedding_name) behind the SwarmauriEmbeddingBaseinterface. - Supports optional vocabulary expansion via
add_new_tokensbefore fine-tuning to capture domain-specific terminology. - Handles end-to-end fine-tuning with masking, AdamW optimization, and GPU/CPU selection based on availability.
- Exposes pooling utilities (
transform,infer_vector) that average the last hidden state to yield dense vectors ready for downstream retrieval or clustering. - Provides
save_model/load_modelhelpers so trained weights and tokenizers can be persisted and reloaded across workers.
Prerequisites
- Python 3.10 or newer.
- PyTorch with CUDA support if you plan to train on GPU (the class falls back to CPU automatically).
- Access to the Hugging Face model hub for downloading
embedding_name. SetHF_HOME, proxies, or tokens if your environment requires authentication. - Enough disk space to cache the chosen MLM (e.g.,
bert-base-uncased~420 MB).
Installation
# pip
pip install swarmauri_embedding_mlm
# poetry
poetry add swarmauri_embedding_mlm
# uv (pyproject-based projects)
uv add swarmauri_embedding_mlm
Quickstart: Fine-tune and Embed Documents
from swarmauri_embedding_mlm import MlmEmbedding
docs = [
"Swarmauri SDK ships modular agents.",
"Masked language models produce contextual embeddings.",
]
embedder = MlmEmbedding(
embedding_name="distilbert-base-uncased",
batch_size=16,
learning_rate=3e-5,
)
# One epoch of MLM fine-tuning on your corpus
embedder.fit(docs)
# Generate vectors for downstream tasks
vectors = embedder.transform([
"Agents coordinate through shared memory",
"Fine-tuning improves domain recall",
])
for v in vectors:
print(len(v.value), v.value[:4]) # dimension and preview
# Single-text inference helper
query_vector = embedder.infer_vector("How do masked models compute embeddings?")
Expanding the Vocabulary
Set add_new_tokens=True to capture domain-specific terms before training. New tokens are identified via simple whitespace tokenization and appended to the tokenizer before the first epoch.
from swarmauri_embedding_mlm import MlmEmbedding
domain_docs = [
"Neo4j graph embeddings power fraud detection",
"Qdrant supports hybrid sparse-dense search",
]
embedder = MlmEmbedding(add_new_tokens=True)
embedder.fit(domain_docs)
# Inspect the tokenizer to confirm additions
print(f"Vocabulary size: {len(embedder.extract_features())}")
Persisting and Reloading Models
from pathlib import Path
from swarmauri_embedding_mlm import MlmEmbedding
save_dir = Path("models/mlm-distilbert")
embedder = MlmEmbedding()
embedder.fit(["short corpus", "to warm up the model"])
embedder.save_model(save_dir.as_posix())
# Later or on another machine
restored = MlmEmbedding()
restored.load_model(save_dir.as_posix())
embedding = restored.infer_vector("Reuse the trained weights instantly")
Operational Tips
- Batch and sequence length drive GPU memory usage; reduce
batch_sizeormax_lengthin tokenizer calls when running on constrained hardware. fit_transformruns a full fine-tuning pass and immediately returns embeddings—useful for one-off adaptation jobs.- When training on large corpora, stream documents from a generator, chunk them, or wrap the
.fitcall in your own epoch loop. - Run
extract_features()to audit the tokenizer vocabulary (helpful when debugging domain token coverage). - Combine the generated vectors with Swarmauri vector stores (Redis, Qdrant, etc.) to build end-to-end retrieval pipelines.
Want to help?
If you want to contribute to swarmauri-sdk, read up on our guidelines for contributing that will help you get started.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file swarmauri_embedding_mlm-0.8.2.dev5.tar.gz.
File metadata
- Download URL: swarmauri_embedding_mlm-0.8.2.dev5.tar.gz
- Upload date:
- Size: 9.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef3f18224343c375a5438b39f9946f8455cb982a50aa72052416c78dc59a55b3
|
|
| MD5 |
dc0b09144f937bd4ca28076a92e3265a
|
|
| BLAKE2b-256 |
5929265a0ddc865eadac67256b007fac407113c8b69baef7206f5d30c854109e
|
File details
Details for the file swarmauri_embedding_mlm-0.8.2.dev5-py3-none-any.whl.
File metadata
- Download URL: swarmauri_embedding_mlm-0.8.2.dev5-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.4 {"installer":{"name":"uv","version":"0.10.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90d1caf8647ea9cf77ac2ca8635e433ab1d164faa398bd82cd79334ffb812490
|
|
| MD5 |
84f86abb2f8b3cc58ffbabc19c92941e
|
|
| BLAKE2b-256 |
83addc05442fb80851cf776da3cc5d7f57ed4be923457647cfa7557c90ad9ba1
|