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.2.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.2.0
File Size Uploaded
veccore-0.2.0.tar.gz 62.0 kB Details

Built distribution (wheel)

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

Total release size: 114.5 kB

Release files / veccore-0.2.0.tar.gz

Download URL veccore-0.2.0.tar.gz
Size 62.0 kB
Tags Source
SHA-256 checksum
How to use checksums
11b889ad5a60c221e6daa2b58de9d2ff8917dd4b63494034d5b58bea92098442
BLAKE2b-256 checksum
How to use checksums
d70aaa8c6afd6546191c2d5a917fcabd82c3e98fec8d3f78dd21e0fb959e06a5
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.2.0-py3-none-any.whl

Download URL veccore-0.2.0-py3-none-any.whl
Size 52.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a0b7efe1ce2b121870cac69a06d2955ed9436a3a1d2b7bc3f2b95a09c44c72d0
BLAKE2b-256 checksum
How to use checksums
f550939e98208dce228d5875e3ab71f4836e26394d8b9c7b3f05261a9c796170
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

0.3.0

2 release files

This release

0.2.0 This release

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