You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Newly-created VikingDB collections: path-field (uri) filtering returns 0 for a long window after Status=READY — path scalar index build lag, self-heals; READY is not a reliable readiness signal #2947
The server-side fix for #1119 (PathScope / path-field hierarchical filtering on Volcengine VikingDB) appears to be not effective for newly-created collections. On a collection created on 2026-07-02 via CreateVikingdbCollection (Version=2025-06-09), any filter on the path-typed uri field matches zero rows — including exact full-path matches — while Eq filters on string fields in the same request work correctly (verified with a negative control).
The same fix WAS verified working by us in May 2026 against an older collection (created before the fix landed), directly on our production VikingDB instance — which is why we removed our downstream workaround at the time. The regression surfaced only after we recreated the collection (to pick up the new content/FullText schema for vikingdb-based grep).
Impact
Production-blocking for any OpenViking deployment on the volcengine backend with a recently created collection. Every /api/v1/search/find compiles the tenant isolation filter as And(Eq(account_id), Or(PathScope(uri, ...))); since the PathScope leg matches nothing, all semantic recall returns empty (agent memories are written and vectorized successfully, but can never be recalled). Writes / fs reads / fs grep are unaffected.
Environment
OpenViking v0.4.6, storage.vectordb.backend=volcengine (ak/sk console + data plane)
Region: cn-beijing
Collection: context, ResourceId vdb-d952f89776f14b5c8d3fe5f8c2af3f13, created 2026-07-02T06:36:00Z via Action=CreateVikingdbCollection Version=2025-06-09
Index: default, Status=READY, ReloadStatus=done; GetVikingdbIndex confirms uri IS present in ScalarIndex with FieldType=path
Additional matrix via search/random on the same collection: exact full path with -d=0 → 0; exact full path without para → 0; -d=1..7 from "/" → 0 at every depth; no-leading-slash / trailing-slash variants → 0; {"op":"prefix",...} → 400 InvalidParameter: unsupported 'op' value: prefix.
So the observed semantics on this collection are: only "/" + -d=-1 matches (trivially, everything); every non-root ancestor path — including exact full paths — matches nothing. Note the para parameter is not simply ignored (if it were, "/" would exact-match zero rows), which suggests the path index / ancestor computation is partially active but broken for non-root paths.
2026-05-07: we verified "para":"-d=-1" working directly against our production instance (old collection) and removed our downstream workaround accordingly.
Summary
The server-side fix for #1119 (PathScope / path-field hierarchical filtering on Volcengine VikingDB) appears to be not effective for newly-created collections. On a collection created on 2026-07-02 via
CreateVikingdbCollection(Version=2025-06-09), any filter on thepath-typedurifield matches zero rows — including exact full-path matches — whileEqfilters onstringfields in the same request work correctly (verified with a negative control).The same fix WAS verified working by us in May 2026 against an older collection (created before the fix landed), directly on our production VikingDB instance — which is why we removed our downstream workaround at the time. The regression surfaced only after we recreated the collection (to pick up the new
content/FullText schema for vikingdb-based grep).Impact
Production-blocking for any OpenViking deployment on the volcengine backend with a recently created collection. Every
/api/v1/search/findcompiles the tenant isolation filter asAnd(Eq(account_id), Or(PathScope(uri, ...))); since the PathScope leg matches nothing, all semantic recall returns empty (agent memories are written and vectorized successfully, but can never be recalled). Writes / fs reads / fs grep are unaffected.Environment
storage.vectordb.backend=volcengine(ak/sk console + data plane)cn-beijingcontext, ResourceIdvdb-d952f89776f14b5c8d3fe5f8c2af3f13, created2026-07-02T06:36:00ZviaAction=CreateVikingdbCollection Version=2025-06-09default,Status=READY,ReloadStatus=done;GetVikingdbIndexconfirmsuriIS present inScalarIndexwithFieldType=path"uri": "/user/6d3406500f3e865c/peers/openclaw-remote_pm/memories/cases/final-probe.md"Reproduction
Direct
POST /api/vikingdb/data/search/vectorwith a real 4096-dim query embedding, same body shape OpenViking sends:02178297826179900000000000000000000ffff0a0057bba8b008{"op":"must","field":"account_id","conds":["gaomingda"]}02178297826198800000000000000000000ffff0a0055099f93bf{"op":"must","field":"account_id","conds":["nonexistent-acct"]}02178297826210100000000000000000000ffff0a0049c6a263bc{"op":"must","field":"uri","conds":["/user/6d3406500f3e865c"],"para":"-d=-1"}02178297826220000000000000000000000ffff0a004621347d1302178297826232300000000000000000000ffff0a0049c617ecb6{"op":"must","field":"uri","conds":["/"],"para":"-d=-1"}02178297826252100000000000000000000ffff0a005509c6a0dfAdditional matrix via
search/randomon the same collection: exact full path with-d=0→ 0; exact full path withoutpara→ 0;-d=1..7from"/"→ 0 at every depth; no-leading-slash / trailing-slash variants → 0;{"op":"prefix",...}→400 InvalidParameter: unsupported 'op' value: prefix.So the observed semantics on this collection are: only
"/" + -d=-1matches (trivially, everything); every non-root ancestor path — including exact full paths — matches nothing. Note theparaparameter is not simply ignored (if it were,"/"would exact-match zero rows), which suggests the path index / ancestor computation is partially active but broken for non-root paths.Timeline vs #1119
"para":"-d=-1"working directly against our production instance (old collection) and removed our downstream workaround accordingly.2025-06-09API (to enable the newcontentFullText schema) → path filtering on the new collection exhibits the original fix(search): PathScope filter returns zero results on Volcengine VikingDB backend #1119 symptom again.Expected vs Actual
{"op":"must","field":"uri","conds":["/user/x"],"para":"-d=-1"}matches all rows whoseuriis under/user/x(as it did on the old collection after the fix(search): PathScope filter returns zero results on Volcengine VikingDB backend #1119 fix).Ask
2025-06-09CreateVikingdbCollectionpipeline? If not, can it be extended?