Skip to main content

PaveDB — Retrieval you can inspect. Infrastructure you can own.

PaveDB is an inspectable retrieval database for AI applications. By default, text searches keep their source provenance, stored query record, and replay trail.

Start embedded in Python, self-host the same engine over HTTP, or point the same clients at managed PaveDB. The API stays stable and the archive remains portable, so the prototype is not a throwaway and the hosted path keeps an exit.

Highlights

  • One engine and interface from embedded prototype to self-hosted or managed production
  • Query history and replay for text searches, enabled by default
  • Deterministic provenance: every text-backed hit returns a document id, snippet, and source-specific page, row, or offset
  • Multi-tenant collections: /collections/{tenant}/{name}
  • Upload and search TXT, CSV, and PDF
  • Metadata filters on search ({"filters": {"docid": "DOC-1"}})
  • Embedded Python, REST, and CLI entry points
  • Health/metrics endpoints + Prometheus exporter
  • Local and hosted embedding choices; default stack is FAISS + SBERT

Requirements

  • Python 3.10–3.14

Install (PyPI)

python -m venv .venv
source .venv/bin/activate
pip install pavedb

CPU-only deployments can use the PyTorch CPU wheel index:

pip install "pavedb[cpu]" \
  --index-url https://download.pytorch.org/whl/cpu \
  --extra-index-url https://pypi.org/simple

Quickstart

Embedded, with no server or config:

from pavesdk.client import connect

db = connect("./data")
books = db.create_collection("books")
books.add("Captain Nemo commands the Nautilus.", docid="note-1")
hits = books.search("submarine captain", k=3)
db.close()

Serve the same engine over HTTP:

# Start the server (installed entry point)
pavesrv

pavesrv is the supported server entry point. The packaged pave.main:app target rejects direct ASGI loading because it bypasses startup policy. Close an embedded client before serving its data directory: one supported local entry point owns a directory at a time.

Auth defaults to static. none is refused outside dev mode. For production, set a key:

export PAVEDB_AUTH__MODE=static
export PAVEDB_AUTH__GLOBAL_KEY="your-secret"

Minimal config (optional)

By default PaveDB runs with sensible local defaults. For a user install, customize ~/pavedb/config.yml:

vector_store:
  type: faiss
embedder:
  default: native
  instances:
    native:
      type: sbert
auth:
  mode: static
  global_key: ${PAVEDB_GLOBAL_KEY}

Then export:

export PAVEDB_GLOBAL_KEY="your-secret"

If you keep the file elsewhere, point the runtime at it explicitly:

export PAVEDB_CONFIG=/path/to/config.yml

CLI example

pavecli create-collection demo books
pavecli ingest demo books demo/20k_leagues.txt --docid=verne-20k \
  --metadata='{"lang":"en"}'
pavecli search demo books "captain nemo" -k 5

REST example

# Create a collection
curl -X POST http://localhost:8086/v1/collections/demo/books \
  -H "Authorization: Bearer your-secret"

# Upload a TXT document
curl -X POST http://localhost:8086/v1/collections/demo/books/documents \
  -H "Authorization: Bearer your-secret" \
  -F "file=@demo/20k_leagues.txt" -F "docid=verne-20k" \
  -F 'metadata={"lang":"en"}'

# Search (GET, no filters)
curl -G --data-urlencode "q=hello" \
  -H "Authorization: Bearer your-secret" \
  http://localhost:8086/v1/collections/demo/books/search

# Search (POST, with filters)
curl -X POST http://localhost:8086/v1/collections/demo/books/search \
  -H "Authorization: Bearer your-secret" \
  -H "Content-Type: application/json" \
  -d '{"q":"captain nemo","k":5,"filters":{"docid":"verne-20k"}}'

License

AGPL-3.0-or-later — (C) 2025, 2026 Rodrigo Rodrigues da Silva rodrigo@flowlexi.com

Metadata

Release files for pavedb 0.9.6

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

Source distribution (sdist)

Source distribution for pavedb 0.9.6
File Size Uploaded
pavedb-0.9.6.tar.gz 406.9 kB Details

Built distribution (wheel)

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

Total release size: 650.8 kB

Release files / pavedb-0.9.6.tar.gz

Download URL pavedb-0.9.6.tar.gz
Size 406.9 kB
Tags Source
SHA-256 checksum
How to use checksums
dab194680959520c4504267471a4087ed6fcd77a28dc837d6ef6d0752402fdba
BLAKE2b-256 checksum
How to use checksums
ef44747c5de99a71c3492c41920e42c3215c34d99e568b20f6241fd5cfe2d744
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release files / pavedb-0.9.6-py3-none-any.whl

Download URL pavedb-0.9.6-py3-none-any.whl
Size 243.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6f6b82c6ec97d1ee5f65c7a7e2ae6004ad3a52dc92f856f4faab78d5dbdfe23e
BLAKE2b-256 checksum
How to use checksums
d2d6b9783968b8954fbac15d18ef5891aec28cc42c060a3c507789ca14090d50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.16

Release history Release notifications | RSS feed

0.9.7

2 release files

This release

0.9.6 This release

2 release files

0.9.5

2 release files

0.9.4

2 release files

0.9.3

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.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