Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Ask DeepWiki

ovos-chromadb-embeddings-plugin

ChromaDB-backed EmbeddingsDB vector store plugin for OpenVoiceOS.

Install

pip install ovos-chromadb-embeddings-plugin

What is an EmbeddingsDB?

EmbeddingsDB is the abstract base class from ovos-plugin-manager for vector stores. Plugins implementing it are discovered automatically by OPM under the entry-point group opm.embeddings. This plugin registers as:

opm.embeddings → ovos-chromadb-embeddings-plugin → ChromaEmbeddingsDB

OVOS subsystems call OVOSPluginFactory.get_plugin("opm.embeddings") to obtain a configured store without coupling to a specific backend, so any EmbeddingsDB plugin (ChromaDB here, or e.g. qdrant) is a drop-in swap.

Where this fits in OVOS

This plugin is the vector store half of the stack. It stores and searches vectors but does not produce them. Pair it with an embedding producer such as ovos-gguf-embeddings-plugin (text → vectors), or the face / voice embedders.

Concrete consumers that can be backed by this store:

Consumer Uses the store for
ovos-persona-server RAG: the OpenAI-compatible Files / Vector-Stores / /search endpoints
ovos-memory-plugins long-term semantic memory for a persona
face / voice recognition nearest-neighbour identity lookup over enrolment vectors

It is local-first: in persistent mode it runs fully offline on a CPU with no server.

Quickstart

import tempfile, numpy as np
from ovos_chromadb_embeddings import ChromaEmbeddingsDB

with tempfile.TemporaryDirectory() as tmp:
    db = ChromaEmbeddingsDB(config={"path": tmp})

    # Store a few 4-d vectors
    db.add_embeddings("apple",  np.array([0.9, 0.1, 0.0, 0.0]))
    db.add_embeddings("banana", np.array([0.0, 0.9, 0.1, 0.0]))
    db.add_embeddings("cherry", np.array([0.0, 0.0, 0.9, 0.1]))

    # Nearest-neighbour query
    query = np.array([0.85, 0.15, 0.0, 0.0])
    results = db.query(query, top_k=2)
    # → [("apple", 0.003...), ("banana", 0.45...)]
    print(results[0][0])  # "apple"

query returns (id, distance) tuples ordered nearest-first. The score is a distance, not a similarity. Lower is closer for the default cosine metric (and for l2). Change the metric with hnsw:space (see Configuration). The query vector must have the same dimensionality as the stored vectors.

Configuration

Pass a config dict to ChromaEmbeddingsDB(config=...) or set it in your OVOS configuration under the plugin key.

Key Type Default Description
path str "./chromadb_storage" Local persistence directory (PersistentClient mode).
host str none Remote ChromaDB server host. When set, uses HttpClient instead of PersistentClient.
port int 8000 Port for the remote ChromaDB server (HttpClient mode only).
default_collection_name str "embeddings" Name of the collection created/used on init.
hnsw:space str "cosine" Distance metric for HNSW index. Accepted: "cosine", "l2", "ip". Set via collection metadata.

Local (persistent) mode

db = ChromaEmbeddingsDB(config={"path": "/var/lib/ovos/chromadb"})

Remote server mode

db = ChromaEmbeddingsDB(config={"host": "192.168.1.10", "port": 8000})

API overview

Method Description
add_embeddings(key, embedding, metadata, collection_name) Upsert a single vector.
add_embeddings_batch(keys, embeddings, metadata, collection_name) Upsert a list of vectors.
get_embeddings(key, collection_name, return_metadata) Retrieve a vector by key.
get_embeddings_batch(keys, collection_name, return_metadata) Retrieve multiple vectors.
delete_embeddings(key, collection_name) Delete a vector by key.
delete_embeddings_batch(keys, collection_name) Delete multiple vectors.
query(embedding, top_k, return_metadata, collection_name) ANN search, returns [(id, distance)].
create_collection(name, metadata) Create (or get) a named collection.
get_collection(name) Retrieve a collection handle (raises ValueError if absent).
delete_collection(name) Drop a collection.
list_collections() List all collections.
count_embeddings_in_collection(collection_name) Count stored vectors.

Documentation

Examples

Testing

pip install -e ".[test]"
pytest test/ -v

The test suite uses a temporary PersistentClient with no network access. test/test_e2e.py runs a real end-to-end flow (add → query → verify nearest neighbour) using a small deterministic local embedder so it passes in CI without model downloads.


Credits

TigreGótico originally developed this plugin for OpenVoiceOS, sponsored by VisioLab. The NGI0 Commons Fund / NLnet funded the modernization.

VisioLab

This work was sponsored by VisioLab, part of Royal Dutch Visio. Royal Dutch Visio is the test, education, and research center in the field of (innovative) assistive technology for blind and visually impaired people and professionals. We explore (new) technological developments such as Voice, VR and AI and make the knowledge and expertise we gain available to everyone.

NGI0 Commons Fund

This project was funded through the NGI0 Commons Fund, a fund established by NLnet with financial support from the European Commission's Next Generation Internet programme, under the aegis of DG Communications Networks, Content and Technology under grant agreement No 101135429.

Metadata

Release files for ovos-chromadb-embeddings-plugin 0.3.1a1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ovos-chromadb-embeddings-plugin 0.3.1a1
File Size Uploaded Provenance
ovos_chromadb_embeddings_plugin-0.3.1a1.tar.gz 15.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for ovos-chromadb-embeddings-plugin 0.3.1a1
File Interpreter ABI Platform
ovos_chromadb_embeddings_plugin-0.3.1a1-py3-none-any.whl Python 3 none any Details

Total release size: 26.1 kB

Release files / ovos_chromadb_embeddings_plugin-0.3.1a1.tar.gz

Download URL ovos_chromadb_embeddings_plugin-0.3.1a1.tar.gz
Size 15.4 kB
Tags Source
SHA-256 checksum
How to use checksums
04dea0b676cf6f4e4824972b4909831c3fc07a2cc1d5759999cf8c0998857d0b
BLAKE2b-256 checksum
How to use checksums
611f89f78ed0a60c80c9e79d76d836917d12797450d09393860297343e083f81
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Release files / ovos_chromadb_embeddings_plugin-0.3.1a1-py3-none-any.whl

Download URL ovos_chromadb_embeddings_plugin-0.3.1a1-py3-none-any.whl
Size 10.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
29ee6ebbd5567f61f9f82dc5762b484b9c646c5712b9b95d1986f1c33ec5d7a0
BLAKE2b-256 checksum
How to use checksums
c098cd43edeb9024508b3827936e9bd8e52a98584104703462b11627f32a7dbb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.16

Security for ovos-chromadb-embeddings-plugin 0.3.1a1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page