OSS Vectors 是阿里云对象存储 OSS 提供的向量存储与检索能力,通过专门的向量 Bucket 类型来存储、查询和管理向量数据。具有低成本、大规模和简单易用的特点,面向多模态检索、知识库、RAG、AI Agent等 AI 场景提供向量存储和向量查询的能力。OSS Vectors 提供 Standard Mode 与 Fusion Mode 两种索引模式,同一向量 Bucket 内可同时创建两种模式的索引表,您可按业务场景按需选择。可以将任何通过第三方服务生成的向量数据写入向量 Bucket。同时,支持对海量原始数据与向量数据进行统一治理,对原始数据 Bucket 与向量 Bucket 配置相同的 Bucket Policy,或通过统一格式导出日志以便审计。
核心概念
向量 Bucket:全新 Bucket 类型,是管理大规模向量数据的云资源。
向量 Index:可以在向量 Bucket 中创建向量 Index。向量 Index 是存储向量数据的索引表,可以根据业务类型在同一个向量 Bucket 中创建多张向量 Index,用以存储不同业务的向量数据。当发起检索查询时,会根据向量 Index 中向量数据的相似性来返回检索结果。
索引模式:向量 Index 分为 Standard Mode 与 Fusion Mode 两种模式。两种模式在索引结构、Schema 能力、检索方式上存在差异,创建向量 Index 时即需确定模式。一个向量 Bucket 中可以同时创建不同模式的向量 Index。
向量数据:通过向量模型将图片、视频、文档等非结构化数据转换成的高维数值数组,用以表征其内容特征。向量检索正是根据向量数据的相似性进行检索结果返回。可以利用任何向量化服务(如ECS、PAI、阿里云百炼)生成向量,并通过 OSS API、SDK 或 ossutil 工具将其写入指定向量索引。在写入时,还可以附加元数据(Metadata),用于后续的标量过滤查询。
标量元数据:在写入向量数据时,还可以附加写入标量元数据(Metadata),用于后续的标量过滤查询。
向量索引模式
OSS Vectors 提供两种索引模式,以满足不同成本、性能与检索复杂度需求。您可以在同一个向量 Bucket 中同时创建两种模式的索引表。
对比项 | Standard Mode | Fusion Mode |
售卖形态 | Serverless 形态,已商业化售卖 | Serverless 形态,邀测中(当前仅在印度尼西亚(雅加达)地域开放邀测) |
适用场景 | 温冷向量数据的存储和检索,如企业内部的多媒体素材管理和检索、成本敏感型 RAG 知识库、AI 数据集检索和管理、AIGC 数据管理、多媒体素材检索和管理、内容推荐等场景。 | 温热向量数据的存储和检索,包含复杂的检索方式、混合检索等,对性能要求更高。如 APP 在线高频多模态检索、网盘多模态内容检索、在线海量租户的 RAG 知识库、APP 内容推荐、AI 助手等场景。 |
Schema | Schemaless 元数据,单张索引表默认一个向量字段 | 显式 Schema,单张索引表最多支持 3 个向量字段,向量与标量字段总数不超过 100 个 |
标量字段类型 | String、Number、Boolean、List | string、long、double、bool、ip、geoPoint |
检索方式 | 向量相似度检索-单路、向量相似度检索+标量后过滤 | 向量相似度检索-单路、向量相似度检索-多路、向量相似度检索+标量前过滤(混合检索)、全文检索、标量检索 |
检索结果排序 | 分数排序(距离排序) | 分数排序(距离排序)、自定义字段排序、支持 Rank 排序(RRF & Weight)、结果支持分页 |
向量能力 | 单列向量 | 多列向量 |
距离计算公式 | 欧氏距离、余弦距离 | 欧氏距离、余弦距离、最大内积 |
产品优势
低成本:向量数据已成为各类 AI 应用的必要基础设施,正呈现爆炸式增长的趋势。OSS Vectors 采用简洁友好的计费模式,仅根据向量数据存储容量和检索扫描数据量两个计费项进行计费,较传统方式的使用成本可以大幅度下降 90% 以上。
大规模:OSS Vectors 采用面向大规模向量数据存储的架构设计,可以承载海量向量数据的存储需求。OSS 采用 Serverless 的弹性扩缩容架构,使用 OSS Vectors 后,无需关心扩容问题。
简单易用:OSS Vectors 提供完整的 API、SDK 和命令行工具 ossutil。同时,也支持在 OSS 控制台进行管控和向量数据读写操作,如向量数据的检索查询、向量数据的添加、批量插入等。
统一管理:可以为向量 Bucket 和存储海量原始数据的 Bucket 通过相同的方式进行管理,如通过相同方式配置 Bucket Policy 来进行权限管理,配置相同的日志导出路径来进行操作审计。
语义检索:可以使用 OSS Vectors 提供的 QueryVectors 接口对索引表中的向量数据进行查询,并获取按照相似性进行排序的检索结果。与此同时,OSS Vectors 支持根据标量元数据进行过滤查询,可以在将向量数据写入向量 Bucket 时,携带标量元数据,以达到标量后过滤的效果。同时,在创建向量索引 Index 时,可以设置非过滤元数据。非过滤元数据无法作为后过滤条件,但会随检索结果返回,作为向量结果的内容描述信息。
混合检索(Fusion Mode):Fusion Mode 支持在一张索引表内配置多个向量字段与多种标量字段,并通过多路 Retriever 同时检索,最终使用 RRF 或 Weight Rank 对多路结果进行融合排序,满足多模态、复杂条件下的高精度检索需求。
应用场景
场景一:构建低成本的 RAG 应用
随着 AI 业务发展,向量数据规模呈指数级增长,存储和检索成本压力日渐增加。对于知识库、AI 助手、医疗影像检索等多模态检索场景,用户对检索延迟的容忍度逐渐放宽(可能从几十毫秒到百毫秒级)。此时,使用 OSS Vectors Standard Mode 作为 RAG 应用的向量存储底座,能以极低的成本满足业务需求。
场景二:构建分层检索的 AI Agent
不同的 AI Agent 对检索性能的要求各异。可以将全量向量数据集中存储在成本极低的 OSS 向量 Bucket Standard Mode 中;对于需要高性能、低延迟的业务场景,可以存储在 OSS 向量 Bucket Fusion Mode 中,以构建分层检索 AI Agent 应用架构。
场景三:构建数据统一管理的 AI 内容管理平台
AI 应用带来海量非结构化内容(UGC、内部资料、AI 生成内容)与相应的向量化结果,存储与检索体系容易割裂。通过将原始数据存入通用 OSS Bucket,向量数据存入 OSS 向量 Bucket,可构建高效的 AI 数据管理平台,如 AIGC 数据管理等。仅需一套 API/SDK 即可同时管理和访问原始文件与向量索引,轻松构建高效、统一的 AI 内容管理平台。
场景四:语义检索与多模态混合检索
对于电商商品检索、视频/图片内容理解、企业知识库问答等对召回率和延迟要求更高的在线场景,可使用 Fusion Mode。该模式支持多列向量、全文检索、多路 Retriever 混合排序,能够在向量相似度、文本关键词、标量过滤、地理空间等多种检索信号之间灵活组合,显著提升复杂查询的检索效果。
企业级特性
域名访问
提供独立的公网和内网访问域名,与通用 OSS Bucket 隔离。
公网访问域名:
$bucketname-$uid.regionID.oss-vectors.aliyuncs.com内网访问域名:
$bucketname-$uid.regionID-internal.oss-vectors.aliyuncs.com
注意:除 ListVectorBuckets 操作外,其他操作必须使用三级域名。安全传输
支持通过 HTTPS 协议进行加密传输,保障数据在传输过程中的安全。
访问控制
Bucket Policy:支持基于资源的授权策略,可将权限控制精确到向量 Bucket、单个或多个向量索引级别。
RAM Policy:支持基于身份的 RAM 授权策略,能够对向量 Bucket、向量索引及数据操作进行细粒度权限控制,同时支持跨账号访问授权。
日志
访问日志转存:支持将访问日志实时或准实时转存到指定的 Bucket 中。
统一日志格式:日志格式与通用 OSS 日志完全兼容,并额外增加了
BucketARN字段,用以唯一标识向量 Bucket 资源,方便进行统一的日志分析。
配额与限制
OSS Vectors 具有某些限制和约束,在设计与实现向量存储和检索方案时,请根据以下限制合理规划 Bucket 数量、索引规模、元数据结构以及接口调用策略。如需调大以下相关配额,请联系技术支持申请调整。
单个主账号在单个地域最多创建 100 个向量Bucket。
单个向量 Bucket 中最多可创建 100 张向量索引。
Standard Mode 使用限制
单个向量索引表最多可存储 20 亿行向量数据。
向量维度范围:1~4096 维。
向量检索请求的 TopK 默认范围:1~500。
单个向量的元数据(可筛选 + 不可筛选)总大小上限:200 KB。
单个向量的单个可筛选元数据大小上限:2 KB。
单个向量的元数据(可筛选 + 不可筛选)总数量上限:100 个。
标量元数据类型支持 4 种,包括 String、Number、Boolean、List。
在通过元数据对向量进行过滤查询时:
单次过滤指令中可过滤元数据的累计长度不超过 20 KB。
单次过滤指令中可过滤元数据项数量不超过 1024 个。
过滤条件嵌套层级最多支持 8 层。
通过 QueryVectors 和 ListVectors 进行标量元数据过滤时,支持以下操作符:
等值:$eq、$ne
范围:$gt、$gte、$lt、$lte
包含:$in、$nin
存在性:$exists
逻辑:$and、$or、$nor
对于单个Bucket,创建向量索引的 API (PutVectorIndex)请求频率限制为最多每秒 5 次。
对于单个索引,写入向量数据的 API (PutVectors)的 QPS 上限为 1000,单并发最大支持批量写入 500 条,所有并发批量最多写入 2500 条。举例,如若单并发批量写入 100 条,则写入 QPS 最大支持 2500/100=25。
写入向量数据的 API (PutVectors)的请求体大小最大 20 MB。
对于单个索引,检索向量数据的 API (QueryVectors)的 QPS 上限为 100。
说明:检索 QPS 与单表向量规模、向量维度、查询 TopK、查询时携带的标量元数据条件均有关系。通常来说,在典型的 1000 万行 1024 维向量规模中,当查询 TopK=100 时,查询 QPS 通常能够达到 100。当表数据规模增加或查询 TopK 取值增大时,实际可达到的检索 QPS 可能下降,无法保证一定能达到 100,请以实际业务测试结果为准。
检索向量数据的 API (QueryVectors)的 Response 最大 8 MB。
列举向量索引的 API ( ListVectorIndexes) 响应中每页最大返回索引个数 500,可分页获取下一批索引列表。
列举向量的 API (ListVectors ) 并发度上限 16 个。
Fusion Mode 使用限制
字段名在单个索引表内唯一,长度 1~63 字符,支持大小写字母、数字和下划线(_),且必须以字母开头。
字段数限制:总字段数 ≤ 100 个,向量字段 ≤ 3 个,分词字段 ≤ 8 个,其它标量字段占用剩余配额。至少必须存在一个类型为 vector 的字段。
标量字段类型支持 string、long、double、bool、ip、geoPoint。
数值与 IP 字段(double、long、ip)的数组标记 isArray 默认 false,开启数组后单个数组最多 128 个元素。
字符串字段(string)开启数组后单个数组最多 512 个元素,单个 string 元素最大 4 KB,数组所有元素整体最大 64 KB。自定义分词器支持使用 " "、"|"、"-"、"_"、"," 进行自定义分词,分词后需要单个词 ≤ 4 KB,超出部分服务端会截断再进行索引。字符串的使用细节限制请参考创建索引时的 Schema 说明文档。
Fusion Mode 的 API(PutVectors)限制请求体大小最大 20 MB,QPS 上限为 1000,单并发最大支持批量写入 500 条,所有并发批量最多写入 2500 条。举例,如若单并发批量写入 100 条,则写入 QPS 最大支持 2500/100=25。
Fusion Mode 专用的向量检索的 API(QueryVectorsFusion)相关限制说明:
该 API 支持三种查询方式:
knn 字段支持纯向量检索、向量检索结合前置 Filter 过滤:
支持单路或多路向量查询,单次请求最多 3 个 KNN 查询。
topK 参数最大 500。
numCandidates 参数最大 1000。
query 字段支持纯标量检索、全文检索:
$and、$or、$nor 每个逻辑算子最多 512 个子算子,最多 8 层嵌套。
$in、$nin 最多 1024 个元素。
$textMatch、$textMatchPhrase 的查询文本长度上限均为 512 字节。
$geoPolygon 的 points 最多 16 个点。
retriever 支持多路混合查询并进行结果融合:
retriever 存在时,顶级参数仅允许使用 indexName、limit、partitionKeys、returnMetadata、returnMetadataFields 这 5 个,其余参数(含 knn、query、sort、nextToken)全部禁止。
retrievers 数组最少 1 个、最多 3 个元素。
复合检索器(RRF Retriever、Weight Retriever)的 windowSize 最大 500。
该 API 其它限制:
limit 最大 500。
单次请求最多 3 个排序字段,分数排序仅支持 desc 倒序排序。
nextToken 翻页仅在只有 query(标量检索 + 全文检索)的情况下允许;向量检索(knn)和多路检索(retriever)不支持翻页。
partitionKeys 最多 512 个元素,且所有元素加起来最长 4 KB。
returnMetadata 默认 false,即默认不返回任何字段,设为 true 返回所有字段。
returnMetadataFields 仅在 returnMetadata=true 时生效,不支持返回向量类型字段,设为 [] 等同于 returnMetadata=false 不返回任何字段,设为 null 等同于未填该参数,即返回全部字段。
Response 最大 8 MB。
Fusion Mode 当前处于邀测阶段,仅在印度尼西亚(雅加达)地域提供,部分配额和 API 限制可能与 Standard Mode 存在差异,具体以 API 文档为准。
计费说明
Standard Mode 已收费,请及时关注产品账单金额。收费方式请参考向量计费项。Fusion Mode 目前免费邀测中。