Skip to main content

A knowledge browser and audit layer for Qdrant vector databases

Project description

qdrant-lens

qdrant-lens

A knowledge browser for Qdrant vector databases.

Qdrant's own dashboard is a point browser — it shows raw vectors and payloads. qdrant-lens is the layer above that: it shows developers what the team has actually ingested, organised the way a human thinks about it.

  • Knowledge tree — browse ingested content by source → document type → document → chunk, not by vector ID
  • Accountability layer — every upsert and delete is intercepted, signed with the actor identity and timestamp, and written to an append-only audit log; raw Qdrant has no concept of who wrote a point or why — qdrant-lens ensures nothing in the cluster changes without a trace
  • _lens schema enforcement — every point carries a validated metadata namespace; violations are surfaced before bad data reaches the index
  • Sync-aware pipeline — chunk-hash dedup means re-ingesting a folder only embeds what actually changed; a scroll-diff pattern keeps Qdrant in sync with your filesystem the same way git tracks your working tree
  • Structural graph layer — document relationships (same source, shared tags, same author) derived purely from payload fields, no Neo4j required
  • Parser-agnostic ingest — LiteParse (default) handles PDFs, Office docs, images, and Jupyter notebooks natively; falls back to a pdfplumber/pytesseract stack automatically if needed
  • Chat agent — ask questions about a collection in plain English, get answers backed by live tree/history/search tools; destructive operations require explicit typed confirmation before executing
  • Export & migrate — dump any collection to portable JSONL/JSON (vectors + metadata) with lens export; ready-made recipes for Pinecone, Weaviate, Chroma, and OpenSearch

Documentation

Guide Description
Quickstart Install, first run, Day 1/Day 2, env setup
Ingest Pipeline File ingestion, parsers, chunking, dedup, hybrid search
Client Reference QdrantLensClient API, audit log, schema, core concepts
Dashboard lens serve, UI views, FastAPI routes, CLI commands
Export & Migration Export collections to JSONL/JSON; migration recipes
Parsers liteparse vs auto, system deps, troubleshooting
Testing Test suite overview, per-module test descriptions
Contributing Project structure, module map, adding parsers/routes/fields

Prerequisites

Requirement Version Notes
Python >= 3.12
Qdrant >= 1.18.0 Self-hosted, Docker, or Qdrant Cloud
Docker any For docker compose up (optional). Docker Hub login required for image pulls — run docker login first, or download the Qdrant binary from github.com/qdrant/qdrant/releases
Tesseract any OCR only — sudo apt install tesseract-ocr / brew install tesseract. Set TESSDATA_PREFIX to your tessdata dir (e.g. /opt/homebrew/share/tessdata) if OCR fails at runtime
LibreOffice any Office → PDF conversion (bundled in [ingest])
Neo4j >= 6.0 Graph RAG only — docker compose --profile graph up

Install

# Core: client wrapper + dashboard API only
pip install qdrant-lens

# + full ingestion pipeline (PDF parsing, OCR, chunking) — includes LiteParse by default
pip install "qdrant-lens[ingest]"

# + FastEmbed for CLI embeddings and sparse vectors (bm25_enable=True)
pip install "qdrant-lens[embed]"

# Everything
pip install "qdrant-lens[all]"

See docs/quickstart.md for uv, Docker, and .env setup.


Quickstart

Day 1 — 5 minutes, zero code changes

pip install qdrant-lens
lens serve --url http://localhost:6333
# Dashboard opens at http://localhost:7367
# Tree renders from your existing collection immediately

Day 2 — two line changes, audit log starts

from qdrant_lens import QdrantLensClient

# Drop-in replacement for QdrantClient — all existing calls unchanged
client = QdrantLensClient(url="http://localhost:6333", api_key="...")

# All upsert/delete calls now validate _lens metadata and write audit events
client.upsert(collection_name="docs", points=[...])

# New lens-only methods
doc_id = client.make_doc_id("github", "repo/auth/login.py")
tree   = client.tree("docs")
events = client.history("docs", last_n=20)
violations = client.validate("docs")

Async

from qdrant_lens import AsyncQdrantLensClient

client = AsyncQdrantLensClient(url="...", api_key="...")
tree = await client.tree("docs")

See docs/client.md for the full API reference and docs/ingest.md for the ingest pipeline.


Compatibility

  • qdrant-client >= 1.18.0 required. Earlier versions are not supported.
  • Python >= 3.12 (3.10 and 3.11 may work but are untested).

See COMPATIBILITY.md for the full version matrix and system dependency notes.


Built with

qdrant-lens stands on the shoulders of several excellent open-source projects:

Project Role
Chonkie Chunking backbone — token-aware RecursiveChunker, SemanticChunker, and CodeChunker strategies
PdfItDown Office and image → PDF conversion in the auto parser stack (.docx, .pptx, .xlsx, .png, .jpg)
LiteParse Default parser — single-library extraction for PDFs, Office docs, images, and more without a LibreOffice dependency

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qdrant_lens-0.1.8.tar.gz (2.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qdrant_lens-0.1.8-py3-none-any.whl (65.4 kB view details)

Uploaded Python 3

File details

Details for the file qdrant_lens-0.1.8.tar.gz.

File metadata

  • Download URL: qdrant_lens-0.1.8.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for qdrant_lens-0.1.8.tar.gz
Algorithm Hash digest
SHA256 375ffef7a90f2a6e4317387e7b9e98c30026b134bbb9a401feecebd426fb9ed2
MD5 6cf016b31262dffac45c0f08a32a305a
BLAKE2b-256 0f58fb9ae57a1e032a7f26472b4810a577c56a3b2150c35599f99e4223f70a2e

See more details on using hashes here.

File details

Details for the file qdrant_lens-0.1.8-py3-none-any.whl.

File metadata

  • Download URL: qdrant_lens-0.1.8-py3-none-any.whl
  • Upload date:
  • Size: 65.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for qdrant_lens-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 6c64bcf31071bf75b89ad0a10d8a83de5dd2630f2ff5110988c7b799579cbb89
MD5 02cada652918d2a2c6fba4e53f3dfb28
BLAKE2b-256 9cba7c14b6145149d2b7e2f6eb3d085287aec44f5cb4d824539b1722fc85ea4a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page