docs(plugin-catalog): qualify qdrant verbose-log claim (md_search echoes the query)
The qdrant entry's display.level sentence claimed the verbose log lines
carry 'numbers and identifiers only, never message text', but at the
pinned 0.1.8 (f65e62d) _log_md_search deliberately echoes the search
query ('md_search "%s" -> ...', __init__.py:1853). teknium1 flagged
the mismatch as a review nit on #133557.
Wording only: no pin, version or behaviour change. The catalog sentence
now matches the plugin README's qualified claim ('never recalled message
text or search-result snippets') and discloses the query echo as the
one non-numeric element -- it is the searcher's own input, not recalled
content. scripts/validate_plugin_catalog.py: OK.
This commit is contained in:
@@ -3,7 +3,7 @@ repo: https://github.com/kuehnberger/hermes-qdrant-memory
|
||||
sha: f65e62d1ab100bfad04fc47c78200f327f8b2ba1
|
||||
version: "0.1.8"
|
||||
image: https://raw.githubusercontent.com/kuehnberger/hermes-qdrant-memory/f65e62d1ab100bfad04fc47c78200f327f8b2ba1/docs/banner.jpg
|
||||
description: "Dense semantic memory for Hermes, stored in a Qdrant collection you host. Each turn becomes one point — user and assistant text verbatim, no LLM summarization step — embedded on-device at 384 dimensions with fastembed (ONNX; the default install is 206 MB of runtime dependencies with no torch, versus ~1.2 GB when sentence-transformers was a hard dependency) and recalled by cosine search with an optional session_id payload filter, so a result quotes what was actually said. Registers 7 tools: qdrant_search, qdrant_upsert, qdrant_recall, qdrant_collect, qdrant_prepare, qdrant_forget (point-targeted deletion, dry-run by default, no delete-all), and md_search (local markdown knowledge index). An optional recall-indicator display, display.level (off | summary | verbose, default off), adds latency and collection to the chat indicator at summary and one numeric line per operation to the log at verbose — numbers and identifiers only, never message text; it is separate from the older top-level progress knob (off | minimal | verbose), which gates status events. sentence-transformers is selectable on GPU hosts; both backends produce identical vectors for all-MiniLM-L6-v2, so switching backends needs no re-embedding. A circuit breaker (5 consecutive I/O failures, 120 s cooldown) degrades to no new memories instead of crashing, and is_available()/check_backend()/unavailable_reason() distinguish a misconfiguration from a dead server. Hybrid dense+sparse RRF search and INT8 quantization exist in _backend.py but are not on the live path. Local embedded Qdrant mode is not supported: the provider is REST-only and needs a reachable server. Disclosure — all memory content (verbatim user and assistant turns) is stored in and read back from the Qdrant server at the configured url (default http://localhost:6333); QDRANT_API_KEY is only needed for Qdrant Cloud, is kept in .env and read through the Hermes secret scope, and is never written to config.yaml or qdrant.json. Disclosure — the only other outbound traffic is a one-time download of the embedding model weights from huggingface.co (fastembed falls back to storage.googleapis.com/qdrant-fastembed if that fails); embedding runs on-device and no memory content goes to any other party. Disclosure — settings are stored in <HERMES_HOME>/qdrant.json (created 0600, no credentials) and last-operation status in <HERMES_HOME>/qdrant-status.json. Disclosure — md_search returns snippets of local markdown to the model from ~/.hermes/skills, the Obsidian vault at ~/Documents/hermes_default, ~/.hermes/hermes-agent/website and any path in the md_docs_roots key of qdrant.json; its index is built only when you run scripts/md_ingest.py and lives in <base Hermes home>/state/md-search/ (shared by all profiles). Disclosure — the optional semantic tier (md_ingest.py --semantic, and md_search queries with few lexical hits) sends embedding vectors plus file-path labels and section headings, never chunk text, to a separate hermes_md_docs collection on the Qdrant server named by the QDRANT_URL env var (default http://localhost:6333, no API key), and downloads paraphrase-multilingual-MiniLM-L12-v2 from huggingface.co on first use. Disclosure — the plugin is not a server and registers no MCP server, but it is loaded in-process into every Hermes process that embeds, so each one pays its own model copy (measured ~194-211 MB per process)."
|
||||
description: "Dense semantic memory for Hermes, stored in a Qdrant collection you host. Each turn becomes one point — user and assistant text verbatim, no LLM summarization step — embedded on-device at 384 dimensions with fastembed (ONNX; the default install is 206 MB of runtime dependencies with no torch, versus ~1.2 GB when sentence-transformers was a hard dependency) and recalled by cosine search with an optional session_id payload filter, so a result quotes what was actually said. Registers 7 tools: qdrant_search, qdrant_upsert, qdrant_recall, qdrant_collect, qdrant_prepare, qdrant_forget (point-targeted deletion, dry-run by default, no delete-all), and md_search (local markdown knowledge index). An optional recall-indicator display, display.level (off | summary | verbose, default off), adds latency and collection to the chat indicator at summary and one numeric line per operation to the log at verbose — numbers and identifiers only, never recalled message text or search-result snippets (the md_search line also echoes the query you searched — your own input, not recalled content); it is separate from the older top-level progress knob (off | minimal | verbose), which gates status events. sentence-transformers is selectable on GPU hosts; both backends produce identical vectors for all-MiniLM-L6-v2, so switching backends needs no re-embedding. A circuit breaker (5 consecutive I/O failures, 120 s cooldown) degrades to no new memories instead of crashing, and is_available()/check_backend()/unavailable_reason() distinguish a misconfiguration from a dead server. Hybrid dense+sparse RRF search and INT8 quantization exist in _backend.py but are not on the live path. Local embedded Qdrant mode is not supported: the provider is REST-only and needs a reachable server. Disclosure — all memory content (verbatim user and assistant turns) is stored in and read back from the Qdrant server at the configured url (default http://localhost:6333); QDRANT_API_KEY is only needed for Qdrant Cloud, is kept in .env and read through the Hermes secret scope, and is never written to config.yaml or qdrant.json. Disclosure — the only other outbound traffic is a one-time download of the embedding model weights from huggingface.co (fastembed falls back to storage.googleapis.com/qdrant-fastembed if that fails); embedding runs on-device and no memory content goes to any other party. Disclosure — settings are stored in <HERMES_HOME>/qdrant.json (created 0600, no credentials) and last-operation status in <HERMES_HOME>/qdrant-status.json. Disclosure — md_search returns snippets of local markdown to the model from ~/.hermes/skills, the Obsidian vault at ~/Documents/hermes_default, ~/.hermes/hermes-agent/website and any path in the md_docs_roots key of qdrant.json; its index is built only when you run scripts/md_ingest.py and lives in <base Hermes home>/state/md-search/ (shared by all profiles). Disclosure — the optional semantic tier (md_ingest.py --semantic, and md_search queries with few lexical hits) sends embedding vectors plus file-path labels and section headings, never chunk text, to a separate hermes_md_docs collection on the Qdrant server named by the QDRANT_URL env var (default http://localhost:6333, no API key), and downloads paraphrase-multilingual-MiniLM-L12-v2 from huggingface.co on first use. Disclosure — the plugin is not a server and registers no MCP server, but it is loaded in-process into every Hermes process that embeds, so each one pays its own model copy (measured ~194-211 MB per process)."
|
||||
maintainer: kuehnberger
|
||||
tier: community
|
||||
category: memory
|
||||
|
||||
Reference in New Issue
Block a user