Shared embedding cache core for cross-project reuse
Project description
labenv_embedding_cache
Shared policy and Python cache-core library for projects that reuse text embedding caches.
Files
embedding_rulebook.yaml: machine-readable cache policy (path/layout/consistency)embedding_registry.yaml: machine-readable model registry shared across projectsembedding_cache_spec.yaml: machine-readable spec for dataset key / metadata / variant tagsrc/labenv_embedding_cache/: reusable Python libraryCODEX_PROMPT.md: reusable prompt template for Codex sessions
Install library
Preferred distribution is wheel (v0.1.1).
# Internal index (recommended)
pip install "labenv-embedding-cache==0.1.1"
# Optional: explicitly point pip to internal index
# PIP_EXTRA_INDEX_URL="https://<internal-index>/simple" pip install "labenv-embedding-cache==0.1.1"
# GitHub Release wheel fallback
pip install "labenv-embedding-cache @ https://github.com/ryuuua/labenv_embedding_cache/releases/download/v0.1.1/labenv_embedding_cache-0.1.1-py3-none-any.whl"
# Local editable (maintainer workflow)
pip install -e /path/to/labenv_embedding_cache
Rollback-only legacy install (VCS pin):
pip install "git+ssh://git@github.com/ryuuua/labenv_embedding_cache.git@c0154c06ee6e41852c58ac76d6504f5b38d20168#egg=labenv-embedding-cache"
Standalone run (smoke tests)
Install with optional embedding/debug extras:
pip install -e ".[embed,debug]"
Embedding generation only (no cache):
python tools/embedding_smoketest.py
Embedding + cache read/write:
python tools/embedding_cache_smoketest.py --backend dummy
# or (downloads model)
python tools/embedding_cache_smoketest.py --backend sentence-transformers --model sentence-transformers/all-MiniLM-L6-v2
Debugpy (wait for attach):
python tools/embedding_cache_smoketest.py --backend dummy --debugpy --wait-for-client
Embedding generation from conf/embedding presets (auto DDP/pipeline policy via embedding_model.md):
python tools/generate_embeddings_from_conf.py --preset conf/embedding/qwen3_embedding.yaml --strategy auto
Default is non-normalized embeddings. Use --normalize to generate L2-normalized caches.
normalize_embeddings=true is treated as a separate model variant (registry_key=...__l2) and cache variant (norm=l2).
Best practices: docs/EMBEDDING_BEST_PRACTICES.md
Policy path setup
No environment variable is required for normal use. The package resolves its
bundled embedding_rulebook.yaml automatically.
If you want to pin EMBEDDING_RULEBOOK_PATH explicitly in your shell profile:
export EMBEDDING_RULEBOOK_PATH="$(labenv-embedding-cache-path rulebook)"
Then reload shell:
source ~/.zshrc
Legacy cache compatibility index (temporary)
Build a read-only index for existing lm/** cache files:
labenv-embedding-cache index-build --cache-dir /work/$USER/data/embedding_cache
Show index stats:
labenv-embedding-cache index-stats --cache-dir /work/$USER/data/embedding_cache
Verify whether request manifests can be served without regeneration:
labenv-embedding-cache verify-requests --requests /path/to/request_manifest.jsonl --min-selected-models 2
Build request manifest rows from canonical metadata in Python:
import labenv_embedding_cache as lec
record = lec.build_request_manifest_entry(
dataset_name="ag_news",
model_id="bert",
model_name="bert-base-uncased",
expected_cache_path="/work/$USER/data/embedding_cache/lm/bert-base-uncased/ag_news__x.npz",
metadata=metadata,
)
Export a lock payload for CI/DVC (policy digest + index + optional verify report):
labenv-embedding-cache lock-export \
--cache-dir /work/$USER/data/embedding_cache \
--requests /path/to/request_manifest.jsonl \
--output /work/$USER/data/embedding_cache/.labenv/lock.json \
--min-selected-models 2
Index file location:
${EMBEDDING_CACHE_DIR}/.labenv/index_v1.jsonl
Compatibility is controlled by rulebook:
compatibility.legacy_index.enabledcompatibility.legacy_index.sunset_datecompatibility.legacy_index.require_ids_sha256_match
Identity expansion is controlled by spec:
identity.profiles.default.hard_fieldsidentity.profiles.default.soft_fieldsidentity.profiles.default.defaultsidentity.profiles.default.legacy_match_policy
Quick usage
from labenv_embedding_cache.api import get_or_compute_embeddings
vectors, resolution = get_or_compute_embeddings(
cfg,
texts,
ids,
labels=labels,
compute_embeddings=my_backend_compute_fn,
)
print(resolution.cache_path, resolution.was_cache_hit)
Docker / Docker Compose (env1-env4)
Compose files match the labenv_config/envkit-templates profiles (env1_a6000/env2_3090/env3_cc21_a100/env4_cc21_cpu):
- env1:
nvcr.io/nvidia/pytorch:25.02-py3 - env2:
nvcr.io/nvidia/pytorch:25.09-py3 - env3:
nvcr.io/nvidia/pytorch:23.10-py3 - env4:
python:3.11-slim
Examples:
docker compose -f docker/compose.env1.yaml run --rm app python tools/embedding_cache_smoketest.py --backend dummy
docker compose -f docker/compose.env4.yaml run --rm app python tools/embedding_smoketest.py --backend transformers
# debugpy (port publish requires --service-ports)
docker compose -f docker/compose.env1.yaml run --rm --service-ports app python tools/embedding_cache_smoketest.py --backend dummy --debugpy --wait-for-client
Sweep utility
Create a stable, line-based sweep list file:
python tools/make_sweep_list.py --glob "configs/sweep/*.yaml" --out sweep.txt --root .
Per-project Codex usage
In each project, paste CODEX_PROMPT.md (or add equivalent guidance in AGENTS.md) so Codex always aligns with this policy.
For cross-project rollout requests, use PROJECT_MIGRATION_PROMPT.md.
Automation runbook
- Runtime-aware automation prompt:
docs/AUTOMATION_PROMPT_RUNTIME_AWARE.md - Copy/paste execution checklist:
docs/AUTOMATION_EXECUTION_CHECKLIST.md - Pre-filled ready-to-run checklist:
docs/AUTOMATION_EXECUTION_CHECKLIST_READY.md - What to place in central/downstream/runtime repos:
docs/REPO_AUTOMATION_ASSETS.md
Updating shared standards
- Edit
embedding_rulebook.yaml,embedding_registry.yaml, and/orembedding_cache_spec.yaml. - In each project, run its embedding-cache validation/tests.
- If schema behavior changes, bump
identity.versioninembedding_rulebook.yaml.
Project details
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 labenv_embedding_cache-0.1.1.tar.gz.
File metadata
- Download URL: labenv_embedding_cache-0.1.1.tar.gz
- Upload date:
- Size: 33.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5186ad0cdde0feaed2fad51f8a320aaf9492e676117ab6619625a9f8e5eeb80
|
|
| MD5 |
ce1d59e460511be25c5124415b58779d
|
|
| BLAKE2b-256 |
1f7399e86042c11a33ab5b3633af10642262dbcac45f8320f608a96d41d95f55
|
File details
Details for the file labenv_embedding_cache-0.1.1-py3-none-any.whl.
File metadata
- Download URL: labenv_embedding_cache-0.1.1-py3-none-any.whl
- Upload date:
- Size: 33.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
017e24a1cb8249495e0daf5a45b079042513a80f84a857f1b09d21c7c7ea656c
|
|
| MD5 |
645244703b85d46c7ae2c940cc2f16f3
|
|
| BLAKE2b-256 |
d0c58d53d9322a5aeadf5856eb67855bf87d123e895e38d0b69ed40fa80d5986
|