存储架构

OpenViking 采用双层存储架构,分离内容存储和索引存储。

概览

┌─────────────────────────────────────────┐
│            VikingFS (URI 抽象层)         │
│            URI 映射 · 层级访问           │
└────────────────┬────────────────────────┘
        ┌────────┴────────┐
        │                 │
┌───────▼────────┐  ┌─────▼───────────┐
│   向量库索引    │  │      AGFS       │
│   (语义搜索)    │  │   (内容存储)    │
└────────────────┘  └─────────────────┘

双层存储

存储层职责存储内容
AGFS内容存储L0/L1/L2 完整内容、多媒体文件
向量库索引存储URI、向量、元数据(不存文件内容)

设计优势

  1. 职责清晰:向量库只负责检索,AGFS 负责存储

  2. 内存优化:向量库不存储文件内容,节省内存

  3. 单一数据源:所有内容从 AGFS 读取,向量库只存引用

  4. 独立扩展:向量库和 AGFS 可分别扩展

    注:AGFS 已经重写为 Rust 实现(RAGFS)

VikingFS 虚拟文件系统

VikingFS 是统一的 URI 抽象层,屏蔽底层存储细节。

URI 映射

viking://resources/docs/auth  →  /local/{account_id}/resources/docs/auth
viking://~/memories        →  /local/{account_id}/user/{user_id}/memories
viking://~/skills          →  /local/{account_id}/user/{user_id}/skills

核心 API

方法说明
read(uri)读取文件内容
write(uri, data)写入文件
mkdir(uri)创建目录
rm(uri)删除文件/目录(同步删除向量)
mv(old, new)移动/重命名(同步更新向量 URI)
abstract(uri)读取 L0 摘要
overview(uri)读取 L1 概览
find(query, uri)语义搜索

AGFS 底层存储

AGFS 提供 POSIX 风格的文件操作,支持多种后端。

单后端与多写模式

默认情况下,AGFS 使用一个后端作为内容存储。配置 storage.agfs.backups 后,OpenViking 会启用多写模式:

  • 顶层 storage.agfs.backend 是 primary,作为权威写入目标。

  • storage.agfs.backups.items[] 是 backup,用于副本、迁移或读加速。

  • Python SDK、HTTP API 和 CLI 的文件系统接口保持不变。

  • 多写内部使用 .redirect.json.sync_log.json 维护 redirect 映射与同步进度,这些文件对用户不可见。

更多概念说明见 多写存储,配置示例见 多写存储指南

后端类型

后端说明配置
localfs本地文件系统path
s3fsS3 兼容存储bucket, endpoint
memory内存存储(测试用)-

目录结构

每个上下文目录遵循统一结构:

viking://resources/docs/auth/
├── .abstract.md          # L0 摘要
├── .overview.md          # L1 概览
└── *.md                  # L2 详细内容

向量库索引

向量库存储语义索引,支持向量搜索和标量过滤。

Context 集合 Schema

字段类型说明
idstring主键
uristring资源 URI
parent_uristring父目录 URI
context_typestringresource/memory/skill
is_leafbool是否叶子节点
vectorvector密集向量
sparse_vectorsparse_vector稀疏向量
abstractstringL0 摘要文本
namestring名称
descriptionstring描述
created_atstring创建时间
active_countint64使用次数

索引策略

index_meta = {
    "IndexType": "flat_hybrid",  # 混合索引
    "Distance": "cosine",        # 余弦距离
    "Quant": "int8",             # 量化方式
}

后端支持

后端说明
local本地持久化
httpHTTP 远程服务
volcengine火山引擎 VikingDB

向量同步

VikingFS 自动维护向量库与 AGFS 的一致性。

删除同步

viking_fs.rm("viking://resources/docs/auth", recursive=True)
# 自动递归删除向量库中所有 uri 以此开头的记录

移动同步

viking_fs.mv(
    "viking://resources/docs/auth",
    "viking://resources/docs/authentication"
)
# 自动更新向量库中的 uri 和 parent_uri 字段

相关文档

OpenViking 核心原理 / 05-存储架构 0 0 cosolar
2026-09-09T10:44:25.920118372Z 2026-09-09T10:44:52.465435604Z