Skip to content

docs: fix drift in Data Stores - #292

Open
jack-arturo wants to merge 1 commit into
mainfrom
docs/audit-architecture-data-stores-20260807
Open

docs: fix drift in Data Stores#292
jack-arturo wants to merge 1 commit into
mainfrom
docs/audit-architecture-data-stores-20260807

Conversation

@jack-arturo

Copy link
Copy Markdown
Member

Automated docs-accuracy audit of docs/architecture/data-stores. All findings verified against the local automem checkout at the SHA below.

The theme here: three "Core Operations" / "Vector Search Implementation" notes point at automem/stores/*.py as if those modules held the logic. They do not — graph_store.py is 37 lines containing only _build_graph_tag_predicate(), and vector_store.py is 61 lines containing only _build_qdrant_tag_filter(). Both are small predicate builders; the search functions and the memory-write Cypher live elsewhere. (This is the follow-up left open by PR #169: "_graph_keyword_search and _vector_search missing".)

Claim Current state Fix Evidence
"Memories are created via MERGE … (automem/stores/graph_store.py)" graph_store.py contains no Cypher write. The MERGE (m:Memory {id: $id}) statement is in the memory API blueprint. Link repointed to automem/api/memory.py#L615. automem@8ff266e:automem/api/memory.py#L615
"_graph_keyword_search … (automem/stores/graph_store.py)" Function is defined in the recall-helpers module and wired in via runtime_wiring.py; graph_store.py only builds the tag predicate it uses. Link repointed to automem/search/runtime_recall_helpers.py#L595, with a clause preserving graph_store.py's real role. automem@8ff266e:automem/search/runtime_recall_helpers.py#L595, automem/runtime_wiring.py#L45
"_vector_search … (automem/stores/vector_store.py)" Same pattern — defined in the recall-helpers module; vector_store.py only builds the Qdrant tag filter. Link repointed to automem/search/runtime_recall_helpers.py#L940, with a clause preserving vector_store.py's real role. automem@8ff266e:automem/search/runtime_recall_helpers.py#L940, automem/runtime_wiring.py#L46
Qdrant config table lists only QDRANT_URL (default "none") Incomplete for the self-hosted path. When QDRANT_URL is unset, config.py constructs it from QDRANT_HOST + QDRANT_PORT (default 6333) — the Railway-internal setup the deployment docs rely on. Neither variable appeared on this page. Added QDRANT_HOST and QDRANT_PORT rows and noted the precedence on QDRANT_URL. automem@8ff266e:automem/config.py#L16

Verified against: verygoodplugins/automem@8ff266e

Verified as correct, no change made: all four FalkorDB config rows (FALKORDB_HOST does fall through to localhost, after the Railway domain env vars); QDRANT_COLLECTION/VECTOR_SIZE defaults; the whole embedding config table including EMBEDDING_BATCH_SIZE=20 and EMBEDDING_BATCH_TIMEOUT_SECONDS=2.0 (real env vars at app.py#L217-L218, not hardcoded); the auto-mode provider ladder Voyage → OpenAI → Ollama → FastEmbed → Placeholder and the Ollama defaults; the VECTOR_SIZE_AUTODETECT dimension-validation paragraph; /health reporting connected/disconnected for both stores; the runtime_clients.py source note (init_falkordb, init_qdrant, ensure_qdrant_collection all present); 14 relationship types in the Mermaid diagram.

Questions

None — every fix above is a direct file/name/value correction.

Unverified

  • "Typical Latency: 5-20ms (keyword) / 50-100ms (vector)" and "Sub-100ms similarity queries" in the comparison table. These are performance characterizations with no code representation; left untouched.
  • "Batching reduces API calls by 40-50%" — same class of curated claim, left untouched.

Follow-ups

  • The six source-note links at the top are pinned to 28eb916e, several releases behind current 8ff266e. They carry no line anchors and still resolve, so I left them rather than churn the header; the three links I did touch are now pinned to 8ff266e, so the page is temporarily mixed-SHA.
  • automem/stores/graph_store.py and vector_store.py are described in the source-note block as "FalkorDB abstraction" and "Qdrant abstraction". Given both are ~40-60 line predicate builders, those labels oversell them, but rewriting the header block is a bigger edit than this audit's scope.

Generated by Claude Code

Reattribute the memory MERGE, _graph_keyword_search, and _vector_search
source links to the modules that actually define them, and document the
QDRANT_HOST/QDRANT_PORT fallback used to construct QDRANT_URL.

Verified against verygoodplugins/automem@8ff266e

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BKgtjSkSUjSo7W8VSXs2Q1
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying automem-website with  Cloudflare Pages  Cloudflare Pages

Latest commit: fe97e9a
Status: ✅  Deploy successful!
Preview URL: https://c459179d.automem-website.pages.dev
Branch Preview URL: https://docs-audit-architecture-data-1p8y.automem-website.pages.dev

View logs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants