Skip to main content

Hyperdimensional Computing / Vector Symbolic Architectures library

Project description

HoloVec Logo

License Python Code style: black

Vector Symbolic Architectures for compositional, high-dimensional computing.

Documentation | Installation | Quick Start | Examples


What HoloVec Is

HoloVec is a Python library for hyperdimensional computing (HDC) and vector symbolic architectures (VSA). It gives you a consistent API for:

  • binding and unbinding structured representations
  • bundling sets, prototypes, and memories
  • permutation-based order encoding
  • scalar, sequence, spatial, and structured encoders
  • associative retrieval and cleanup memories

The library currently treats NumPy as the release-blocking backend. PyTorch and JAX are supported as optional backends when their environment-specific tests are enabled.


Installation

pip install holovec

Optional extras:

pip install "holovec[torch]"  # PyTorch backend
pip install "holovec[jax]"    # JAX backend
pip install "holovec[all]"    # torch + jax + dev + docs extras

For source work:

git clone https://github.com/Twistient/HoloVec.git
cd HoloVec
uv sync --extra dev

Use uv pip install -e .[dev] only when you explicitly want an editable install outside the normal uv sync workflow.


Quick Start

from holovec import VSA
from holovec.encoders import FractionalPowerEncoder
from holovec.retrieval import Codebook, ItemStore

model = VSA.create("FHRR", dim=4096, seed=7)

role_color = model.random(seed=1)
role_temp = model.random(seed=2)
red = model.random(seed=10)
apple = model.random(seed=11)

temp_encoder = FractionalPowerEncoder(
    model,
    min_val=0.0,
    max_val=100.0,
    bandwidth=1.5,
    seed=3,
)

record = model.bundle(
    [
        model.bind(role_color, red),
        model.bind(role_temp, temp_encoder.encode(24.0)),
    ]
)

recovered_color = model.unbind(record, role_color)
store = ItemStore(model).fit(
    Codebook({"red": red, "apple": apple}, backend=model.backend)
)

print(store.query(recovered_color, k=1))

If you want a runnable version of that workflow, start with examples/00_quickstart.py.


Choosing a Model

Model Space Inverse Style Order Sensitivity Typical Use
FHRR Complex Exact No General-purpose default, continuous encoders
GHRR Matrix Exact Yes Order-sensitive and nested structures
MAP Bipolar Self-inverse No Fast algebra, hardware-friendly workflows
HRR Real/Bipolar Approximate No Classic baseline and literature reproduction
VTB Matrix/Real Approximate Yes Directional bindings and asymmetric relations
BSC Binary Self-inverse No Binary and FPGA-style workflows
BSDC Sparse Approximate No Sparse memory-efficient representations
BSDC-SEG Sparse segment Self-inverse No Segment-sparse retrieval and fast pattern search

Start with FHRR unless you have a clear reason to prefer order-sensitive matrix models, self-inverse discrete models, or sparse segment-based storage.

Examples of model-specific factory configuration:

VSA.create("BSDC", dim=20000, sparsity=0.01, binding_mode="cdt")
VSA.create("BSDC-SEG", dim=400, segments=20)
VSA.create("GHRR", dim=96, matrix_size=3, diagonality=0.4)
VSA.create("VTB", dim=512, n_bases=4, temperature=50.0)
VSA.create("FHRR", dim=4096, backend="torch", device="cuda")

See the full comparison in docs/models/index.md.


Maintained Examples

These examples are maintained alongside the core API and exercised in automated smoke tests:

Additional examples remain in the repository, but the list above is the maintained starting path through the library.


Documentation Highlights


Testing

uv run --extra dev pytest --no-cov
uv run --extra dev ruff check holovec tests
uv run --extra dev mypy holovec
uv sync --extra docs && uv run --extra docs mkdocs build --strict

The maintained example scripts are also exercised in automated smoke tests.


References

HoloVec implements models and encoders drawn from the HDC/VSA literature. For a fuller bibliography, see the documentation references.

Good starting points:

  • Pentti Kanerva, Hyperdimensional Computing: An Introduction to Computing in Distributed Representation with High-Dimensional Random Vectors (2009)
  • Tony Plate, Holographic Reduced Representation (2003)
  • Schlegel, Neubert, and Protzel, A Comparison of Vector Symbolic Architectures (2022)
  • Kleyko et al., A Survey on Hyperdimensional Computing / Vector Symbolic Architectures Parts I and II (2022, 2023)

Citation

For machine-readable citation metadata, see CITATION.cff.

@software{holovec_2026,
  author  = {Schroeder, Brodie},
  title   = {HoloVec: Vector Symbolic Architectures for Python},
  year    = {2026},
  version = {1.0.0},
  url     = {https://github.com/Twistient/HoloVec},
  license = {Apache-2.0}
}

Contributing

See CONTRIBUTING.md. Key areas: new models, encoders, documentation, and performance.

License

Apache 2.0. See LICENSE.

Contact

GitHub IssuesDiscussionsbrodie@twistient.com

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

holovec-1.0.1.tar.gz (164.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

holovec-1.0.1-py3-none-any.whl (129.6 kB view details)

Uploaded Python 3

File details

Details for the file holovec-1.0.1.tar.gz.

File metadata

  • Download URL: holovec-1.0.1.tar.gz
  • Upload date:
  • Size: 164.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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

Hashes for holovec-1.0.1.tar.gz
Algorithm Hash digest
SHA256 a0c74e66302fd69fae4fc1fb5f7cfafa00f487bba74887b0e6ccbe72c243ad4b
MD5 00ec605eea4191586ba6191ba5298079
BLAKE2b-256 fafa3e0659fff488c9d166e017de46b5d6c6f15d6e63038f47a629fd5ef76d82

See more details on using hashes here.

File details

Details for the file holovec-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: holovec-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 129.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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

Hashes for holovec-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1b19aca5ce5a3db0f809b1e9f152e228f38cc2e3e747106305b9588d5d8fd8d4
MD5 0dea6d4b3eb0f56d57414c42fe5645d6
BLAKE2b-256 5fe3ecdf5a48ecebf946e405e751e835bf64d23919c82ad1f2434a6b9f525633

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page