Feature/qdrant ltm foundation#5
Merged
Merged
Conversation
matstech
enabled auto-merge (rebase)
July 17, 2026 20:02
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Qdrant LTM Backend
Summary
This PR adds Qdrant as an optional long-term memory vector backend alongside the existing Chroma implementation.
The main goal is to make DMF backend-neutral at the LTM boundary without changing the default runtime behavior: Chroma remains the default, while Qdrant can be enabled explicitly with
storage_type = "qdrant"andqdrant_mode = "memory".Why
DMF previously coupled long-term memory persistence and vector search to Chroma-specific APIs. That made adding another vector store risky because filtering, raw-record codecs, card lookup, and hook construction were spread across backend-specific assumptions.
This implementation introduces Qdrant through the same public LTM contract used by Chroma, keeping raw records canonical and preserving the existing card-to-raw resolution semantics. Qdrant is intentionally limited to Local Mode in this PR so the integration can be validated without introducing server lifecycle, auth, or persistence concerns.
What Changed
Added backend-neutral LTM primitives:
RecallFilterfor role, record id, interaction range, timestamp range, and card kind filtering;Added Qdrant Local Mode:
qdrant-clientdependency via theqdrantextra;QdrantClient(":memory:")connection mode;Preserved existing Chroma behavior:
Extended benchmark tooling:
--backend chroma|qdrant;message.contentwith reasoning models.Updated docs for Qdrant install, config, Local Mode limits, raw/card collections, score conversion, filters, errors, and API references.
Test Coverage
Validation run:
poetry check --lock make compile make test make docs-build make build git diff --check make chroma-up make test-integration make chroma-downResults recorded during final gate:
make test: 745 passed, 1 deselected