Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ This release ships three things at once:
for the full table, methodology, and caveats.
2. **Rename from `voyager-index` to `colsearch`.** PyPI package is now
`colsearch` (`pip install colsearch`), the GitHub repository is
`ddickmann/colsearch` (the old `ddickmann/voyager-index` URL
`latenceainew/colsearch` (the old `ddickmann/voyager-index` URL
auto-redirects), and the on-disk Python package is `colsearch` with an
importable `colsearch-server` entry point. The project is repositioned
as the **production category for late-interaction retrieval** —
Expand Down
608 changes: 201 additions & 407 deletions LICENSE

Large diffs are not rendered by default.

81 changes: 38 additions & 43 deletions LICENSING.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,72 +2,67 @@

## Repository-Level License

This repository is licensed under the **Creative Commons Attribution-NonCommercial
4.0 International** license (SPDX: `CC-BY-NC-4.0`). See the root `LICENSE` file
for the full legal code.
This repository is licensed under the **Apache License 2.0** (SPDX:
`Apache-2.0`). See the root `LICENSE` file for the full legal text and the
root `NOTICE` file for the attribution notice.

In plain English:

- You may **use, copy, modify, and redistribute** this code for **research,
evaluation, academic, personal, and other non-commercial** purposes, as long
as you provide attribution.
- You **may not** use this code, in whole or in part, for any **commercial or
revenue-generating purpose** (including, without limitation, selling it,
offering it as a hosted or managed service, or embedding it in a product or
service that you sell, license, or monetize) without first obtaining a
separate commercial license from the copyright holder.
- You may **use, copy, modify, redistribute, and sublicense** this code for
**any purpose, commercial or non-commercial**.
- You must **retain the license and notices** when you redistribute
(Apache-2.0 Section 4), and **mark any files you modify** as changed
(Section 4(b)).
- The license includes an **express patent grant** from contributors
(Section 3).

This summary is a convenience and does not replace the legal text in `LICENSE`.
This summary is a convenience and does not replace the legal text in
`LICENSE`.

## Explicit Exceptions And Boundaries
## License History

### Vendored Qdrant Subtree
- Versions `0.1.0` through `0.1.6`, published under the `voyager-index`
name, were licensed under Apache-2.0.
- Version `0.1.7` through the current published release were distributed
under `CC-BY-NC-4.0`.
- This source tree, and all releases made from it starting with the next
version, are licensed under Apache-2.0.
- Recipients of earlier releases retain them under the license they were
originally distributed with.

## Vendored Qdrant Subtree

- Path: `src/kernels/vendor/qdrant/`
- License: Apache-2.0
- License: Apache-2.0 (upstream's own license)
- Reason: this subtree is a vendored copy of upstream
[qdrant/qdrant](https://github.com/qdrant/qdrant) and cannot be relicensed.
Each file inside this directory remains under its original Apache-2.0 terms,
including any local modifications, which are clearly marked per Apache-2.0
[qdrant/qdrant](https://github.com/qdrant/qdrant). Each file inside this
directory remains under its original upstream Apache-2.0 terms and
copyright, and any local modifications are clearly marked per Apache-2.0
Section 4(b).
- Details: see `internal/contracts/QDRANT_VENDORING.md` and
`src/kernels/vendor/qdrant/LICENSE`.

This is the **only** carveout. All other code in the repository — including
the native Rust crates under `src/kernels/` that depend on the vendored
subtree via Cargo path dependencies — is licensed under CC-BY-NC-4.0.
When those crates are built into binaries that embed Qdrant code, the
embedded Qdrant code continues to carry its original Apache-2.0 terms at the
file level.
The vendored subtree's license is consistent with the repository-level
license, but its upstream copyright and NOTICE obligations are separate and
travel with those files — including into the native Rust crates under
`src/kernels/` that depend on the vendored subtree via Cargo path
dependencies, and into any binaries built from them.

## Practical Rule

All code in this repository is `CC-BY-NC-4.0` unless it lives inside
`src/kernels/vendor/qdrant/`, in which case it is `Apache-2.0`.
All code in this repository is `Apache-2.0`. Files inside
`src/kernels/vendor/qdrant/` carry upstream Qdrant's Apache-2.0 license and
copyright rather than this repository's; honor their notices when
redistributing.

## Distribution

Source distributions, wheels, and container images for this repository
should include:

- `LICENSE` (CC BY-NC 4.0 legal code)
- `LICENSE` (Apache License 2.0 text)
- `NOTICE`
- `LICENSING.md` (this file)
- `THIRD_PARTY_NOTICES.md`
- `src/kernels/vendor/qdrant/LICENSE` whenever the vendored Qdrant subtree
or any derivative of it is included.

## Commercial Use

CC-BY-NC-4.0 forbids commercial use without a separate license. If you want
to use this code or any derivative of it commercially — for example, in a
revenue-generating product, in a hosted or managed service, in a paid
consulting engagement, or in any business activity that is primarily
intended for commercial advantage or monetary compensation — please contact
the copyright holder to discuss commercial licensing terms:

- Email: `commercial@latence.ai`

Pre-existing releases that were previously distributed under Apache-2.0
remain available under Apache-2.0 to those who already obtained them; the
license change above applies to this source tree and to releases made from
it going forward.
2 changes: 2 additions & 0 deletions NOTICE
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
colsearch
Copyright 2026 Dennis Dickmann
28 changes: 6 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# colsearch

[![CI](https://github.com/ddickmann/colsearch/actions/workflows/ci.yml/badge.svg)](https://github.com/ddickmann/colsearch/actions/workflows/ci.yml)
[![CI](https://github.com/latenceainew/colsearch/actions/workflows/ci.yml/badge.svg)](https://github.com/latenceainew/colsearch/actions/workflows/ci.yml)
[![PyPI](https://img.shields.io/pypi/v/colsearch)](https://pypi.org/project/colsearch/)
[![License: CC BY-NC 4.0](https://img.shields.io/badge/license-CC%20BY--NC%204.0-lightgrey.svg)](LICENSE)
[![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)

**ColSearch — the production search category for late-interaction retrieval.** One node. CPU or GPU. MaxSim is the truth scorer. 1.58-bit ColBERT at 40 B/token. **3.12× FastPlaid on H100.**

Expand Down Expand Up @@ -166,26 +166,10 @@ Three execution modes share the same collection format and API contract: **CPU e
- Release process: [RELEASING.md](RELEASING.md)
- Code of Conduct: [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)

## License & Commercial Use
## License

**This project is licensed under [Creative Commons Attribution-NonCommercial 4.0 International](LICENSE) (`CC-BY-NC-4.0`). It is free for non-commercial use only.**
**This project is licensed under the [Apache License 2.0](LICENSE) (`Apache-2.0`).** You may use, copy, modify, redistribute, and build on `colsearch` for any purpose — commercial or otherwise — under the terms of that license.

You may use, copy, modify, and redistribute `colsearch` for:
**Vendored Qdrant subtree.** The directory `src/kernels/vendor/qdrant/` is a vendored copy of upstream [qdrant/qdrant](https://github.com/qdrant/qdrant), which is also **Apache-2.0**; that license travels with those files into any derivative binaries. See [LICENSING.md](LICENSING.md) and [internal/contracts/QDRANT_VENDORING.md](internal/contracts/QDRANT_VENDORING.md) for details.

- research, evaluation, and benchmarking
- academic work and teaching
- personal projects and experimentation
- internal, non-revenue R&D inside an organization

You may **not** use `colsearch`, in whole or in part, for any commercial or revenue-generating purpose without a separate commercial license. This explicitly includes:

- selling, sublicensing, or relicensing the code
- offering it as a hosted, managed, or SaaS product
- embedding it in any product, service, or integration that you sell, license, or otherwise monetize
- using it to provide paid consulting deliverables built on top of it

For commercial licensing inquiries, contact **commercial@latence.ai**.

**Carveout — vendored Qdrant subtree.** The directory `src/kernels/vendor/qdrant/` is a vendored copy of upstream [qdrant/qdrant](https://github.com/qdrant/qdrant) and remains under its original **Apache-2.0** license; that license travels with those files into any derivative binaries. See [LICENSING.md](LICENSING.md) and [internal/contracts/QDRANT_VENDORING.md](internal/contracts/QDRANT_VENDORING.md) for the full carveout.

**Prior releases.** Releases previously distributed under the `voyager-index` name (versions `0.1.0` through `0.1.6`, Apache-2.0) remain available to recipients who already obtained them under their original license. The CC-BY-NC-4.0 license above and the `colsearch` package name apply to this source tree and to all `0.1.7+` releases made from it going forward.
**License history.** Versions `0.1.0` through `0.1.6` (published under the `voyager-index` name) were Apache-2.0. Version `0.1.7` through the current published release were distributed under `CC-BY-NC-4.0`. This source tree, and all releases made from it starting with the next version, are Apache-2.0. Recipients of earlier releases retain them under the license they were originally distributed with.
2 changes: 1 addition & 1 deletion THIRD_PARTY_NOTICES.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Third-Party Notices

The umbrella `colsearch` repository is licensed under
**CC-BY-NC-4.0** (see `LICENSE` and `LICENSING.md`). It additionally bundles
**Apache-2.0** (see `LICENSE` and `LICENSING.md`). It additionally bundles
third-party code that carries its own, separate license. Each such component
and its license is documented below; those obligations apply independently
of the repository-level license whenever the third-party files (or
Expand Down
2 changes: 1 addition & 1 deletion colsearch/_internal/inference/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
Production-ready with validation and sensible defaults.

Author: ColBERT Team
License: CC-BY-NC-4.0
License: Apache-2.0
"""

import json
Expand Down
2 changes: 1 addition & 1 deletion colsearch/_internal/inference/engines/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
This allows for unified handling of ColBERT, BM25, Neo4j, and future engines.

Author: ColBERT Team
License: CC-BY-NC-4.0
License: Apache-2.0
"""

from abc import ABC, abstractmethod
Expand Down
2 changes: 1 addition & 1 deletion colsearch/_internal/inference/engines/bm25.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
Reference: search-index-innovations/search_enhancements.md

Author: Latence Team
License: CC-BY-NC-4.0
License: Apache-2.0
"""

import bisect
Expand Down
2 changes: 1 addition & 1 deletion colsearch/_internal/inference/engines/colbert.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
multi-vector search with product quantization.

Author: Latence Team
License: CC-BY-NC-4.0
License: Apache-2.0
"""

import logging
Expand Down
2 changes: 1 addition & 1 deletion colsearch/_internal/inference/engines/colpali.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
visual_results = colpali_engine.search(query_visual_emb)

Author: Latence Team
License: CC-BY-NC-4.0
License: Apache-2.0
"""

import heapq
Expand Down
2 changes: 1 addition & 1 deletion colsearch/_internal/inference/engines/hnsw.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
Reference: search-index-innovations/search_enhancements.md

Author: Latence Team
License: CC-BY-NC-4.0
License: Apache-2.0
"""

import json
Expand Down
2 changes: 1 addition & 1 deletion colsearch/_internal/inference/engines/neo4j.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
Leverages graph structure for semantic search and relationship traversal.

Author: ColBERT Team
License: CC-BY-NC-4.0
License: Apache-2.0
"""

import logging
Expand Down
2 changes: 1 addition & 1 deletion colsearch/_internal/inference/fusion/strategies.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
- Borda Count: Rank-based voting

Author: ColBERT Team
License: CC-BY-NC-4.0
License: Apache-2.0
"""

from collections import defaultdict
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
- Scales to millions of documents

Author: ColBERT Team
License: CC-BY-NC-4.0
License: Apache-2.0
"""

import json
Expand Down
2 changes: 1 addition & 1 deletion colsearch/_internal/inference/index_core/index.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
- Large (>50K docs): PLAID candidates → Triton reranking

Author: ColBERT Team
License: CC-BY-NC-4.0
License: Apache-2.0
"""

import json
Expand Down
2 changes: 1 addition & 1 deletion colsearch/_internal/inference/index_core/storage.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
- Lazy deletion with compaction

Author: ColBERT Team
License: CC-BY-NC-4.0
License: Apache-2.0
"""

import json
Expand Down
2 changes: 1 addition & 1 deletion colsearch/_internal/inference/quantization/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
- Matryoshka (MRL): arXiv:2405.12497

Author: Latence Team
License: CC-BY-NC-4.0
License: Apache-2.0
"""

from .binary import (
Expand Down
2 changes: 1 addition & 1 deletion colsearch/_internal/inference/quantization/binary.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
Reference: arXiv:2409.09913 (Binary Embedding for Retrieval)

Author: Latence Team
License: CC-BY-NC-4.0
License: Apache-2.0
"""

import logging
Expand Down
2 changes: 1 addition & 1 deletion colsearch/_internal/inference/quantization/product.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
Reference: arXiv:2405.12497 (Product Quantization for Similarity Search)

Author: Latence Team
License: CC-BY-NC-4.0
License: Apache-2.0
"""

import logging
Expand Down
2 changes: 1 addition & 1 deletion colsearch/_internal/inference/quantization/scalar.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
Provides good balance of compression and accuracy.

Author: Latence Team
License: CC-BY-NC-4.0
License: Apache-2.0
"""

import logging
Expand Down
2 changes: 1 addition & 1 deletion colsearch/_internal/server/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
uvicorn colsearch.server:app --host 127.0.0.1 --port 8080

Author: Latence Team
License: CC-BY-NC-4.0
License: Apache-2.0
"""

import logging
Expand Down
4 changes: 2 additions & 2 deletions docs/benchmarks/fast-plaid-head-to-head.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ published numbers, a single H100 (80 GB or 40 GB SXM) is the target.
### Option A — local box with a CUDA GPU

```bash
git clone https://github.com/ddickmann/colsearch.git
git clone https://github.com/latenceainew/colsearch.git
cd colsearch

python -m venv .venv
Expand All @@ -82,7 +82,7 @@ recipe that works:
# - Vast.ai: any "pytorch/pytorch:2.4.0-cuda12.1-cudnn9-runtime" image

# 2. SSH in, then:
git clone https://github.com/ddickmann/colsearch.git
git clone https://github.com/latenceainew/colsearch.git
cd colsearch
pip install --upgrade pip
pip install -e ".[shard,gpu,native,dev]"
Expand Down
2 changes: 1 addition & 1 deletion docs/full_feature_cookbook.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ What the native extras add:
### Install from source (contributors)

```bash
git clone https://github.com/ddickmann/colsearch.git
git clone https://github.com/latenceainew/colsearch.git
cd colsearch
bash scripts/install_from_source.sh --cpu
```
Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ Requires Python 3.10+ and a Rust toolchain only if you want to build the public
native wheels from source.

```bash
git clone https://github.com/ddickmann/colsearch.git
git clone https://github.com/latenceainew/colsearch.git
cd colsearch
bash scripts/install_from_source.sh --cpu
```
Expand Down
6 changes: 3 additions & 3 deletions mkdocs.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
site_name: colsearch
site_description: Shard-first late-interaction retrieval for ColBERT and ColPali workloads
site_url: https://ddickmann.github.io/colsearch/
site_url: https://latenceainew.github.io/colsearch/

repo_name: ddickmann/colsearch
repo_url: https://github.com/ddickmann/colsearch
repo_name: latenceainew/colsearch
repo_url: https://github.com/latenceainew/colsearch

theme:
name: material
Expand Down
10 changes: 5 additions & 5 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ version = "0.1.7"
description = "ColSearch — production late-interaction retrieval for ColBERT and ColPali style workloads. Single-node CPU/GPU, Triton MaxSim, 1.58-bit ROQ quantization at 40 B/token, BM25 hybrid search, durable CRUD/WAL, multimodal preprocessing, and a base64-ready reference API."
readme = "README.md"
requires-python = ">=3.10"
license = "CC-BY-NC-4.0"
license = "Apache-2.0"
license-files = [
"LICENSE",
"LICENSING.md",
Expand Down Expand Up @@ -131,10 +131,10 @@ colsearch-server = "colsearch.server:main"
voyager-index-server = "colsearch.server:main"

[project.urls]
Homepage = "https://github.com/ddickmann/colsearch"
Repository = "https://github.com/ddickmann/colsearch"
Issues = "https://github.com/ddickmann/colsearch/issues"
Changelog = "https://github.com/ddickmann/colsearch/blob/main/CHANGELOG.md"
Homepage = "https://github.com/latenceainew/colsearch"
Repository = "https://github.com/latenceainew/colsearch"
Issues = "https://github.com/latenceainew/colsearch/issues"
Changelog = "https://github.com/latenceainew/colsearch/blob/main/CHANGELOG.md"

[tool.setuptools]
include-package-data = true
Expand Down
2 changes: 1 addition & 1 deletion src/kernels/gem_router/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ version = "0.1.1"
edition = "2021"
authors = ["Latence Team"]
description = "GEM-inspired set-native multi-vector routing core for ColBERT and ColPali"
license = "CC-BY-NC-4.0"
license = "Apache-2.0"

[lib]
name = "latence_gem_router"
Expand Down
Loading
Loading