Skip to content

feat(qdrant): add Qdrant vector backend - #4458

Open
n0rmanc wants to merge 6 commits into
volcengine:mainfrom
n0rmanc:main
Open

feat(qdrant): add Qdrant vector backend#4458
n0rmanc wants to merge 6 commits into
volcengine:mainfrom
n0rmanc:main

Conversation

@n0rmanc

@n0rmanc n0rmanc commented Aug 28, 2026

Copy link
Copy Markdown

Description

Adds an optional Qdrant REST vector backend while preserving the existing CollectionAdapter / ICollection contracts and upper-layer search APIs. The implementation uses the Python standard library and does not add qdrant-client as a dependency.

Human Involvement

  • A human participated in the implementation or review loop
  • This PR was generated entirely by AI agents without human participation in the loop

Related Issue

None. This PR introduces the Qdrant backend described in the repository design/implementation plan.

Type of Change

  • Bug fix (non-breaking change that fixes an issue)
  • New feature (non-breaking change that adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update
  • Refactoring (no functional changes)
  • Performance improvement
  • Test update

Changes Made

  • Added an injectable urllib-based Qdrant REST transport with API-key support, bounded errors, and configurable timeout.
  • Added Qdrant collection lifecycle, metadata sidecar, schema/index persistence, dense CRUD/count/search, deterministic UUID5 point IDs, and path/filter mapping.
  • Added durable sparse-term dictionary with positive uint32 indices, collision detection, sparse encoding/decoding validation, and dense-only guards.
  • Registered the qdrant backend, added nested configuration, English/Chinese documentation, adapter documentation, and environment-gated live integration coverage.
  • Kept Contains/content grep semantics explicit and unsupported in Qdrant; filesystem grep fallback remains available.

Testing

  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • I have tested this on the following platforms:
    • Linux
    • macOS
    • Windows

Focused verification:

  • tests/storage/test_qdrant_adapter.py: 45 passed
  • transport/lifecycle subset: 2 passed
  • sparse subset: 9 passed
  • disposable live Qdrant integration: 1 passed against local Qdrant 1.x container
  • Ruff check and git diff --check: passed
  • The broader tests/storage tests/unit collection remains red due known baseline failures (19 reproduce on local main, with additional environment/order-dependent failures); these are documented as a repository-health boundary rather than Qdrant-specific failures.

Checklist

  • My code follows the project's coding style
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • Any dependent changes have been merged and published (no dependent changes are required)

Screenshots (if applicable)

Not applicable.

Additional Notes

  • Qdrant remains an optional backend; no new mandatory dependency was added.
  • The implementation branch is feat/qdrant-integration and is based on the repository main branch.
  • The implementation plan has all 19 task checkboxes marked complete with verification notes.
  • This PR is intentionally opened as a draft for review.

* fix(qdrant): auto-migrate ACL schema on startup

* fix(qdrant): preserve ACL migration state
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

1 participant