云选科普

AI 应用如何选择 OSS 与向量存储:从文件到 RAG 的架构拆解

面向做 RAG、多模态检索和内容平台的开发者,梳理 OSS 对象存储与 OSS Vectors 的职责边界,并给出生命周期、安全、成本和上线步骤。

先拆开两个问题:文件存储和向量检索

AI 应用通常同时产生两类数据:一类是原始资料,例如 PDF、图片、音频、视频、日志和数据集;另一类是经过切分、Embedding 后得到的向量,以及用于过滤的文档编号、租户、时间和权限等元数据。

这两类数据的访问方式并不相同。原始资料需要稳定保存、下载、版本管理和按冷热分层;向量数据则需要建立索引,并支持相似度查询与条件过滤。把所有内容都塞进传统对象桶,无法直接完成向量检索;反过来,把原始文件全部复制进向量系统,也会让成本、权限和备份变得复杂。

更稳妥的做法是把 OSS 作为原始数据底座,再按检索需求接入 OSS Vectors 或其他向量引擎。阿里云官方文档将 Vector Bucket 定义为存储向量索引和向量数据的独立容器,并提供专用 API 和访问端点;它不是普通对象桶里一个特殊目录。

一个可落地的 RAG 存储分层

可以把知识库拆成三层:

  • 原始层:在 OSS 普通 Bucket 中保存用户上传文件、解析中间件输出、图片和音视频。对象 Key 中包含租户、知识库和版本信息,便于权限校验与生命周期管理。
  • 索引层:在 Vector Bucket 中保存 Embedding、文档块 ID 和用于过滤的标量字段。查询时先做向量召回,再根据租户、文档状态或权限字段过滤。
  • 关系层:在数据库中保存用户、知识库、文档状态、处理任务和索引版本。不要把业务权限判断完全交给向量查询。

一次上传流程可以是:应用取得短期上传凭证后把文件写入 OSS;事件或任务队列触发解析、切分和 Embedding;处理成功后写入向量索引,并在数据库中记录版本状态。删除文件时,应先标记业务状态,再异步删除对象、向量和派生缓存,避免出现“检索还能命中、原文却已删除”的不一致。

这种分层的价值不在于把服务数量宣传成“一个桶解决所有问题”,而在于让每类数据使用合适的接口。文件下载、CDN 回源和归档仍然走对象存储;相似度检索走向量服务;账号、租户和任务状态仍由数据库负责。

OSS 与 OSS Vectors 怎么选

如果业务只是图片、安装包、备份、静态资源或用户上传文件,普通 OSS Bucket 已经足够。OSS 支持 Standard、IA、Archive、Cold Archive 和 Deep Cold Archive 等存储类型,选择时应按访问频率、取回延迟和最低存储时长判断,而不是只看每 GB 单价。

如果业务需要 RAG 召回、多模态相似搜索或推荐候选集,再考虑 Vector Bucket。官方文档列出了向量索引、标量过滤以及请求限制等细节;例如查询吞吐会受到向量数量、维度、TopK 和过滤条件影响,不能把文档中的上限直接当成生产 SLA。上线前应使用自己的向量维度、TopK、并发和数据规模压测。

可以按下面的路径决策:

  1. 只有文件读写:使用普通 OSS Bucket。
  2. 有文件搜索但关键词检索就够用:先用对象元数据、全文检索或数据库索引,避免过早引入向量系统。
  3. 需要语义召回:对象存储保存原文,Vector Bucket 保存索引和向量,数据库保存业务关系。
  4. 有严格的在线延迟或高并发要求:把热数据、缓存和向量检索服务分层,并用压测结果决定是否需要独立的高性能检索集群。

生命周期、备份和成本要一起设计

OSS 的费用不只有存储容量,还可能包括请求、数据取回、外网流出、跨地域复制和相关处理费用。一个常见的生命周期策略是:近期上传的原始文件放 Standard;长期不活跃但仍可能访问的文件转 IA 或 Archive;合规留存数据再进入更冷的存储类型。对于 Archive、Cold Archive 和 Deep Cold Archive,要把恢复时间、最低存储时长和取回费用写进业务方案。

RAG 场景尤其要避免只给原始文件做降冷处理,却忽略向量和解析结果的版本。建议至少保留以下字段:

  • document_idtenant_idversion
  • 原始对象的 Bucket、ObjectKey、ETag 或内容哈希;
  • Embedding 模型、维度、切分策略和索引版本;
  • 创建时间、最后访问时间和删除标记。

这样更换模型或切分规则时,可以建立新索引并进行灰度切换,而不是覆盖旧数据后无法回滚。跨地域复制适合灾备和合规场景,但复制流量、目标地域和双份存储都要纳入预算。

权限和上线检查清单

生产环境不建议把 Bucket 设为公共读,也不要把长期 AccessKey 写进前端或服务器镜像。前端上传可使用短期 STS 凭证,并限制 Bucket、ObjectKey 前缀、HTTP 方法和有效期;服务端访问向量数据则使用最小权限的 RAM 或 Bucket Policy。

上线前至少检查:

  • 原始文件、向量索引和业务数据库是否能按同一个文档版本关联;
  • 删除、重跑和失败重试是否幂等;
  • 私有资源是否经过签名 URL 或后端代理访问;
  • 生命周期规则是否先在测试前缀验证;
  • 向量查询、对象下载、外网流量和跨地域复制是否有独立监控;
  • 备份恢复是否做过实际演练。

命令行工具适合做资源初始化和批处理,但生产变更最好纳入 Terraform 或其他基础设施即代码流程,避免手工操作造成地域、权限和生命周期配置漂移。

结语:统一治理,不等于混用接口

AI 存储架构的重点不是追求“所有数据放进同一个桶”,而是统一数据治理,同时保留对象、向量和业务数据库各自的职责。OSS 负责可靠地保存原始内容,OSS Vectors 负责向量索引与相似查询,数据库负责身份、权限、任务和版本关系。

对于个人开发者和小团队,建议先用普通 OSS 完成文件链路,再为确有语义检索需求的知识库增加向量层;对于企业项目,则应在数据分层、冷热策略、权限、灾备和压测结果明确后再决定是否扩大向量服务规模。

继续浏览

还想继续看,可以再看这些文章

适合想继续在同一主题下横向阅读、对比不同切入角度的用户。