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 — can run components separately)
Tesseract any OCR only — sudo apt install tesseract-ocr / brew install tesseract
LibreOffice any Office → PDF conversion (bundled in [ingest])
Neo4j >= 5.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.5.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.5-py3-none-any.whl (45.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: qdrant_lens-0.1.5.tar.gz
  • Upload date:
  • Size: 2.1 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"20.04","id":"focal","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.5.tar.gz
Algorithm Hash digest
SHA256 603d92ad8acc33f6defb8da7dc37dfb1d210ef43852801179e3ae5b902f86123
MD5 15ce06975713c30a12b2f35ff706f6b1
BLAKE2b-256 effe392964e3f65c971aa6ea3e26668eafad37802b2f113244b34928e707436a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: qdrant_lens-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 45.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.22 {"installer":{"name":"uv","version":"0.9.22","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"20.04","id":"focal","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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 5b4eba1fd154788796d69ff9d4c5a0362f0fec727def06f667345a04e85dd71e
MD5 c67f1302eeab2bb320175562c321957a
BLAKE2b-256 b818673a279be5a541957aba7f65be2cdd45550ccd53d3725bd9640bb5eafc30

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