Metadata-Version: 2.4
Name: VecturaDB
Version: 1.0.0rc3
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Requires-Dist: build>=1.0.3
Requires-Dist: pydantic>=2.0
Requires-Dist: pydantic-settings>=2.0
Requires-Dist: pybase64>=1.4.1
Requires-Dist: uvicorn[standard]>=0.18.3
Requires-Dist: numpy>=1.22.5
Requires-Dist: typing-extensions>=4.5.0
Requires-Dist: onnxruntime>=1.14.1
Requires-Dist: opentelemetry-api>=1.2.0
Requires-Dist: opentelemetry-exporter-otlp-proto-grpc>=1.2.0
Requires-Dist: opentelemetry-sdk>=1.2.0
Requires-Dist: tokenizers>=0.13.2
Requires-Dist: pypika>=0.48.9
Requires-Dist: tqdm>=4.65.0
Requires-Dist: overrides>=7.3.1
Requires-Dist: importlib-resources
Requires-Dist: graphlib-backport>=1.0.3 ; python_full_version < '3.9'
Requires-Dist: grpcio>=1.58.0
Requires-Dist: bcrypt>=4.0.1
Requires-Dist: typer>=0.9.0
Requires-Dist: kubernetes>=28.1.0
Requires-Dist: tenacity>=8.2.3
Requires-Dist: pyyaml>=6.0.0
Requires-Dist: mmh3>=4.0.1
Requires-Dist: orjson>=3.9.12
Requires-Dist: httpx>=0.27.0
Requires-Dist: rich>=10.11.0
Requires-Dist: jsonschema>=4.19.0
Requires-Dist: chroma-hnswlib==0.7.6 ; extra == 'dev'
Requires-Dist: fastapi>=0.115.9 ; extra == 'dev'
Requires-Dist: opentelemetry-instrumentation-fastapi>=0.41b0 ; extra == 'dev'
Provides-Extra: dev
License-File: LICENSE
License-File: NOTICE
Summary: Vector database compatible with the Chroma API, bringing Chroma Cloud's features to open source.
Author: VecturaDB contributors
Author-email: Jeff Huber <jeff@trychroma.com>, Anton Troynikov <anton@trychroma.com>
Requires-Python: >=3.9
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
Project-URL: Bug Tracker, https://github.com/VecturaDB/VecturaDB/issues
Project-URL: Homepage, https://vecturadb.org

<p align="center">
  <picture>
    <source media="(prefers-color-scheme: dark)" srcset="docs/assets/vecturadb-mark-dark.svg">
    <img src="https://raw.githubusercontent.com/VecturaDB/VecturaDB/main/docs/assets/vecturadb-mark-256.png" alt="VecturaDB" width="96">
  </picture>
</p>

# VecturaDB

