OSS Vectors Embed CLI 命令列工具支援便捷調用阿里雲百鍊向量模型,將 OSS 或本地檔案向量化並寫入 OSS 向量 Bucket,同時支援多模態語義檢索,簡化 RAG 知識庫、AI 助手等應用的開發流程。核心能力包括:
無縫整合:便捷調用阿里雲百鍊服務實現資料向量化。
多源輸入:支援對本地檔案、OSS對象、第三方檔案 URL或文本字串等多種資料格式進行向量化。
靈活處理:支援單檔案處理與某一路徑下的批量向量化轉換。
深度定製:靈活設定向量 Key 值、標量中繼資料。
多模態檢索:支援根據文本進行相似性語義檢索、根據圖片進行相似性語義檢索、根據視頻進行相似性語義檢索,賦能多元化業務情境。
通過 OSS Vectors Embed CLI,只需幾條簡單命令即可快速搭建多模態語義檢索系統,並可按需配置批量寫入、自訂向量鍵、自訂模型參數等靈活定製能力。
阿里雲 OSS Vectors Embed CLI 目前處於預覽版階段,工具的部分參數可能會發生調整。
步驟一:環境準備
在使用 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 呼叫封裝為一條命令,只需執行單條put命令,即可完成向量資料的生產與寫入。每個檔案會被處理為一個獨立的嵌入,當前不支援對長文檔進行自動分塊。
寫入文字檔的向量
使用文本向量模型(如 text-embedding-v4)處理文本。輸入源支援文本字串、OSS 對象或本地文字檔。
直接輸入文本
通過命令列直接輸入文本產生向量並將其寫入到向量 Bucket:
# 參數說明:
# --account-id: 阿里雲 ID
# --vectors-region: OSS 向量 Bucket 所在地區
# --vector-bucket-name: OSS 向量 Bucket 名稱
# --index-name: OSS 向量 Index 名稱
# --model-id: 使用的向量模型
# --text-value: 直接輸入文本
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
put \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-index> \
--model-id text-embedding-v4 \
--text-value "人工智慧正在改變我們的生活"命令返回樣本(包含向量鍵、Bucket 資訊和中繼資料):
{
"key": "3d8935dd-6395-4c9c-a501-df902846ec80",
"bucket": "my-vector-bucket",
"index": "my-index",
"model": "text-embedding-v4",
"contentType": "text",
"embeddingDimensions": 1024,
"metadata": {
"OSSVECTORS-EMBED-SRC-CONTENT": "人工智慧正在改變我們的生活",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
}說明:CLI 會自動在中繼資料中添加源資訊欄位(OSSVECTORS-EMBED-SRC-*),用於追溯向量來源。
讀取本地文字檔
寫入本地檔案以產生向量並將其寫入到向量 Bucket:
# 參數說明:
# --account-id: 阿里雲 ID
# --vectors-region: OSS 向量 Bucket 所在地區
# --vector-bucket-name: OSS 向量 Bucket 名稱
# --index-name: OSS 向量 Index 名稱
# --model-id: 使用的向量模型
# --text: 本地檔案路徑
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
put \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-index> \
--model-id text-embedding-v4 \
--text "<./documents/article.txt>"命令返回樣本:
{
"key": "415c108e-d653-4d54-a241-d3b70e996666",
"bucket": "my-vector-bucket",
"index": "my-index",
"model": "text-embedding-v4",
"contentType": "text",
"embeddingDimensions": 1024,
"metadata": {
"OSSVECTORS-EMBED-SRC-CONTENT": "人工智慧正在改變我們的生活。從清晨被智能鬧鐘根據睡眠周期輕柔喚醒,到通勤途中語音助手為我們規劃最優路線;從家中智能音箱播放個人化新聞摘要,到工作時AI工具自動產生報告、翻譯文檔、最佳化流程——AI已悄然融入日常的每個角落。",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-LOCATION": "./documents/article.txt"
}
}讀取 OSS 對象
直接寫入儲存在OSS中的對象(路徑格式:oss://bucket-name/object-key)並將其寫入到向量 Bucket:
# 參數說明:
# --account-id: 阿里雲 ID
# --vectors-region: OSS 向量 Bucket 所在地區
# --vector-bucket-name: OSS 向量 Bucket 名稱
# --index-name: OSS 向量 Index 名稱
# --model-id: 使用的向量模型
# --region: 源檔案 Bucket 所在地區
# --text: 源檔案 OSS 路徑
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
put \
--region cn-hangzhou \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-index> \
--model-id text-embedding-v4 \
--text "oss://<your-source-bucket>/<your-file>"注意:需使用 --region 參數指定源 OSS 對象所在的地區。
命令返回樣本:
{
"key": "7ca24758-0d5b-46fe-ab90-db82be387650",
"bucket": "my-vector-bucket",
"index": "my-index",
"model": "text-embedding-v4",
"contentType": "text",
"embeddingDimensions": 1024,
"metadata": {
"OSSVECTORS-EMBED-SRC-CONTENT": "This is a example file.",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-LOCATION": "oss://source-bucket/documents/file.txt"
}
}寫入圖片檔案的向量
使用多模態向量模型(如 qwen2.5-vl-embedding)處理圖片和視頻。輸入源支援本地檔案、OSS 對象或 HTTP/HTTPS URL。
讀取本地圖片
讀取本地圖片檔案產生向量並將其寫入向量 Bucket:
# 參數說明:
# --account-id: 阿里雲 ID
# --vectors-region: OSS 向量 Bucket 所在地區
# --vector-bucket-name: OSS 向量 Bucket 名稱
# --index-name: OSS 向量 Index 名稱
# --model-id: 使用的向量模型
# --image: 本地圖片檔案路徑
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
put \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-index> \
--model-id qwen2.5-vl-embedding \
--image "<./images/photo.jpg>"命令返回樣本:
{
"key": "8fc8105b-d54f-464c-bf44-97b088d566ce",
"bucket": "my-vector-bucket",
"index": "my-index",
"model": "qwen2.5-vl-embedding",
"contentType": "image",
"embeddingDimensions": 1024,
"metadata": {
"OSSVECTORS-EMBED-SRC-LOCATION": "./images/photo.jpg",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "IMAGE"
}
}讀取 OSS 對象
讀取儲存在OSS圖片檔案(路徑格式:oss://bucket-name/object-key)產生向量並將其寫入向量 Bucket:
# 參數說明:
# --account-id: 阿里雲 ID
# --vectors-region: OSS 向量 Bucket 所在地區
# --vector-bucket-name: OSS 向量 Bucket 名稱
# --index-name: OSS 向量 Index 名稱
# --model-id: 使用的向量模型
# --region: 源檔案 Bucket 所在地區
# --image: 源圖片 OSS 路徑
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
put \
--region cn-hangzhou \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-index> \
--model-id qwen2.5-vl-embedding \
--image "oss://<your-source-bucket>/<your-image>"命令返回樣本:
{
"key": "dbf57dfd-58be-4793-a484-a82eb86e0e08",
"bucket": "my-vector-bucket",
"index": "my-index",
"model": "qwen2.5-vl-embedding",
"contentType": "image",
"embeddingDimensions": 1024,
"metadata": {
"OSSVECTORS-EMBED-SRC-LOCATION": "oss://source-bucket/photo.jpg",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "IMAGE"
}
}讀取圖片URL
對 URL 檔案產生向量並將其寫入向量 Bucket:
# 參數說明:
# --account-id: 阿里雲 ID
# --vectors-region: OSS 向量 Bucket 所在地區
# --vector-bucket-name: OSS 向量 Bucket 名稱
# --index-name: OSS 向量 Index 名稱
# --model-id: 使用的向量模型
# --image: 圖片 URL 地址
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
put \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-index> \
--model-id qwen2.5-vl-embedding \
--image "https://example.com/photo.jpg"命令返回樣本:
{
"key": "f15cfe75-d4de-497f-b441-3b08243cfa5e",
"bucket": "my-vector-bucket",
"index": "my-index",
"model": "qwen2.5-vl-embedding",
"contentType": "image",
"embeddingDimensions": 1024,
"metadata": {
"OSSVECTORS-EMBED-SRC-LOCATION": "https://example.com/photo.jpg",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "IMAGE"
}
}寫入視頻檔案的向量
使用多模態向量模型(如 qwen2.5-vl-embedding)處理圖片和視頻。輸入源支援 OSS 視頻檔案、 HTTP/HTTPS URL 檔案。視頻處理會提取視頻中的主要畫面格,並為每一幀產生一個獨立的向量。每個向量都需要唯一的鍵,因此不支援使用 --key 或 --filename-as-key 參數。CLI 會為每一幀自動產生唯一的序列鍵。
讀取OSS對象
對 OSS 視頻檔案產生預簽名 URL,完成向量化並寫入向量 Bucket:
# 參數說明:
# --account-id: 阿里雲 ID
# --vectors-region: OSS 向量 Bucket 所在地區
# --vector-bucket-name: OSS 向量 Bucket 名稱
# --index-name: OSS 向量 Index 名稱
# --model-id: 使用的向量模型
# --region: 源視頻 所在地區
# --video: 源視頻 OSS 路徑
# --presign-url: 對 OSS 地址產生簽名 URL 後再訪問(適用於私人 Bucket 等情境)
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
put \
--region cn-hangzhou \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-index> \
--model-id qwen2.5-vl-embedding \
--video "oss://<your-source-bucket>/<your-video>" \
--presign-url命令返回樣本:
{
"key": "55606734-8275-4329-96a3-3c156220et54",
"bucket": "my-vector-bucket",
"index": "my-index",
"model": "qwen2.5-vl-embedding",
"contentType": "video",
"embeddingDimensions": 1024,
"metadata": {
"OSSVECTORS-EMBED-SRC-LOCATION": "oss://source-bucket/video.mp4",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "VIDEO"
}
}讀取視頻URL
對 URL 檔案產生向量並將其寫入向量 Bucket:
# 參數說明:
# --account-id: 阿里雲 ID
# --vectors-region: OSS 向量 Bucket 所在地區
# --vector-bucket-name: OSS 向量 Bucket 名稱
# --index-name: OSS 向量 Index 名稱
# --model-id: 使用的向量模型
# --video: 視頻 URL 地址
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
put \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-index> \
--model-id qwen2.5-vl-embedding \
--video "https://example.com/video.mp4"命令返回樣本:
{
"key": "9157d87b-c44b-4c53-aceb-cd4be7fd8bd9",
"bucket": "my-vector-bucket",
"index": "my-index",
"model": "qwen2.5-vl-embedding",
"contentType": "video",
"embeddingDimensions": 1024,
"metadata": {
"OSSVECTORS-EMBED-SRC-LOCATION": "https://example.com/video.mp4",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "VIDEO"
}
}寫入時添加標量中繼資料
在向量寫入的命令中添加自訂標量中繼資料,可用於向量和標量混合檢索。
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
put \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-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", //已添加的自訂中繼資料
"OSSVECTORS-EMBED-SRC-CONTENT": "技術文檔內容",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
}步驟三:向量檢索
OSS 向量 Bucket 提供 QueryVectors 介面,可以發起向量的相似性檢索。OSS-Vectors-Embed_CLI 提供query 命令用於執行相似性搜尋。首先將查詢內容(文本或圖片)向量化,然後在向量索引中尋找語義最相似的向量。
重要:查詢時使用的向量模型必須與索引資料所用的模型保持一致。
文本向量相似性檢索
根據文字查詢語義相似的向量,其中--top-k 參數控制返回的結果數量。執行以下命令,在 my-index 索引中搜尋與“什麼是人工智慧”語義最相似的向量。
# --text-value: Query 檢索文本
# --top-k: 檢索返回最相似的向量結果數量
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
query \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-index> \
--model-id text-embedding-v4 \
--text-value "什麼是人工智慧" \
--top-k 100查詢輸出樣本(包含向量鍵和中繼資料):
{
"results": [
{
"Key": "3d8935dd-6395-4c9c-a501-df902846ec80",
"metadata": {
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-CONTENT": "人工智慧正在改變我們的生活",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
},
...
],
"summary": {
"queryType": "text",
"model": "text-embedding-v4",
"index": "my-index",
"resultsFound": 100,
"queryDimensions": 1024
}
}說明:預設不返回相似性距離。如需擷取,添加 --return-distance 參數。
圖片向量相似性檢索
根據圖片來檢索最相似的向量資料,以實現“以圖搜圖”(尋找與映像匹配的圖片)等應用情境。
# --image: Query 檢索圖片
# --top-k: 檢索返回最相似的向量結果數量
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
query \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-index> \
--model-id qwen2.5-vl-embedding \
--image "./query-images/similar-product.jpg" \
--top-k 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": 100,
"queryDimensions": 1024
}
}向量和標量混合檢索
可以使用 --filter 參數來進行標量中繼資料後過濾,進而縮小查詢範圍,實現更精確的搜尋。OSS-Vectors-Embed-CLI 命令列工具支援根據單一標量中繼資料進行簡單過濾,也可以根據多個條件進行組合過濾。
單條件簡單過濾
查詢 category 為 technology 的向量:
# --filter:實現標量中繼資料過濾
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
query \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-index> \
--model-id text-embedding-v4 \
--text-value "技術文檔" \
--filter '{"category": {"$eq": "technology"}}' \
--top-k 20 \
--return-metadata說明:--return-metadata 參數用於在結果中返回完整的中繼資料(包括使用者自訂和 CLI 自動添加的欄位)。
查詢輸出樣本:
{
"results": [
{
"Key": "fd91808c-8d7c-480e-a72b-2bfa7d313a80",
"metadata": {
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"author": "admin",
"category": "technology",
"OSSVECTORS-EMBED-SRC-CONTENT": "技術文檔內容",
"version": "1.0",
"OSSVECTORS-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 查詢:匹配所有條件。
# AND: 兩個條件都必須匹配
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
query \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-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": {
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"author": "admin",
"category": "technology",
"OSSVECTORS-EMBED-SRC-CONTENT": "API 參考",
"version": "1.0",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
},
{
...
],
"summary": {
"queryType": "text",
"model": "text-embedding-v4",
"index": "my-index",
"resultsFound": 5,
"queryDimensions": 1024
}
}若希望使用以表格形式輸出檢索結果,可使用 --output table 參數可將預設的 JSON 輸出轉換為表格格式,更便於人工閱讀、互動式探索和調試。
# --output table: 指定為表格形式輸出檢索結果
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
query \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-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 參數。
進階配置
批量處理
CLI 支援使用萬用字元對整個目錄的檔案進行批量處理。在批量模式下,CLI 會自動並行發起請求以提高處理效率。以下樣本使用萬用字元批量處理 OSS 儲存桶中指定首碼下的所有檔案。
# --text "oss://bucket/path/*" 僅對該 Prefix 下的檔案批量發起向量化和向量結果的寫入
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
put \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-index> \
--model-id text-embedding-v4 \
--text "oss://bucket/path/*"命令返回樣本:
{
"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 參數用於控制並發請求數(預設為 4)。增加此值可以提高處理輸送量,但會消耗更多的 API 配額。OSS 向量 Bucket 支援每個請求批量寫入最多 500 行向量資料,並設定最大 5 個並發。
# --max-workers: 設定並發
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
put \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-index> \
--model-id text-embedding-v4 \
--text "./documents/*.txt" \
--max-workers 5命令返回樣本:
{
"type": "streaming_batch",
"bucket": "my-vector-bucket",
"index": "my-index",
"model": "text-embedding-v4",
"contentType": "text",
"totalFiles": 5,
"processedFiles": 5,
"failedFiles": 0,
"totalVectors": 5,
"vectorKeys": [
"doc1.txt",
"doc2.txt",
"doc3.txt",
"doc4.txt",
"doc5.txt"
]
}自訂向量鍵
CLI 工具支援靈活指定向量索引值,可將其設定為特定自訂字串,或直接使用原始檔案名作為向量鍵,同時支援為向量鍵添加統一首碼。
自訂索引值
通過 --key 參數將向量鍵設定為指定值:
# 自定向量 Key 值為 doc-001
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
put \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-index> \
--model-id text-embedding-v4 \
--text-value "文檔內容" \
--key "doc-001" 命令返回樣本:
{
"key": "doc-001", //向量 Key 值為 “doc-001”
"bucket": "my-test-2",
"index": "test1",
"model": "text-embedding-v4",
"contentType": "text",
"embeddingDimensions": 1024,
"metadata": {
"OSSVECTORS-EMBED-SRC-CONTENT": "文檔內容",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
}原始檔案 Key 設定為向量鍵
通過 --filename-as-key 參數將原始 Key 自動化佈建為向量鍵:
# 將原始檔案 Key 值 “article.txt”設定為向量 Key 值
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
put \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-index> \
--model-id text-embedding-v4 \
--text "article.txt" \
--filename-as-key命令返回樣本:
{
"key": "article.txt",
"bucket": "my-vector-bucket",
"index": "my-index",
"model": "text-embedding-v4",
"contentType": "text",
"embeddingDimensions": 1024,
"metadata": {
"OSSVECTORS-EMBED-SRC-CONTENT": "人工智慧正在改變我們的生活。從清晨被智能鬧鐘根據睡眠周期輕柔喚醒,到通勤途中語音助手為我們規劃最優路線;從家中智能音箱播放個人化新聞摘要,到工作時AI工具自動產生報告、翻譯文檔、最佳化流程——AI已悄然融入日常的每個角落。",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-LOCATION": "article.txt"
}
}為向量鍵添加首碼
# key-prefix:添加向量 Key 值的 Prefix
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
put \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-index> \
--model-id text-embedding-v4 \
--text-value "文檔內容" \
--key "doc-001" \
--key-prefix "project-a/"命令返回樣本:
{
"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": {
"OSSVECTORS-EMBED-SRC-CONTENT": "文檔內容",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
}自訂模型參數
通過 --dashscope-inference-params 參數可以精細控制向量模型的行為,以滿足不同業務情境的需求。
使用自訂模型參數寫入
在向量化資料時,可以指定輸出類型和維度等參數:
# dashscope-inference-params '{"output_type": "dense", "dimension": "1024"}'自訂模型的輸出類型和向量維度
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
put \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-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": {
"OSSVECTORS-EMBED-SRC-CONTENT": "文檔內容",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
}使用自訂模型參數檢索
檢索向量時,可以控制文本截斷策略等行為:
# --dashscope-inference-params '{"truncate": "END"}' 設定文本截斷策略
oss-vectors-embed \
--account-id <your-account-id> \
--vectors-region cn-hangzhou \
query \
--vector-bucket-name <your-vector-bucket> \
--index-name <your-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": {
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-CONTENT": "技術文檔",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
},
...
],
"summary": {
"queryType": "text",
"model": "text-embedding-v4",
"index": "my-index",
"resultsFound": 10,
"queryDimensions": 1024
}
}支援的向量模型
文本向量模型
模型 ID | 預設維度 | 可選維度 |
text-embedding-v4 | 1024 | 2048/1536/768/512/256/128/64 |
text-embedding-v3 | 1024 | 768/512/256/128/64 |
text-embedding-v2 | 1536 | - |
text-embedding-v1 | 1536 | - |
多模態向量模型
模型 ID | 維度 | 支援輸入類型 |
qwen2.5-vl-embedding | 2048/1024/768/512 | 文本、圖片、視頻、多圖 |
tongyi-embedding-vision-plus | 1152 | 文本、圖片、視頻、多圖 |
tongyi-embedding-vision-flash | 768 | 文本、圖片、視頻、多圖 |
multimodal-embedding-v1 | 1024 | 文本、圖片、視頻 |
模型選擇建議:
純文字情境:推薦使用 text-embedding-v4
圖文混合情境:推薦使用 qwen2.5-vl-embedding
追求速度:可選用 tongyi-embedding-vision-flash
參數說明
全域參數
參數 | 是否必選 | 說明 |
| 是 | 阿里雲帳號 ID |
| 是 | 向量 Bucket 所在的地區,例如 |
| 否 | 向量Bucket訪問網域名稱 |
| 否 | 啟用偵錯模式 |
put 命令參數
參數 | 是否必選 | 說明 |
| 是 | 向量 Bucket 名稱 |
| 是 | 向量索引名稱 |
| 是 | 用於產生向量的 DashScope模型ID |
| 否 | 要處理的常值內容。與 --text、--image、--video 參數四選一 |
| 否 | 要處理的文字檔路徑或 OSS 物件路徑 |
| 否 | 要處理的圖片檔案路徑、OSS 物件路徑或 URL |
| 否 | 要處理的視頻 URL |
| 否 | 為向量指定一個自訂的唯一鍵 |
| 否 | 為自動產生的或指定的鍵添加首碼 |
| 否 | 使用輸入檔案的名稱作為向量鍵 |
| 否 | 傳遞給 DashScope 的模型特定參數(JSON 格式,例如 |
| 否 | 以 JSON 字串格式指定的中繼資料 |
| 否 | 批量處理時的最大並發請求數。預設為 4 |
| 否 | 批量寫入時,單次請求包含的向量數量。取值範圍:1-500。預設為 500 |
| 否 | 指定輸出格式。可選值為 |
| 否 | 當輸入源為 OSS 對象時,指定該對象所在的地區 |
| 否 | 當輸入源為 OSS 路徑時,使用預簽名 URL 訪問。 |
query 命令參數
參數 | 是否必選 | 說明 |
| 是 | 向量 Bucket 名稱 |
| 是 | 向量索引名稱 |
| 是 | 用於產生向量的 DashScope模型ID |
| 否 | 要查詢的常值內容 |
| 否 | 包含查詢文本的檔案路徑 |
| 否 | 要查詢的圖片路徑 |
| 否 | 要查詢的視頻 URL |
| 否 | 返回最相似結果的數量,預設為 5 |
| 否 | 以 JSON 字串格式指定的過濾條件 |
| 否 | 在結果中包含相似性距離值 |
| 否 | 在結果中包含中繼資料。預設開啟 |
| 否 | 傳遞給 DashScope 的模型特定參數(JSON 格式,例如 |
| 否 | 指定輸出格式。可選值為 |
過濾文法
操作符 | 說明 | 樣本 |
| 等於 |
|
| 不等於 |
|
| 在/不在列表中 |
|
| 邏輯與 |
|
| 邏輯或 |
|
相關文檔
關於OSS Vectors Embed CLI 工具的更多內容請參見GitHub 倉庫。