O OSS Vectors Embed CLI permite chamar os modelos de vetores do Alibaba Cloud Model Studio, vetorizar dados do OSS ou de arquivos locais, gravar os vetores em um vector bucket do OSS e realizar buscas semânticas multimodais. Isso simplifica o desenvolvimento de aplicações como bases de conhecimento RAG e assistentes de IA. Os principais recursos incluem:
Integração perfeita: chame o Alibaba Cloud Model Studio com facilidade para vetorizar dados.
Múltiplas fontes de entrada: vetorize dados de arquivos locais, objetos do OSS, URLs de arquivos de terceiros e strings de texto.
Processamento flexível: processe arquivos individuais ou execute a vetorização em lote de diretórios.
Personalização avançada: configure chaves de vetor e metadados escalares.
Busca multimodal: use textos, imagens e vídeos para busca de similaridade semântica, com suporte a diversos cenários de negócios.
Com o OSS Vectors Embed CLI, você constrói rapidamente um sistema de busca semântica multimodal usando apenas alguns comandos. Além disso, é possível personalizá-lo com recursos como gravação em lote, chaves de vetor personalizadas e parâmetros de modelo.
O Alibaba Cloud OSS Vectors Embed CLI está em versão de pré-visualização e seus parâmetros estão sujeitos a alterações.
Etapa 1: Prepare seu ambiente
Antes de usar a ferramenta CLI, prepare as seguintes credenciais de acesso:
Ative o OSS service e obtain an AccessKey ID and an AccessKey Secret.
Ative o service do Alibaba Cloud Model Studio e obtain an API key.
Configure as credenciais de acesso
Defina suas credenciais de acesso como variáveis de ambiente. A CLI lê essas variáveis automaticamente durante a execução, permitindo que você as omita dos seus comandos.
# Alibaba Cloud account AccessKey
export OSS_ACCESS_KEY_ID="<your-access-key-id>"
export OSS_ACCESS_KEY_SECRET="<your-access-key-secret>"
# Model Studio API key
export DASHSCOPE_API_KEY="<your-dashscope-api-key>"
Dica de segurança : Use variáveis de ambiente em vez de codificar as credenciais diretamente nos scripts.
Instale o OSS Vectors Embed CLI
Requer Python 3.9 ou superior.
Método 1: Instale usando o pip (recomendado)
pip install oss-vectors-embed-cli
Método 2: Instale no modo de desenvolvedor
git clone https://github.com/aliyun/oss-vectors-embed-cli.git
cd oss-vectors-embed-cli
pip install -e .
Verifique a instalação
oss-vectors-embed --version
# Output: oss-vectors-embed, version 0.1.0
Crie um vector bucket
Para gravar dados de vetor, primeiro crie um vector bucket e configure um índice:
Crie um vector bucket: na página Vector Bucket, crie um bucket para armazenar seus dados de vetor e índices.
Crie um índice de vetor: no novo bucket, crie um índice e defina sua dimensão de vetor para corresponder à dimensão de saída do seu modelo de vetor.
Importante : A dimensão do índice de vetor deve corresponder à dimensão de saída do vector model que você utiliza. Por exemplo, se você usar o modelo text-embedding-v4 , que possui 1024 dimensões por padrão, a dimensão do índice também deve ser definida como 1024.
Etapa 2: Grave os embeddings
O OSS Vectors fornece a API PutVectors para gravar dados de vetor em um vector bucket do OSS. O OSS Vectors Embed CLI simplifica esse processo ao agrupar várias chamadas de API — leitura do arquivo de origem (GetObject), geração de um embedding com o Alibaba Cloud Model Studio (Bailian) e gravação dos dados de vetor (PutVectors) — em um único comando put. Cada arquivo é processado como um único embedding. O fatiamento automático de documentos longos não é suportado no momento.
Gere embeddings a partir de arquivos de texto
Use um text embedding model, como o text-embedding-v4, para processar texto. As fontes de entrada suportadas incluem strings de texto, objetos do OSS e arquivos de texto locais.
Use uma string de texto como entrada
Gere um embedding a partir de uma string de texto inline e grave-o no seu vector bucket do OSS:
# Parameter descriptions:
# --account-id: Alibaba Cloud account ID
# --vectors-region: Region of the OSS vector bucket
# --vector-bucket-name: Name of the OSS vector bucket
# --index-name: Name of the OSS vector index
# --model-id: The embedding model to use
# --text-value: The input text string
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 "Artificial intelligence is changing the way we live"
Resposta de exemplo:
{
"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": "Artificial intelligence is changing the way we live",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
}
Nota: A CLI adiciona automaticamente campos OSSVECTORS-EMBED-SRC-* aos metadados para rastrear a origem do embedding.
Use um arquivo de texto local como entrada
Gere um embedding a partir de um arquivo local e grave-o no seu vector bucket do OSS:
# Parameter descriptions:
# --account-id: Alibaba Cloud account ID
# --vectors-region: Region of the OSS vector bucket
# --vector-bucket-name: Name of the OSS vector bucket
# --index-name: Name of the OSS vector index
# --model-id: The embedding model to use
# --text: Path to the local file
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>"
Resposta de exemplo:
{
"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": "Artificial intelligence is changing the way we live. From being gently woken up by a smart alarm clock based on our sleep cycle in the morning, to having a voice assistant plan the best route for our commute; from a smart speaker at home playing personalized news summaries, to AI tools at work automatically generating reports, translating documents, and optimizing workflows—AI has quietly integrated into every corner of our daily lives.",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-LOCATION": "./documents/article.txt"
}
}
Use um objeto do OSS como entrada
Gere um embedding a partir de um objeto armazenado no OSS e grave-o no seu vector bucket do OSS. O caminho do objeto deve estar no formato oss://bucket-name/object-key.
# Parameter descriptions:
# --account-id: Alibaba Cloud account ID
# --vectors-region: Region of the OSS vector bucket
# --vector-bucket-name: Name of the OSS vector bucket
# --index-name: Name of the OSS vector index
# --model-id: The embedding model to use
# --region: Region of the source object's bucket
# --text: OSS path of the source file
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>"
Nota: Você deve usar o parâmetro --region para especificar a região do objeto do OSS de origem.
Resposta de exemplo:
{
"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 an example file.",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-LOCATION": "oss://source-bucket/documents/file.txt"
}
}
Gere embeddings a partir de arquivos de imagem
Use um multimodal embedding model, como o qwen2.5-vl-embedding, para processar imagens e vídeos. As fontes de entrada suportadas incluem arquivos locais, objetos do OSS e URLs HTTP/HTTPS.
Use uma imagem local como entrada
Gere um embedding a partir de um arquivo de imagem local e grave-o no seu vector bucket do OSS:
# Parameter descriptions:
# --account-id: Alibaba Cloud account ID
# --vectors-region: Region of the OSS vector bucket
# --vector-bucket-name: Name of the OSS vector bucket
# --index-name: Name of the OSS vector index
# --model-id: The embedding model to use
# --image: Path to the local image file
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>"
Resposta de exemplo:
{
"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"
}
}
Use um objeto do OSS como entrada
Gere um embedding a partir de uma imagem armazenada em um objeto do OSS e grave-o no seu vector bucket do OSS. O caminho do objeto deve estar no formato oss://bucket-name/object-key.
# Parameter descriptions:
# --account-id: Alibaba Cloud account ID
# --vectors-region: Region of the OSS vector bucket
# --vector-bucket-name: Name of the OSS vector bucket
# --index-name: Name of the OSS vector index
# --model-id: The embedding model to use
# --region: Region of the source object's bucket
# --image: OSS path of the source image
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>"
Resposta de exemplo:
{
"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"
}
}
Use uma URL de imagem como entrada
Gere um embedding a partir de uma imagem em uma URL e grave-o no seu vector bucket do OSS:
# Parameter descriptions:
# --account-id: Alibaba Cloud account ID
# --vectors-region: Region of the OSS vector bucket
# --vector-bucket-name: Name of the OSS vector bucket
# --index-name: Name of the OSS vector index
# --model-id: The embedding model to use
# --image: URL of the 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 "https://example.com/photo.jpg"
Resposta de exemplo:
{
"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"
}
}
Gere embeddings a partir de arquivos de vídeo
Use um multimodal embedding model, como o qwen2.5-vl-embedding, para processar vídeos. As fontes de entrada suportadas são arquivos de vídeo do OSS e URLs HTTP/HTTPS. Ao processar um vídeo, a CLI extrai os quadros-chave e gera um embedding separado para cada quadro. Como cada embedding requer uma chave exclusiva, os parâmetros --key e --filename-as-key não são suportados. A CLI gera automaticamente uma chave sequencial exclusiva para cada quadro.
Use um objeto do OSS como entrada
Gere embeddings a partir de um arquivo de vídeo do OSS (o que envolve criar uma URL pré-assinada para acesso) e grave-os no seu vector bucket do OSS:
# Parameter descriptions:
# --account-id: Alibaba Cloud account ID
# --vectors-region: Region of the OSS vector bucket
# --vector-bucket-name: Name of the OSS vector bucket
# --index-name: Name of the OSS vector index
# --model-id: The embedding model to use
# --region: Region of the source video's bucket
# --video: OSS path of the source video
# --presign-url: Generates a presigned URL for the OSS path to grant access (for private buckets and similar scenarios).
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
Resposta de exemplo:
{
"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"
}
}
Use uma URL de vídeo como entrada
Gere embeddings a partir de um vídeo em uma URL e grave-os no seu vector bucket do OSS:
# Parameter descriptions:
# --account-id: Alibaba Cloud account ID
# --vectors-region: Region of the OSS vector bucket
# --vector-bucket-name: Name of the OSS vector bucket
# --index-name: Name of the OSS vector index
# --model-id: The embedding model to use
# --video: URL of the 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 qwen2.5-vl-embedding \
--video "https://example.com/video.mp4"
Resposta de exemplo:
{
"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"
}
}
Adicione metadados escalares durante a gravação
Você pode anexar metadados escalares personalizados ao gravar um embedding. Esses dados podem ser usados posteriormente em consultas filtradas.
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 "Technical document content" \
--metadata '{"category": "technology", "version": "1.0", "author": "admin"}' # Add custom scalar metadata for filtered queries
Os campos de metadados definidos pelo usuário são mesclados com os campos do sistema gerados automaticamente. Resposta de exemplo:
{
"key": "c0ed4d9d-5301-49a5-82b7-eaf9d02b04a9",
"bucket": "my-vector-bucket",
"index": "my-index",
"model": "text-embedding-v4",
"contentType": "text",
"embeddingDimensions": 1024,
"metadata": {
"category": "technology", // Custom metadata
"version": "1.0", // Custom metadata
"author": "admin", // Custom metadata
"OSSVECTORS-EMBED-SRC-CONTENT": "Technical document content",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
}
Etapa 3: Busca de vetores
O OSS Vectors fornece a API QueryVectors para realizar uma busca por similaridade. O oss-vectors-embed-cli disponibiliza o comando query para executar essa busca. Esse comando primeiro vetoriza o conteúdo da consulta (texto ou imagem) e, em seguida, encontra os vetores semanticamente mais semelhantes no índice de vetor.
Importante : O modelo de vetor usado para a consulta deve corresponder ao modelo usado para indexar os dados.
Busca de similaridade de texto
Consulte vetores semanticamente semelhantes com base em uma entrada de texto. O parâmetro --top-k controla o número de resultados a serem retornados. Execute o seguinte comando para buscar no índice de vetor my-index os vetores semanticamente semelhantes a "What is artificial intelligence".
# --text-value: The query text.
# --top-k: The number of most similar vectors to return.
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 "What is artificial intelligence" \
--top-k 100
Saída de exemplo (inclui a chave do vetor e os metadados):
{
"results": [
{
"Key": "3d8935dd-6395-4c9c-a501-df902846ec80",
"metadata": {
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-CONTENT": "Artificial intelligence is changing our way of life",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
},
...
],
"summary": {
"queryType": "text",
"model": "text-embedding-v4",
"index": "my-index",
"resultsFound": 100,
"queryDimensions": 1024
}
}
Nota: A distância de similaridade não é retornada por padrão. Para incluí-la nos resultados, adicione o parâmetro --return-distance.
Busca de similaridade de imagem
Encontre os vetores mais semelhantes com base em uma consulta de imagem. Isso atende a casos de uso como busca de imagem por imagem.
# --image: The query image.
# --top-k: The number of most similar vectors to return.
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
Saída de exemplo (inclui a chave do vetor e os metadados):
{
"results": [
{
"Key": "11dcf66b-708a-4707-8bd4-8656bead19da", // A search result, containing the vector key and metadata.
"metadata": {
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "IMAGE",
"OSSVECTORS-EMBED-SRC-LOCATION": "similar-product.png"
}
},
{
...
],
"summary": {
"queryType": "image",
"model": "qwen2.5-vl-embedding",
"index": "my-index",
"resultsFound": 100,
"queryDimensions": 1024
}
}
Busca filtrada por metadados
Use o parâmetro --filter para realizar a pós-filtragem de metadados. Isso restringe o escopo da busca e fornece resultados mais precisos. O oss-vectors-embed-cli suporta filtragem simples com base em um único campo de metadados e filtragem combinada usando múltiplas condições.
Filtragem simples
Consulte vetores em que a category seja technology:
# --filter: Performs filtering based on scalar metadata.
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 "Technical documentation" \
--filter '{"category": {"$eq": "technology"}}' \
--top-k 20 \
--return-metadata
Nota: O parâmetro --return-metadata retorna os metadados completos nos resultados, incluindo tanto os campos definidos pelo usuário quanto aqueles adicionados automaticamente pela CLI.
Saída de exemplo:
{
"results": [
{
"Key": "fd91808c-8d7c-480e-a72b-2bfa7d313a80",
"metadata": {
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"author": "admin",
"category": "technology",
"OSSVECTORS-EMBED-SRC-CONTENT": "Technical document content",
"version": "1.0",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
},
...
],
"summary": {
"queryType": "text",
"model": "text-embedding-v4",
"index": "test1",
"resultsFound": 4,
"queryDimensions": 1024
}
}
Filtragem combinada
O oss-vectors-embed-cli permite combinar múltiplas condições de filtro, como AND e OR, com base no filter syntax. O exemplo a seguir mostra uma condição AND.
Consulta AND: corresponde a todas as condições.
# AND: Both conditions must match.
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 Reference" \
--filter '{"$and": [{"category": "documentation"}, {"version": "3.0"}]}' \
--top-k 5
Saída de exemplo:
{
"results": [
{
"Key": "fd91808c-8d7c-480e-a72b-2bfa7d313a80",
"metadata": {
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"author": "admin",
"category": "documentation",
"OSSVECTORS-EMBED-SRC-CONTENT": "API Reference",
"version": "3.0",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
},
{
...
],
"summary": {
"queryType": "text",
"model": "text-embedding-v4",
"index": "my-index",
"resultsFound": 5,
"queryDimensions": 1024
}
}
Para exibir os resultados da busca em formato de tabela, use o parâmetro --output table. Isso converte a saída JSON padrão em uma tabela, facilitando a revisão manual, a exploração interativa e a depuração.
# --output table: Specifies the output format as a 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
Saída de exemplo:
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
Nota: A coluna Distance mostra N/A porque o comando não inclui o parâmetro --return-distance. Adicione esse parâmetro para exibir os valores de distância.
Configuração avançada
Processamento em lote
A CLI suporta o processamento em lote de todos os arquivos em um diretório usando um curinga. No modo em lote, a CLI envia automaticamente solicitações paralelas para melhorar o throughput. O exemplo a seguir usa um curinga para processar em lote todos os arquivos sob um prefixo específico em um bucket do OSS.
# Use --text "oss://bucket/path/*" to batch vectorize and write the vector results for all files under the specified 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/*"
Resposta de exemplo:
{
"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"
]
}
Para o processamento em lote, use o parâmetro --max-workers para controlar a simultaneidade (o padrão é 4). Aumentar esse valor pode melhorar o throughput, mas consome mais cota de API. O OSS Vectors suporta a gravação de até 500 vetores por solicitação em lote e permite no máximo 5 solicitações simultâneas.
# --max-workers: Set the concurrency.
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
Resposta de exemplo:
{
"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"
]
}
Personalize as chaves de vetor
A CLI oferece opções flexíveis para especificar a chave do vetor. Você pode definir uma string personalizada, usar o nome original do arquivo ou adicionar um prefixo a todas as chaves.
Chave personalizada
Use o parâmetro --key para definir a chave do vetor com um valor específico:
# Set the vector key to "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 "Document content" \
--key "doc-001"
Resposta de exemplo:
{
"key": "doc-001", // The vector key is "doc-001".
"bucket": "my-test-2",
"index": "test1",
"model": "text-embedding-v4",
"contentType": "text",
"embeddingDimensions": 1024,
"metadata": {
"OSSVECTORS-EMBED-SRC-CONTENT": "Document content",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
}
Nome do arquivo como chave
Use o parâmetro --filename-as-key para usar automaticamente o nome do arquivo como a chave do vetor:
# Use the filename "article.txt" as the vector 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
Resposta de exemplo:
{
"key": "article.txt",
"bucket": "my-vector-bucket",
"index": "my-index",
"model": "text-embedding-v4",
"contentType": "text",
"embeddingDimensions": 1024,
"metadata": {
"OSSVECTORS-EMBED-SRC-CONTENT": "Artificial intelligence is changing the way we live. From being gently woken up by a smart alarm clock based on our sleep cycle in the morning, to having a voice assistant plan the best route for our commute; from a smart speaker at home playing personalized news summaries, to AI tools at work automatically generating reports, translating documents, and optimizing workflows—AI has quietly integrated into every corner of our daily lives.",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-LOCATION": "article.txt"
}
}
Prefixo da chave
# --key-prefix: Add a prefix to the vector 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-value "Document content" \
--key "doc-001" \
--key-prefix "project-a/"
Resposta de exemplo:
{
"key": "project-a/doc-001", // The vector key is prefixed with "project-a/".
"bucket": "my-vector-bucket",
"index": "my-index",
"model": "text-embedding-v4",
"contentType": "text",
"embeddingDimensions": 1024,
"metadata": {
"OSSVECTORS-EMBED-SRC-CONTENT": "Document content",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
}
Personalize os parâmetros do modelo
Use o parâmetro --dashscope-inference-params para ajustar o modelo de vetor para diferentes cenários de negócios.
Grave com parâmetros personalizados
Ao vetorizar dados, especifique parâmetros como o tipo de saída e a dimensão:
# Use --dashscope-inference-params '{"output_type": "dense", "dimension": "1024"}' to customize the model's output type and vector dimension.
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 "Technical document content" \
--dashscope-inference-params '{"output_type": "dense", "dimension": "1024"}'
Resposta de exemplo:
{
"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": "Document content",
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
}
Consulte com parâmetros personalizados
Ao consultar vetores, controle comportamentos como a política de truncamento de texto:
# Use --dashscope-inference-params '{"truncate": "END"}' to set the text truncation policy.
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 "Technical documentation" \
--dashscope-inference-params '{"truncate": "END"}' \
--top-k 10
--return-distance
Resposta de exemplo:
{
"results": [
{
"Key": "3d8935dd-6395-4c9c-a501-df902846ec80",
"metadata": {
"OSSVECTORS-EMBED-SRC-CONTENT-TYPE": "TEXT",
"OSSVECTORS-EMBED-SRC-CONTENT": "Technical documentation",
"OSSVECTORS-EMBED-SRC-LOCATION": "direct_text_input"
}
},
...
],
"summary": {
"queryType": "text",
"model": "qwen2.5-vl-embedding",
"index": "my-index",
"resultsFound": 10,
"queryDimensions": 1024
}
}
Modelos de embedding suportados
Modelos de embedding de texto
|
ID do modelo |
Dimensões padrão |
Dimensões opcionais |
|
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 |
- |
Modelos de embedding multimodal
|
ID do modelo |
Dimensões |
Tipos de entrada suportados |
|
qwen2.5-vl-embedding |
2048/1024/768/512 |
texto, imagem, vídeo, múltiplas imagens |
|
tongyi-embedding-vision-plus |
1152 |
texto, imagem, vídeo, múltiplas imagens |
|
tongyi-embedding-vision-flash |
768 |
texto, imagem, vídeo, múltiplas imagens |
|
multimodal-embedding-v1 |
1024 |
texto, imagem, vídeo |
Recomendações para seleção de modelos:
Para casos de uso apenas com texto, use o
text-embedding-v4.Para casos de uso com texto e imagem misturados, use o
qwen2.5-vl-embedding.Para casos de uso com baixa latência, considere o
tongyi-embedding-vision-flash.
Parâmetros
Parâmetros globais
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
O ID da sua conta Alibaba Cloud. |
|
|
Sim |
A região onde o vector bucket está localizado, por exemplo, |
|
|
Não |
O endpoint para o vector bucket. |
|
|
Não |
Ativa o modo de depuração. |
Parâmetros do comando put
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
O nome do vector bucket. |
|
|
Sim |
O nome do índice de vetor. |
|
|
Sim |
Especifica o ID do DashScope model para gerar embeddings. |
|
|
Não |
O texto a ser processado. Você deve especificar um entre |
|
|
Não |
O caminho para um arquivo de texto ou um objeto do OSS a ser processado. |
|
|
Não |
O caminho para um arquivo de imagem, um objeto do OSS ou uma URL a ser processada. |
|
|
Não |
A URL do vídeo a ser processado. |
|
|
Não |
Especifica uma chave exclusiva personalizada para o vetor. |
|
|
Não |
Adiciona um prefixo à chave gerada automaticamente ou especificada. |
|
|
Não |
Usa o nome do arquivo de entrada como a chave do vetor. |
|
|
Não |
Especifica parâmetros específicos do modelo para passar ao DashScope no formato JSON, por exemplo, |
|
|
Não |
Os metadados para o vetor, especificados como uma string JSON. |
|
|
Não |
O número máximo de solicitações simultâneas para processamento em lote. Padrão: 4. |
|
|
Não |
O número de vetores a serem incluídos em cada solicitação durante uma gravação em lote. Intervalo de valores: 1–500. Padrão: 500. |
|
|
Não |
Especifica o formato de saída. Os valores válidos são |
|
|
Não |
Se a entrada for um objeto do OSS, este parâmetro especifica a região do objeto. |
|
|
Não |
Gera uma URL pré-assinada para acessar o objeto do OSS de entrada. |
Parâmetros do comando query
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Sim |
O nome do vector bucket. |
|
|
Sim |
O nome do índice de vetor. |
|
|
Sim |
Especifica o ID do DashScope model para gerar embeddings. |
|
|
Não |
O texto da consulta. |
|
|
Não |
O caminho para um arquivo que contém o texto da consulta. |
|
|
Não |
O caminho para a imagem a ser consultada. |
|
|
Não |
A URL do vídeo a ser consultado. |
|
|
Não |
O número de resultados mais semelhantes a serem retornados. Padrão: 5. |
|
|
Não |
Os critérios de filtro, especificados como uma string JSON. |
|
|
Não |
Inclui a distância de similaridade nos resultados. |
|
|
Não |
Inclui metadados nos resultados. Ativado por padrão. |
|
|
Não |
Especifica parâmetros específicos do modelo para passar ao DashScope no formato JSON, por exemplo, |
|
|
Não |
Especifica o formato de saída. Os valores válidos são |
Sintaxe de filtro
|
Operador |
Descrição |
Exemplo |
|
|
Igual a |
|
|
|
Diferente de |
|
|
|
Está ou não está em uma lista especificada |
|
|
|
AND lógico |
|
|
|
OR lógico |
|
Referências
Para mais informações sobre o OSS Vectors Embed CLI, consulte o repositório no GitHub.