[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/VecturaDB/VecturaDB/badge)](https://scorecard.dev/viewer/?uri=github.com/VecturaDB/VecturaDB)

VecturaDB was forked from the open-source [Chroma](https://github.com/chroma-core/chroma) project. It is not affiliated with Chroma.

VecturaDB is an open-source vector database, compatible with the Chroma API. This repository keeps the full git history of Chroma and its Apache 2.0 license.

## Why VecturaDB

Chroma Cloud is winding down: it stops accepting writes on 22 November 2026 and stops serving reads on 22 December 2026. Some features of Chroma exist only in Chroma Cloud and in its distributed version: sparse vectors, the BM25 index and hybrid search. VecturaDB brings them to the single-node database, the one that runs with Docker, as a server, or inside a Python application, so that they stay available to everyone, as open source.

Sparse vectors, BM25, the Search API, hybrid search included, and collection fork work on the single node.

The releases are previews, `1.0.0-preview.N`, until VecturaDB has been proven in use; then comes `1.0.0`.

## Python

```bash
pip uninstall -y chromadb
pip install VecturaDB
```

The `VecturaDB` package keeps the import name `chromadb`, so existing code runs as it is.

```python
import chromadb

client = chromadb.HttpClient(host="localhost", port=8000)
```

While only previews exist, `pip install VecturaDB` installs the newest preview. Once `1.0.0` is out, a preview needs `pip install --pre VecturaDB`.

### Packages that depend on chromadb

`VecturaDB` and `chromadb` install the same modules, so they cannot be installed side by side. Packages that declare a dependency on `chromadb`, such as `langchain-chroma`, make pip install `chromadb` too, and its files replace those of VecturaDB. Install those packages first and VecturaDB last:

```bash
pip install langchain-chroma
pip install --force-reinstall --no-deps VecturaDB
```

- Run the last line again after any command that installs or upgrades `chromadb`.
- Do not uninstall `chromadb` afterwards: it removes files that VecturaDB uses.
- A constraints file does not help: pip cannot exclude `chromadb` and still install a package that requires it.

## Docker

```bash
docker run -p 8000:8000 -v ./data:/data ghcr.io/vecturadb/vecturadb:preview
```

Images for amd64 and arm64. `preview` is the newest preview; every release also has a tag with its version. The data lives in `/data`.

## CLI

Linux (x86_64 and arm64) and macOS (x64 and arm64):

```bash
curl -sSL https://raw.githubusercontent.com/VecturaDB/VecturaDB/main/rust/cli/install/install.sh | bash
chroma run --path ./data
```

Windows (x64), in PowerShell:

```powershell
iex ((New-Object System.Net.WebClient).DownloadString('https://raw.githubusercontent.com/VecturaDB/VecturaDB/main/rust/cli/install/install.ps1'))
```

The scripts install the newest release, previews included. Every binary is also in the [releases](https://github.com/VecturaDB/VecturaDB/releases). The binary keeps the name `chroma`.

## Moving data out of Chroma Cloud

The CLI copies collections from Chroma Cloud into a running VecturaDB:

```bash
chroma login --api-key <your Chroma Cloud API key>
chroma copy --from-cloud --to-local --host http://localhost:8000 --db <database> --all
```

To copy only some collections, use `--collections <name>` once per collection instead of `--all`. The collections must not exist yet in VecturaDB.

The copy stops at the first collection it cannot create. The collections copied before it stay in VecturaDB: copy the rest with `--collections`. Collections whose metadata holds the legacy `hnsw:*` settings fail with `Cannot set both collection config and schema simultaneously`; Chroma gives the same error.

What arrives: every record with its document, metadata, embedding and URI, the metadata of the collection, and its schema, sparse and BM25 indexes included. Sparse and BM25 searches give the same scores as on Chroma Cloud. The settings of the dense index do not arrive: Chroma Cloud uses SPANN, VecturaDB uses HNSW with its default settings.

## Clients

A client that needs to know which server it talks to reads `GET /api/v2/pre-flight-checks`. VecturaDB answers with the fields of Chroma and adds a `server` block, for example:

```json
{"max_batch_size": 5461, "supports_base64_encoding": true, "server": {"name": "VecturaDB", "version": "1.0.0-preview.N", "features": ["sparse_vector_index", "bm25", "search", "fork", "api_keys"]}}
```

`features` lists what VecturaDB has beyond single-node Chroma:

- `sparse_vector_index`: sparse vector indexes in the schema of a collection;
- `bm25`: sparse indexes with BM25 scoring;
- `search`: the Search API, hybrid search included;
- `fork`: collection fork and fork count;
- `api_keys`: API keys, as on Chroma Cloud.

With [API keys](docs/mintlify/guides/deploy/client-server-mode.mdx), only a request with a valid key gets the block. Chroma does not send the block, and the clients of Chroma ignore it. `GET /api/v2/version` answers `1.0.0`, as Chroma does.

## Telemetry

Telemetry is off by default. Setting `ANONYMIZED_TELEMETRY=TRUE` turns on the anonymized telemetry inherited from Chroma (PostHog, Python package only). The server binary sends none.

## License

Apache License 2.0: see [LICENSE](https://github.com/VecturaDB/VecturaDB/blob/main/LICENSE) and [NOTICE](https://github.com/VecturaDB/VecturaDB/blob/main/NOTICE).

