Ingest files, not embeddings
Hand PaveDB a PDF, CSV, or TXT file; it chunks, embeds, and indexes the content without a separate preprocessing pipeline.
PAVEDB
RETRIEVAL YOU CAN OWN
Run PaveDB locally or over HTTP. Text search keeps its source, query record, and replay trail.
pip install pavedbdocker pull registry.gitlab.com/flowlexi/pavedb/pavedb:latest-cpuHand PaveDB a PDF, CSV, or TXT file; it chunks, embeds, and indexes the content without a separate preprocessing pipeline.
Trace a match to its document, page or character offset, and exact snippet. Vector-only records may not carry text.
Retrieve stored parameters, timing, results, and provenance, then replay by query ID. Raw-vector searches are not replayable.
Tenant and collection namespacing are built in and stay out of the way when one tenant is enough.
Use local or remote Python, the CLI, or the documented HTTP/OpenAPI surface.
Choose a shipped local or hosted embedding backend and model per collection.
from pavesdk.client import connect
db = connect("./data")
books = db.create_collection("books")
books.add("Captain Nemo commands the Nautilus.", docid="note-1")
# Search, then inspect the stored request and replay it.
hits = books.search("submarine captain", k=3)
query = books.queries(limit=1)[0]
record = books.get_query(query["query_id"])
again = books.replay(query["query_id"])client =
PaveDBClient.connect("http://localhost:8086",
tenant: "tenant",
api_key: "secret"
)
{:ok, books} =
PaveDBClient.create_collection(client, "books", display_name: "Books")
{:ok, _doc} =
PaveDBClient.Collection.add(books, "Captain Nemo commands the Nautilus.",
docid: "note-1",
metadata: %{"kind" => "note"}
)
{:ok, response} =
PaveDBClient.Collection.search(books, "captain", k: 3)
matches = response["matches"]The book
Building RAG and semantic search systems you can deploy, operate, observe, and trust.
Read the book →