Everything is Parquet
Source data and vector indexes use standard Parquet. Version, publish, inspect, and share them with the tools you already use.
Explore the formatParqDB is an embedded vector database for larger-than-memory search and analytics, powered by Parquet and Arrow.
pip install parqdbVector search should fit into your data system—not force every workload through another proprietary service.
Source data and vector indexes use standard Parquet. Version, publish, inspect, and share them with the tools you already use.
Explore the formatExplicit cluster, file, row-group, and page pruning keeps search bounded while the index grows far beyond RAM.
Read the benchmarksCompose vector search with filters, joins, and aggregations in one DataFusion plan, backed by Arrow-native execution.
Build a queryParqDB separates the open index format from the runtime that executes it.
Install one Python package. Build a persistent IVF index. Keep the result inside the Arrow ecosystem.
import parqdb
session = parqdb.connect("./parqdb-data")
session.register_parquet(
"documents",
parqdb.datasets.uri("documents"),
)
documents = session.table("documents")
documents.create_index(
"documents_embedding",
column="embedding",
key=["document_id"],
config=parqdb.IVF(nlist=3),
)
documents.wait_for_index("documents_embedding")
hits = session.collect(
documents.search([0.2, 0.0])
.where("status = 'published'")
.limit(10)
)$ pip install "parqdb[publish]"
$ parqdb publish \
--source documents.parquet \
--key chunk_id \
--vector-column embedding \
--nlist 4096 \
--encoding lvq8 \
--destination s3://my-bucket/wiki/v1 \
--public-url https://data.example.com/wiki/v1
# manifest.json is exposed only after every
# immutable object has been uploaded and verified.Publish an immutable IVF-LVQ index and query only the required Parquet byte ranges in WebAssembly. No query server sits between the browser and your data.
0–262143206memory cacheCACHE8630–14498320617465660–17483301206Install ParqDB and build your first index from an existing Parquet table.