DashScopeCompatible with Milvus 2.6.x

Este tópico descreve como configurar e usar as funções de incorporação do DashScope no Milvus.

Escolher um modelo de incorporação

Abaixo estão os modelos de incorporação do DashScope atualmente disponíveis para referência rápida:

Nome do modelo

Dimensões

Máximo de Tokens por Linha

Idiomas suportados

incorporação de texto-v3

1.024 (predefinição), 768 ou 512

8,192

Chinês, inglês, espanhol, francês, português, indonésio, japonês, coreano, alemão, russo e mais de 50 outros idiomas

incorporação de texto-v2

1,536

2,048

Chinês, inglês, espanhol, francês, português, indonésio, japonês, coreano, alemão, russo

texto-embedding-v1

1,536

2,048

Chinês, inglês, espanhol, francês, português, indonésio, japonês, coreano, alemão, russo

O modelo de incorporação text-embedding-v3 suporta a redução do tamanho da incorporação através de um parâmetro dim. Normalmente, as incorporações maiores são mais dispendiosas do ponto de vista da computação, da memória e do armazenamento. A possibilidade de ajustar o número de dimensões permite um maior controlo sobre o custo e o desempenho globais. Para obter mais detalhes sobre cada modelo, consulte Incorporação.

Configurar credenciais

O Milvus precisa saber sua chave de API do DashScope para poder solicitar incorporações. O Milvus fornece dois métodos para configurar credenciais:

  • Arquivo de configuração (recomendado): Armazene a chave da API em milvus.yaml para que cada reinicialização e nó a pegue automaticamente.

  • Variáveis de ambiente: Injetar a chave no momento da implantação - ideal para o Docker Compose.

Escolha um dos dois métodos abaixo - o arquivo de configuração é mais fácil de manter em bare-metal e VMs, enquanto a rota env-var se encaixa nos fluxos de trabalho do contêiner.

Se uma chave de API para o mesmo fornecedor estiver presente tanto no ficheiro de configuração como numa variável de ambiente, o Milvus utiliza sempre o valor em milvus.yaml e ignora a variável de ambiente.

Manter as suas chaves API em milvus.yaml; o Milvus lê-as no arranque e substitui qualquer variável de ambiente para o mesmo fornecedor.

  1. **Declare as suas chaves em credential:

    Pode listar uma ou várias chaves API - dê a cada uma delas uma etiqueta que invente e que referenciará mais tarde.

    # milvus.yaml
    credential:
      apikey_dev:            # dev environment
        apikey: <YOUR_DEV_KEY>
      apikey_prod:           # production environment
        apikey: <YOUR_PROD_KEY>    
    

    Colocar as chaves da API aqui torna-as persistentes através de reinicializações e permite-lhe mudar de chave apenas mudando uma etiqueta.

  2. Diga ao Milvus qual a chave a utilizar para as chamadas do DashScope

    No mesmo ficheiro, aponte o fornecedor DashScope para a etiqueta que pretende utilizar.

    function:
      textEmbedding:
        providers:
          dashscope:
            credential: apikey_dev      # ← choose any label you defined above
            # url: https://dashscope-intl.aliyuncs.com/compatible-mode/v1   # (optional) custom url
    

    Isto associa uma chave específica a cada pedido que o Milvus envia para o ponto final de incorporação do DashScope.

Opção 2: Variável de ambiente

Utilize este método quando executar o Milvus com o Docker Compose e preferir manter os segredos fora dos ficheiros e imagens.

O Milvus recorre à variável de ambiente apenas se não for encontrada nenhuma chave para o fornecedor em milvus.yaml.

Variável

Necessária

Descrição

MILVUSAI_DASHSCOPE_API_KEY

Sim

Torna a chave do DashScope disponível dentro de cada contentor Milvus (ignorada quando existe uma chave para o DashScope em milvus.yaml )

No seu ficheiro docker-compose.yaml, defina a variável de ambiente MILVUSAI_DASHSCOPE_API_KEY.

# docker-compose.yaml (standalone service section)
standalone:
  # ... other configurations ...
  environment:
    # ... other environment variables ...
    # Set the environment variable pointing to the DashScope API key inside the container
    MILVUSAI_DASHSCOPE_API_KEY: <MILVUSAI_DASHSCOPE_API_KEY>

O bloco environment: injecta a chave apenas no contentor Milvus, deixando o seu SO anfitrião intocado. Para obter detalhes, consulte Configurar o Milvus com o Docker Compose.

Usar a função de incorporação

Depois que as credenciais forem configuradas, siga estas etapas para definir e usar funções de incorporação.

Etapa 1: definir campos de esquema

Para usar uma função de incorporação, crie uma coleção com um esquema específico. Este esquema deve incluir pelo menos três campos necessários:

  • O campo primário que identifica de forma exclusiva cada entidade numa coleção.

  • Um campo escalar que armazena os dados brutos a serem incorporados.

  • Um campo vetorial reservado para armazenar as incorporações vectoriais que a função irá gerar para o campo escalar.

O exemplo seguinte define um esquema com um campo escalar "document" para armazenar dados textuais e um campo vetorial "dense" para armazenar incrustações a serem geradas pelo módulo Function. Não se esqueça de definir a dimensão do vetor (dim) para corresponder ao resultado do modelo de incorporação escolhido.

from pymilvus import MilvusClient, DataType, Function, FunctionType

# Initialize Milvus client
client = MilvusClient(
    uri="http://localhost:19530",
)

# Create a new schema for the collection
schema = client.create_schema()

# Add primary field "id"
schema.add_field("id", DataType.INT64, is_primary=True, auto_id=False)

# Add scalar field "document" for storing textual data
schema.add_field("document", DataType.VARCHAR, max_length=9000)

# Add vector field "dense" for storing embeddings.
# IMPORTANT: Set dim to match the exact output dimension of the embedding model.
schema.add_field("dense", DataType.FLOAT_VECTOR, dim=1024)

Passo 2: Adicionar a função de incorporação ao esquema

O módulo Function do Milvus converte automaticamente os dados brutos armazenados num campo escalar em embeddings e armazena-os no campo vetorial explicitamente definido.

O exemplo abaixo adiciona um módulo Function (ali) que converte o campo escalar "document" em embeddings, armazenando os vectores resultantes no campo vetorial "dense" definido anteriormente.

Depois de ter definido a sua função de incorporação, adicione-a ao seu esquema de coleção. Isto instrui o Milvus a utilizar a função de incorporação especificada para processar e armazenar os embeddings dos seus dados de texto.


# Define embedding function specifically for model provider
text_embedding_function = Function(
    name="ali",                                     # Unique identifier for this embedding function
    function_type=FunctionType.TEXTEMBEDDING,       # Indicates a text embedding function
    input_field_names=["document"],                 # Scalar field(s) containing text data to embed
    output_field_names=["dense"],                   # Vector field(s) for storing embeddings
    params={                                        # Provider-specific embedding parameters
        "provider": "dashscope",                    # Embedding provider name (must be "dashscope")
        "model_name": "text-embedding-v3",          # Specific embedding model used
        # Optional parameters:
        # "credential": "apikey_dev"                # Optional: Credential label specified in milvus.yaml
        # "dim": "1024",                            # Optional: Shorten the output vector dimension
    }
)

# Add the configured embedding function to your existing collection schema
schema.add_function(text_embedding_function)

Próximos passos

Depois de configurar a função de incorporação, consulte a Visão geral da função para obter orientações adicionais sobre a configuração do índice, exemplos de inserção de dados e operações de pesquisa semântica.