向量数据作为 AI 应用的基础设施,正呈现爆炸式增长的趋势。OSS 向量 Bucket 于 2025 年 9 月发布,是阿里云对象存储 OSS 提供的一种专门用于存储、查询和管理向量数据的 Bucket 类型,具有低成本、大规模和简单易用的特点,面向多模态检索、知识库、RAG、AI Agent 等 AI 场景提供向量数据存储和查询的能力。目前,已经有众多客户基于向量 Bucket 来构建自身的语义检索系统。
近期,OSS 全新发布 OSS Vectors Embed CLI 命令行工具,用户可以便捷地调用阿里云百炼向量模型,将 OSS 中原始文件或存储在本地的海量文件进行向量化,并将向量化结果写入到 OSS 向量 Bucket。同时,该命令行工具也支持发起多模态语义检索,简化如 RAG 知识库、AI 助手、多模态语义检索等各类 AI 应用的开发流程,核心能力包括:
- 无缝集成:便捷调用阿里云百炼服务实现数据向量化。
- 多源输入:支持对本地文件、OSS 对象、第三方文件 URL 或文本字符串等多种数据格式进行向量化。
- 批量处理:支持将原始文件的向量化结果批量写入到向量 Bucket。
- 灵活自定义:支持灵活设置向量 Key 值、灵活自定义模型参数,并支持将向量数据携带的标量元数据一同写入到向量 Bucket。
- 多模态检索:支持根据文本、图片等检索条件进行相似度语义检索,满足多模态语义检索需求。
本文将在下面介绍如何使用 OSS Vectors Embed CLI 命令行工具,通过若干简单的命令快速构建多模态语义检索系统。同时,本文将介绍 OSS Vectors Embed CLI 命令行工具的灵活自定义能力,如批量写入、自定义向量键、自定义向量模型参数等。
第一步:环境准备
在环境配置步骤中,您需要配置访问凭证、安装 OSS-Vectors-Embed-CLI 工具、创建向量 Bucket。
配置访问凭证
在使用 CLI 工具前,需要准备以下访问凭证:
将访问凭证配置为环境变量。CLI 在执行时会自动读取这些变量,无需在命令中重复提供。
# 阿里云账户 AccessKey export OSS_ACCESS_KEY_ID="<your-access-key-id>" export OSS_ACCESS_KEY_SECRET="<your-access-key-secret>" # 百炼 API Key export DASHSCOPE_API_KEY="<your-dashscope-api-key>"
安全提示:请勿在脚本中硬编码凭证,建议使用环境变量。
安装 OSS-Vectors-Embed-CLI 工具
支持 Python 3.9 或更高版本。
方式一:pip 安装(推荐)
pip install oss-vectors-embed-cli
方式二:开发模式安装
git clone https://github.com/aliyun/oss-vectors-embed-cli.git cd oss-vectors-embed-cli pip install -e .
验证安装
oss-vectors-embed --version # 输出: oss-vectors-embed, version 0.1.0
创建向量 Bucket
写入向量数据之前,需要创建向量 Bucket 并配置索引:
- 创建向量 Bucket:在向量 Bucket页面创建向量 Bucket,用于存储向量数据和索引。
- 创建向量索引:在已创建的向量 Bucket 中创建索引,配置与向量模型匹配的向量维度。
重要:向量索引的维度必须与所用向量模型输出维度一致。例如,使用 text-embedding-v4 模型(默认 1024 维)时,索引维度也应设为 1024。
第二步:向量写入
OSS 向量 Bucket 提供 PutVectors 接口,将向量数据写入到 OSS 向量 Bucket 中。OSS-Vectors-Embed-CLI 命令行工具将原始文件读取(GetObject)、调用阿里云百炼做向量化、向量数据写入(PutVectors)等多次 API 调用封装为一条命令,用户仅需调用一条命令便可以快速完成向量数据的生产和写入。阿里云百炼提供文本向量模型和多模态向量模型,支持对来自 OSS 和客户本地的文本、图片和视频文件进行向量化,您可以将任意文件的向量化结果写入到向量 Bucket 中。以下分别介绍通过 OSS-Vectors-Embed-CLI 命令行工具来写入“文本文件向量”、“图片文件向量”和“视频文件向量”的使用方式。
写入文本文件的向量
以阿里云百炼文本向量模型text-embedding-v4为例,您可以根据自己的需求选择其他合适的向量模型。输入源支持文本字符串、OSS 对象或本地文本文件。
- 直接输入文本来生成向量并将其写入到向量 Bucket
请求示例
oss-vectors-embed \ --account-id <your-account-id> \ //阿里云 ID --vectors-region cn-hangzhou \ //OSS 向量 Bucket 所在地域 put \ --vector-bucket-name my-vector-bucket \ //OSS 向量 Bucket 名称 --index-name my-index \ //OSS 向量 Index 名称 --model-id text-embedding-v4 \ //使用的向量模型 --text-value "人工智能正在改变我们的生活方式" //直接输入文本
返回示例
{ "key": "3d8935dd-6395-4c9c-a501-df902846ec80", //向量 Key 值 "bucket": "my-vector-bucket", //OSS 向量 Bucket 名称 "index": "my-index", //OSS 向量 Index 名称 "model": "text-embedding-v4", //使用的向量模型 "contentType": "text", //原始文件类型 "embeddingDimensions": 1024, //向量维度 "metadata": { //向量数据所携带的标量元数据 "OSS-VECTORS-EMBED-SRC-CONTENT": "人工智能正在改变我们的生活方式", //原始文本 "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT", //原始文件类型 "OSS-VECTORS-EMBED-SRC-LOCATION": "direct_text_input" //CLI 会自动在向量 Bucket 该向量所在行添加源信息字段(OSS-VECTORS-EMBED-SRC-*),用于追溯向量来源。 } }
- 对本地文本文件生成向量并将其写入向量 Bucket
请求示例
oss-vectors-embed \ --account-id <your-account-id> \ //阿里云 ID --vectors-region cn-hangzhou \ //OSS 向量 Bucket 所在地域 put \ --vector-bucket-name my-vector-bucket \ //OSS 向量 Bucket 名称 --index-name my-index \ //OSS 向量 Index 名称 --model-id text-embedding-v4 \ //使用的向量模型 --text "./documents/article.txt" //本地文本文件所在路径
返回示例
{ "key": "415c108e-d653-4d54-a241-d3b70e996666", //向量 Key 值 "bucket": "my-vector-bucket", //OSS 向量 Bucket 名称 "index": "my-index", //OSS 向量 Index 名称 "model": "text-embedding-v4", //使用的向量模型 "contentType": "text", //原始文件类型 "embeddingDimensions": 1024, //向量维度 "metadata": { //向量数据所携带的标量元数据 "OSS-VECTORS-EMBED-SRC-CONTENT": "人工智能正在改变我们的生活方式。从清晨被智能闹钟根据睡眠周期轻柔唤醒,到通勤途中语音助手为我们规划最优路线;从家中智能音箱播放个性化新闻摘要,到工作时AI工具自动生成报告、翻译文档、优化流程——AI已悄然融入日常的每个角落。", //原始文本 "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT", //原始文件类型 "OSS-VECTORS-EMBED-SRC-LOCATION": "./documents/article.txt" //CLI 会自动在向量 Bucket 该向量所在行添加源信息字段(OSS-VECTORS-EMBED-SRC-*),用于追溯向量来源。 } }
- 对 OSS 文本文件生成向量并将其写入向量 Bucket
请求示例
oss-vectors-embed \ --account-id <your-account-id> \ //阿里云 ID --vectors-region cn-hangzhou \ //OSS 向量 Bucket 所在地域 put \ --region cn-hangzhou \ //OSS 原始文件所在 Bucket 的地域 --vector-bucket-name my-vector-bucket \ //OSS 向量 Bucket 名称 --index-name my-index \ //OSS 向量 Index 名称 --model-id text-embedding-v4 \ //使用的向量模型 --text "oss://source-bucket/documents/file.txt" //OSS 文件 URL
返回示例
{ "key": "7ca24758-0d5b-46fe-ab90-db82be387650", //向量 Key 值 "bucket": "my-vector-bucket", //OSS 向量 Bucket 名称 "index": "my-index", //OSS 向量 Index 名称 "model": "text-embedding-v4", //使用的向量模型 "contentType": "text", //原始文件类型 "embeddingDimensions": 1024, //向量维度 "metadata": { //向量数据所携带的标量元数据 "OSS-VECTORS-EMBED-SRC-CONTENT": "This is a example file.", //原始文件的文本内容 "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT", //原始文件类型 "OSS-VECTORS-EMBED-SRC-LOCATION": "oss://source-bucket/documents/file.txt" //CLI 会自动在向量 Bucket 该向量所在行添加源信息字段(OSS-VECTORS-EMBED-SRC-*),用于追溯向量来源。 } }
写入图片文件的向量
以阿里云百炼多模态向量模型qwen2.5-vl-embedding为例,您可以根据自己的需求选择其他合适的向量模型。输入源支持本地文件、OSS 对象或 HTTP/HTTPS URL。
- 对本地图片文件生成向量并将其写入向量 Bucket
请求示例
oss-vectors-embed \ --account-id <your-account-id> \ //阿里云 ID --vectors-region cn-hangzhou \ //OSS 向量 Bucket 所在地域 put \ --vector-bucket-name my-vector-bucket \ //OSS 向量 Bucket 名称 --index-name my-index \ //OSS 向量 Index 名称 --model-id qwen2.5-vl-embedding \ //使用的向量模型 --image "./images/photo.jpg" //本地图片文件所在路径
返回示例
{ "key": "8fc8105b-d54f-464c-bf44-97b088d566ce", //向量 Key 值 "bucket": "my-vector-bucket", //OSS 向量 Bucket 名称 "index": "my-index", //OSS 向量 Index 名称 "model": "qwen2.5-vl-embedding", //使用的向量模型 "contentType": "image", //原始文件类型 "embeddingDimensions": 1024, //向量维度 "metadata": { //向量数据所携带的标量元数据 "OSS-VECTORS-EMBED-SRC-LOCATION": "./images/photo.jpg", //CLI 会自动在向量 Bucket 该向量所在行添加源信息字段(OSS-VECTORS-EMBED-SRC-*),用于追溯向量来源。 "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "IMAGE" //原始文件类型 } }
- 对 OSS 图片文件生成向量并将其写入向量 Bucket
请求示例
oss-vectors-embed \ --account-id <your-account-id> \ //阿里云 ID --vectors-region cn-hangzhou \ //OSS 向量 Bucket 所在地域 put \ --region cn-hangzhou \ //OSS 原始文件所在 Bucket 的地域 --vector-bucket-name my-vector-bucket \ //OSS 向量 Bucket 名称 --index-name my-index \ //OSS 向量 Index 名称 --model-id qwen2.5-vl-embedding \ //使用的向量模型 --image "oss://source-bucket/photo.jpg" //OSS 文件 URL
返回示例
{ "key": "dbf57dfd-58be-4793-a484-a82eb86e0e08", //向量 Key 值 "bucket": "my-vector-bucket", //OSS 向量 Bucket 名称 "index": "my-index", //OSS 向量 Index 名称 "model": "qwen2.5-vl-embedding", //使用的向量模型 "contentType": "image", //原始文件类型 "embeddingDimensions": 1024, //向量维度 "metadata": { //向量数据所携带的标量元数据 "OSS-VECTORS-EMBED-SRC-LOCATION": "oss://source-bucket/photo.jpg", //CLI 会自动在向量 Bucket 该向量所在行添加源信息字段(OSS-VECTORS-EMBED-SRC-*),用于追溯向量来源。 "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "IMAGE" //原始文件类型 } }
- 对 URL 文件生成向量并将其写入向量 Bucket
请求示例
oss-vectors-embed \ --account-id <your-account-id> \ //阿里云 ID --vectors-region cn-hangzhou \ //OSS 向量 Bucket 所在地域 put \ --vector-bucket-name my-vector-bucket \ //OSS 向量 Bucket 名称 --index-name my-index \ //OSS 向量 Index 名称 --model-id qwen2.5-vl-embedding \ //使用的向量模型 --image "https://example.com/photo.jpg" //文件 URL
返回示例
{ "key": "f15cfe75-d4de-497f-b441-3b08243cfa5e", //向量 Key 值 "bucket": "my-vector-bucket", //OSS 向量 Bucket 名称 "index": "my-index", //OSS 向量 Index 名称 "model": "qwen2.5-vl-embedding", //使用的向量模型 "contentType": "image", //原始文件类型 "embeddingDimensions": 1024, //向量维度 "metadata": { //向量数据所携带的标量元数据 "OSS-VECTORS-EMBED-SRC-LOCATION": "https://example.com/photo.jpg", //CLI 会自动在向量 Bucket 该向量所在行添加源信息字段(OSS-VECTORS-EMBED-SRC-*),用于追溯向量来源。 "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "IMAGE" //原始文件类型 } }
写入视频文件的向量
以阿里云百炼多模态向量模型qwen2.5-vl-embedding为例,您可以根据自己的需求选择其他合适的向量模型。输入源支持 OSS 视频文件、 HTTP/HTTPS URL 文件。
- 对 OSS 视频文件生成向量并将其写入向量 Bucket
请求示例
oss-vectors-embed \ --account-id <your-account-id> \ //阿里云 ID --vectors-region cn-hangzhou \ //OSS 向量 Bucket 所在地域 put \ --region cn-hangzhou \ //OSS 原始文件所在 Bucket 的地域 --vector-bucket-name my-vector-bucket \ //OSS 向量 Bucket 名称 --index-name my-index \ //OSS 向量 Index 名称 --model-id qwen2.5-vl-embedding \ //使用的向量模型 --video "oss://source-bucket/myvideo.mp4" //OSS 文件 URL
返回示例
{ "key": "dbf57dfd-58be-4793-a484-a82eb86e0e08", //向量 Key 值 "bucket": "my-vector-bucket", //OSS 向量 Bucket 名称 "index": "my-index", //OSS 向量 Index 名称 "model": "qwen2.5-vl-embedding", //使用的向量模型 "contentType": "video", //原始文件类型 "embeddingDimensions": 1024, //向量维度 "metadata": { //向量数据所携带的标量元数据 "OSS-VECTORS-EMBED-SRC-LOCATION": "oss://source-bucket/myvideo.mp4", //CLI 会自动在向量 Bucket 该向量所在行添加源信息字段(OSS-VECTORS-EMBED-SRC-*),用于追溯向量来源。 "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "VIDEO" //原始文件类型 } }
- 对 URL 文件生成向量并将其写入向量 Bucket
请求示例
oss-vectors-embed \ --account-id <your-account-id> \ //阿里云 ID --vectors-region cn-hangzhou \ //OSS 向量 Bucket 所在地域 put \ --vector-bucket-name my-vector-bucket \ //OSS 向量 Bucket 名称 --index-name my-index \ //OSS 向量 Index 名称 --model-id qwen2.5-vl-embedding \ //使用的向量模型 --video "https://example.com/video.mp4" //文件 URL
返回示例
{ "key": "9157d87b-c44b-4c53-aceb-cd4be7fd8bd9", //向量 Key 值 "bucket": "my-vector-bucket", //OSS 向量 Bucket 名称 "index": "my-index", //OSS 向量 Index 名称 "model": "qwen2.5-vl-embedding", //使用的向量模型 "contentType": "video", //原始文件类型 "embeddingDimensions": 1024, //向量维度 "metadata": { "OSS-VECTORS-EMBED-SRC-LOCATION": "https://example.com/video.mp4", //CLI 会自动在向量 Bucket 该向量所在行添加源信息字段(OSS-VECTORS-EMBED-SRC-*),用于追溯向量来源。 "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "VIDEO" //原始文件类型 } }
同时添加标量元数据
您可以参照以下方式,在上述向量写入的命令中添加自定义标量元数据。添加后,可以用于向量和标量混合检索。
请求示例
oss-vectors-embed \ --account-id <your-account-id> \ --vectors-region cn-hangzhou \ put \ --vector-bucket-name my-vector-bucket \ --index-name my-index \ --model-id text-embedding-v4 \ --text-value "技术文档内容" \ --metadata '{"category": "technology", "version": "1.0", "author": "admin"}' //添加自定义标量元数据,用户向量和标量混合检索
用户自定义的元数据字段将与系统自动添加的字段合并存储。
返回示例
{ "key": "c0ed4d9d-5301-49a5-82b7-eaf9d02b04a9", "bucket": "my-vector-bucket", "index": "my-index", "model": "text-embedding-v4", "contentType": "text", "embeddingDimensions": 1024, "metadata": { "category": "technology", //已添加的自定义元数据 "version": "1.0", //已添加的自定义元数据 "author": "admin", //已添加的自定义元数据 "OSS-VECTORS-EMBED-SRC-CONTENT": "技术文档内容", "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT", "OSS-VECTORS-EMBED-SRC-LOCATION": "direct_text_input" } }
第三步:向量检索
OSS 向量 Bucket 提供 QueryVectors 接口,可以发起向量的相似度检索。使用向量的相似度检索之前,需要先将 Query 内容(文本或图片)进行向量化,然后在向量索引中查找语义最相似的向量。OSS-Vectors-Embed_CLI 提供简单的命令语句,快速完成 Query 内容的向量化和相似度检索。
重要:查询时使用的向量模型必须与索引数据所用的模型保持一致。
根据文本进行向量相似度检索
根据文本查询相似向量,其中--top-k 参数控制检索返回的结果数量。执行以下命令示例,在 my-index 索引中搜索与“什么是人工智能”语义最相似的向量结果。
请求示例
oss-vectors-embed \ --account-id <your-account-id> \ --vectors-region cn-hangzhou \ query \ --vector-bucket-name my-vector-bucket \ --index-name my-index \ --model-id text-embedding-v4 \ --text-value "什么是人工智能" \ // Query 检索文本 --top-k 100 // 检索返回 100 个最相似的向量结果
返回示例
{ "results": [ { "Key": "3d8935dd-6395-4c9c-a501-df902846ec80", //检索返回的向量结果,返回向量 Key-Value 和标量元数据 "metadata": { "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT", "OSS-VECTORS-EMBED-SRC-CONTENT": "人工智能正在改变我们的生活方式", "OSS-VECTORS-EMBED-SRC-LOCATION": "direct_text_input" } }, ... ], "summary": { "queryType": "text", "model": "text-embedding-v4", "index": "my-index", "resultsFound": 100, "queryDimensions": 1024 } }
根据图片进行向量相似度检索
可以根据图片来检索最相似的向量数据,以实现“以图搜图”(查找与图像匹配的图片)等应用场景。
请求示例
oss-vectors-embed \ --account-id 1234567890123456 \ --vectors-region cn-hangzhou \ query \ --vector-bucket-name my-vector-bucket \ --index-name my-index \ --model-id qwen2.5-vl-embedding \ --image "./query-images/similar-product.jpg" \ //Query 检索图片 --top-k 100 // 检索返回 100 个最相似的向量结果
返回示例
{ "results": [ { "Key": "11dcf66b-708a-4707-8bd4-8656bead19da", //检索返回的向量结果,返回向量 Key-Value 和标量元数据 "metadata": { "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "IMAGE", "OSS-VECTORS-EMBED-SRC-LOCATION": "similar-product.png" } }, { ... ], "summary": { "queryType": "image", "model": "qwen2.5-vl-embedding", "index": "my-index", "resultsFound": 10, "queryDimensions": 1024 } }
若希望使用以表格形式输出检索结果,也可以使用 --output table 参数可将默认的 JSON 输出转换为表格格式,更便于人工阅读、交互式探索和调试。
请求示例
oss-vectors-embed \ --account-id <your-account-id> \ --vectors-region cn-hangzhou \ query \ --vector-bucket-name my-vector-bucket \ --index-name my-index \ --model-id text-embedding-v4 \ --text "./queries/user-question.txt" \ --top-k 3 \ --output table //指定为表格形式输出检索结果
返回示例
Query Results ┏━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Rank ┃ Vector Key ┃ Distance ┃ Metadata ┃ ┡━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━┩ │ 1 │ doc:auth-setup │ N/A │ {"category": "docs"} │ │ 2 │ doc:security-config │ N/A │ {"category": "docs"} │ │ 3 │ doc:api-reference │ N/A │ {"category": "docs"} │ └──────┴────────────────────────┴──────────┴────────────────────────┘ Query Summary: Model: text-embedding-v4 Results Found: 3 Query Dimensions: 1024
注意:Distance 列显示 N/A 表示查询时未指定返回距离值。如需显示,请在命令中添加 --return-distance 参数。
使用向量和标量混合检索
可以使用 --filter 参数来进行标量元数据后过滤,进而缩小查询范围,实现更精确的搜索。OSS-Vectors-Embed-CLI 命令行工具支持根据单一标量元数据进行简单过滤,也可以根据多个条件进行组合过滤。
- 使用单一标量元数据进行简单过滤
如查询 category 为 technology 的向量:
请求示例
oss-vectors-embed \ --account-id <your-account-id> \ --vectors-region cn-hangzhou \ query \ --vector-bucket-name my-vector-bucket \ --index-name my-index \ --model-id text-embedding-v4 \ --text-value "技术文档" \ --filter '{"category": {"$eq": "technology"}}' \ //通过 Filter 参数实现标量元数据过滤 --top-k 20 \ --return-metadata
返回示例
{ "results": [ { "Key": "fd91808c-8d7c-480e-a72b-2bfa7d313a80", "metadata": { "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT", "author": "admin", "category": "technology", "OSS-VECTORS-EMBED-SRC-CONTENT": "技术文档内容", "version": "1.0", "OSS-VECTORS-EMBED-SRC-LOCATION": "direct_text_input" } }, ... ], "summary": { "queryType": "text", "model": "text-embedding-v4", "index": "test1", "resultsFound": 4, "queryDimensions": 1024 } }
- 使用过滤语法根据多个过滤条件进行组合过滤
OSS-Vectors-Embed-CLI 命令行工具支持基于过滤语法组合多个过滤条件查询,如 AND、OR 等。以下对 AND 条件进行举例。
请求示例
# AND: 两个条件都必须匹配 oss-vectors-embed \ --account-id <your-account-id> \ --vectors-region cn-hangzhou \ query \ --vector-bucket-name my-vector-bucket \ --index-name my-index \ --model-id text-embedding-v4 \ --text-value "API 参考" \ --filter '{"$and": [{"category": "documentation"}, {"version": "3.0"}]}' \ //组合过滤条件 --top-k 5
返回示例
{ "results": [ { "Key": "fd91808c-8d7c-480e-a72b-2bfa7d313a80", "metadata": { "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT", "author": "admin", "category": "technology", "OSS-VECTORS-EMBED-SRC-CONTENT": "API 参考", "version": "1.0", "OSS-VECTORS-EMBED-SRC-LOCATION": "direct_text_input" } }, { ... ], "summary": { "queryType": "text", "model": "text-embedding-v4", "index": "my-index", "resultsFound": 5, "queryDimensions": 1024 } }
更多的灵活自定义能力
批量处理能力
CLI 工具支持使用通配符对整个目录的文件进行批量处理。在批量模式下,CLI 会自动并行发起请求以提高处理效率。以下为批量处理 OSS 某一 prefix 下文件的命令示例。
请求示例
oss-vectors-embed \ --account-id 1234567890123456 \ --vectors-region cn-hangzhou \ put \ --vector-bucket-name my-vector-bucket \ --index-name my-index \ --model-id text-embedding-v4 \ --text "oss://bucket/path/*" //对 OSS 该 Prefix 下的文件批量发起向量化和向量结果的写入
返回示例
{ "type": "streaming_batch", "bucket": "my-vector-bucket", "index": "my-index", "model": "text-embedding-v4", "contentType": "text", "totalFiles": 2, "processedFiles": 2, "failedFiles": 0, "totalVectors": 2, "vectorKeys": [ "1001dfcb-1e78-450b-8526-a9c92fa308c6", "b6aa1da0-adc7-489e-83e2-e39ff2e1fb9d" ] }
还可以使用 --max-workers 参数用于控制并发请求数。OSS 向量 Bucket 支持每个请求批量写入最多 500 行向量数据,并设置最大 5 个并发,即每秒最多写入 2500 行向量。若您有 1000 万行向量需要写入,大概需要 1 小时左右。
请求示例
oss-vectors-embed \ --account-id 1234567890123456 \ --vectors-region cn-hangzhou \ put \ --vector-bucket-name my-vector-bucket \ --index-name my-index \ --model-id text-embedding-v4 \ --text "./documents/*.txt" \ --max-workers 5 //设置并发
自定义向量键
CLI 工具可以灵活指定向量 Key 值,如设置为特定 Key,或者将向量 Key 设置为原始对象 Key 值。同时,也可以指定向量 Key 值的前缀。
- 将某一自定义 Key 设置为向量 Key
返回示例
oss-vectors-embed \ --account-id <your-account-id> \ --vectors-region cn-hangzhou \ put \ --vector-bucket-name my-vector-bucket \ --index-name my-index \ --model-id text-embedding-v4 \ --text-value "文档内容" \ --key "doc-001" //自定向量 Key 值为“doc-001”
返回示例
{ "key": "doc-001", //向量 Key 值为“doc-001” "bucket": "my-test-2", "index": "test1", "model": "text-embedding-v4", "contentType": "text", "embeddingDimensions": 1024, "metadata": { "OSS-VECTORS-EMBED-SRC-CONTENT": "文档内容", "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT", "OSS-VECTORS-EMBED-SRC-LOCATION": "direct_text_input" } }
- 将原始文件 Key 值设置为向量 Key
请求示例
oss-vectors-embed \ --account-id <your-account-id> \ --vectors-region cn-hangzhou \ put \ --vector-bucket-name my-vector-bucket \ --index-name my-index \ --model-id text-embedding-v4 \ --text "article.txt" \ --filename-as-key //将原始文件 Key 值“article.txt”设置为向量 Key 值
返回示例
{ "key": "article.txt", //向量 Key 值设置为“article.txt” "bucket": "my-vector-bucket", "index": "my-index", "model": "text-embedding-v4", "contentType": "text", "embeddingDimensions": 1024, "metadata": { "OSS-VECTORS-EMBED-SRC-CONTENT": "人工智能正在改变我们的生活方式。从清晨被智能闹钟根据睡眠周期轻柔唤醒,到通勤途中语音助手为我们规划最优路线;从家中智能音箱播放个性化新闻摘要,到工作时AI工具自动生成报告、翻译文档、优化流程——AI已悄然融入日常的每个角落。", "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT", "OSS-VECTORS-EMBED-SRC-LOCATION": "article.txt" } }
- 为向量 Key 值添加 Prefix
请求示例
oss-vectors-embed \ --account-id <your-account-id> \ --vectors-region cn-hangzhou \ put \ --vector-bucket-name my-vector-bucket \ --index-name my-index \ --model-id text-embedding-v4 \ --text-value "文档内容" \ --key "doc-001" \ --key-prefix "project-a/" //添加向量 Key 值的 Prefix
返回示例
{ "key": "project-a/doc-001", //向量 Key 值添加了“project-a/”的 Prefix "bucket": "my-vector-bucket", "index": "my-index", "model": "text-embedding-v4", "contentType": "text", "embeddingDimensions": 1024, "metadata": { "OSS-VECTORS-EMBED-SRC-CONTENT": "文档内容", "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT", "OSS-VECTORS-EMBED-SRC-LOCATION": "direct_text_input" } }
自定义模型参数
通过 --dashscope-inference-params 参数可以精细控制向量模型的行为,以满足不同业务场景的需求。
- 向量写入时自定义模型的输出类型和向量维度
请求示例
oss-vectors-embed \ --account-id <your-account-id> \ --vectors-region cn-hangzhou \ put \ --vector-bucket-name my-vector-bucket \ --index-name my-index \ --model-id text-embedding-v4 \ --text-value "技术文档内容" \ --dashscope-inference-params '{"output_type": "dense", "dimension": "1024"}' //自定义模型的输出类型和向量维度
返回示例
{ "key": "73359c62-55a7-458a-a171-003755f3338e", "bucket": "my-vector-bucket", "index": "my-index", "model": "text-embedding-v4", "contentType": "text", "embeddingDimensions": 1024, "metadata": { "OSS-VECTORS-EMBED-SRC-CONTENT": "文档内容", "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT", "OSS-VECTORS-EMBED-SRC-LOCATION": "direct_text_input" } }
- 检索向量时自定义文本截断策略
请求示例
oss-vectors-embed \ --account-id 1234567890123456 \ --vectors-region cn-hangzhou \ query \ --vector-bucket-name my-vector-bucket \ --index-name my-index \ --model-id qwen2.5-vl-embedding \ --text-value "技术文档" \ --dashscope-inference-params '{"truncate": "END"}' \ //设置文本截断策略 --top-k 10 --return-distance
返回示例
{ "results": [ { "Key": "3d8935dd-6395-4c9c-a501-df902846ec80", "metadata": { "OSS-VECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT", "OSS-VECTORS-EMBED-SRC-CONTENT": "技术文档", "OSS-VECTORS-EMBED-SRC-LOCATION": "direct_text_input" } }, ... ], "summary": { "queryType": "text", "model": "text-embedding-v4", "index": "my-index", "resultsFound": 10, "queryDimensions": 1024 } }
更多参考
OSS-Vectors-Embed-CLI 命令行工具支持阿里云百炼的向量化模型,包括文本向量模型和多模态向量模型,详情可以查看 OSS 官网帮助文档说明。同时,关于向量写入参数、向量检索参数和过滤语法说明,可以查看 OSS 官网帮助文档查看参数说明。