Skip to main content

veccore

A ports-and-adapters vector substrate: embed → index → search → hydrate, backend- and embedder-agnostic.

veccore ships generic mechanisms and clean seams for semantic retrieval. You register a collection (choosing a backend + embedder), embed and upsert your items, and search — veccore returns {id, score, payload} and you hydrate the full record from your own system of record. Nothing about your domain lives in veccore; you never reinvent embedding, indexing, or idempotency.

pip install veccore                      # core (numpy only)
pip install 'veccore[qdrant]'            # + Qdrant server backend
pip install 'veccore[openai]'            # + OpenAI embedder (gated egress you inject)
pip install 'veccore[fastembed]'         # + on-device fastembed embedder (no API key, no network)
pip install 'veccore[st]'                # + sentence-transformers embedder

Quickstart

from veccore import (VecCore, CollectionRegistry, CollectionSpec, AuditEnvelope,
                     MockEmbedder, SqliteNumpyStore)

store = SqliteNumpyStore(path="/tmp/notes.sqlite")
core = VecCore(registry=CollectionRegistry(),
               stores={"sqlite_numpy": store},
               embedders={"mock": MockEmbedder()})
core.register(CollectionSpec(name="notes", backend="sqlite_numpy", embedder="mock", dim=64))

# every call carries an audit envelope: who + why (where/what are filled by veccore)
audit = AuditEnvelope(who="my_tool", why="index notes")
core.embed_upsert("notes",
                  [{"id": "n1", "text": "vector search over notes", "payload": {"src": "n1"}}],
                  audit)

hits = core.search("notes", "nearest ideas", k=5,
                   audit=AuditEnvelope(who="my_tool", why="find related"))
for h in hits:                           # each hit is {id, score, payload}
    ...                                  # hydrate the full record from YOUR store by h.id

What's in the box

  • Core ports — EmbedderPort, VectorStorePort, and GatePort (injected, so veccore stays free of any spend/telemetry dependency — you hand it your gate, or NullGate for local/free embedders).
  • Backends — SqliteNumpyStore (in-process, brute-force cosine; implements the optional matrix() analytics seam) and QdrantStore (server; implements search(filters=…) metadata/ACL push-down + Batch ingest). Future backends slot in by implementing VectorStorePort.
  • Embedders — MockEmbedder (deterministic, zero-spend), OpenAIEmbedder (network, gated), LocalEmbedder (fastembed / sentence-transformers, on-device), and CompositeEmbedder (fuse several embedders so a plain dot product equals their weighted fused cosine).
  • Content-sha idempotency — re-embed a row only when its text changes; a rerun over an unchanged corpus embeds nothing, and changing one item's text re-embeds exactly that one.
  • Typed errors — Unavailable(code=…) and NotSupported(capability, backend) — never a silent degrade.
  • Estimate-first — core.estimate(...) sizes a job (tokens + $) with zero spend before you embed.
  • Batch ingest — BatchIngest for large corpora via a provider Batch API: chunked, resumable, a durable handle ledger, every result accounted; realtime and non-blocking collect both supported.
  • Optional seams, negotiated — capabilities() + typed NotSupported mean expanding usage is additive: a consumer starts on search(collection, q, k), later adds filters=…, later calls matrix(), with no rewrite.

Design

veccore's line is mechanism vs policy: veccore ships the generic mechanisms + seams; each consumer builds its domain policy on top. The gate (spend/egress) and any observability sink are injected, so veccore has one hard dependency — numpy — and everything else (Qdrant, OpenAI, fastembed, sentence-transformers) is an optional extra you install only for the adapter you choose.

License

MIT © 2026 Ash Damle. Developed in the keelworks monorepo.

Metadata

Release files for veccore 0.3.0

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

Source distribution (sdist)

Source distribution for veccore 0.3.0
File Size Uploaded
veccore-0.3.0.tar.gz 67.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for veccore 0.3.0
File Interpreter ABI Platform
veccore-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 124.0 kB

Release files / veccore-0.3.0.tar.gz

Download URL veccore-0.3.0.tar.gz
Size 67.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6a209d6ab1e424adff3be0a7078fcf133bd7ff3a50cbe8673309dbb42755edca
BLAKE2b-256 checksum
How to use checksums
57a0f4b72e94967cc1bea9957e98b2f807ec2c8380852a35d1623f37953fc43e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release files / veccore-0.3.0-py3-none-any.whl

Download URL veccore-0.3.0-py3-none-any.whl
Size 56.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a00dd0d504eb5b8377cb6526b371534f0c5587d312fbeb5d4ed25879fc06acf0
BLAKE2b-256 checksum
How to use checksums
78297fabf6f4ee17cabb56246b8fb56038ae835239ab6ab60ca12b739f5304c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 29, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

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