-
Notifications
You must be signed in to change notification settings - Fork 307
Closed
Description
Bug 描述
使用 volcengine VikingDB 后端时,存在两个问题:
问题 1:path 字段类型剥离 viking:// 前缀导致 Access Denied
find 语义搜索操作抛出 Access denied 错误:
openviking_cli.exceptions.InternalError: Access denied for /user/alice/memories/entities/
根因:volcengine_collection.py 的 _sanitize_uri_value() 在写入时将 viking:// 前缀剥离为 /path/ 格式,但读取时没有做反向转换。
写入: viking://... → _sanitize_uri_value() → /.../ → 存入 VikingDB ✅
读取: VikingDB → /.../ → 原样返回 → _is_accessible() 检查 viking:// 前缀 → ❌ Access Denied
影响方法:get()、fetch_by_uri()、search()、filter()(scroll() 和 _remove_descendants() 经由 filter() 间接受影响)
修复:在 VikingVectorIndexBackend 添加 _restore_uri_fields() 静态方法,在 4 个读取出口处还原 viking:// 前缀。幂等操作,对 local/http 后端无副作用。
问题 2:memory_deduplicator 仍使用已废弃的 is_leaf 字段
PR #271 将 is_leaf 替换为 level 字段,但 memory_deduplicator.py:138 遗漏未改:
# 错误:is_leaf 已从 collection schema 中移除
{"field": "is_leaf", "op": "must", "conds": [True]}volcengine 报错:
Invalid filter param: field is_leaf does not support op must
修复:改为 {"field": "level", "op": "must", "conds": [2]}(is_leaf=True 对应 level=2 即 L2 detail/content)。
复现步骤
- 配置 volcengine VikingDB 后端(
ov.conf中vectordb.backend: "volcengine") - 运行
uv run examples/cloud/alice.py - 问题 1:语义搜索时报 Access denied
- 问题 2:涉及 memory dedup 的搜索时报 Invalid filter param
环境
- 分支:
main - VectorDB 后端: volcengine VikingDB
- 复现示例:
examples/cloud/alice.py
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Status
Done