Consultar um modelo de incorporação

Importante

Uma nova experiência Unity AI Gateway está disponível em versão Beta. O novo Unity AI Gateway é o plano de controlo empresarial para gerir endpoints LLM e agentes de codificação com funcionalidades melhoradas. Veja a governação da IA com o Unity AI Gateway.

Neste artigo, aprende como escrever pedidos de consulta para modelos de fundação otimizados para tarefas de embeddings e servidos pelo Unity AI Gateway.

Os exemplos neste artigo aplicam-se à consulta de modelos básicos que são disponibilizados usando:

Requerimentos

Exemplos de consulta

Note

Os exemplos seguintes baseiam-se no Unity AI Gateway e nos serviços de modelo. Se utilizar endpoints de disponibilização de modelos em vez de serviços de modelo, substitua o nome do serviço de modelo pelo nome de um endpoint. Consulte os modelos fundacionais alojados pela Databricks disponíveis nas APIs de Modelos Fundacionais para obter uma lista dos modelos fundacionais disponíveis e os nomes do serviço de modelo e do endpoint.

Sugestão

O Código Génio (modo Agente) pode fazer isto por ti. Experimente este prompt de exemplo:

Show query examples that send embedding requests to the databricks-gte-large-en model using the DatabricksOpenAI helper, the plain OpenAI client, and a curl REST API call.

A seguir está uma solicitação de incorporação para o gte-large-en modelo disponibilizado pelas APIs do Foundation Model pay-per-token, usando as diferentes opções do cliente.

Cliente OpenAI

Para usar o cliente OpenAI, especifique o nome do ponto de extremidade do modelo como entrada model.

from databricks_openai import DatabricksOpenAI

client = DatabricksOpenAI()

response = client.embeddings.create(
  model="system.ai.gte-large-en",
  input="what is databricks"
)

Para consultar modelos de base fora do seu espaço de trabalho, você deve usar o cliente OpenAI diretamente, conforme demonstrado abaixo. O exemplo a seguir pressupõe que tens um token de API Databricks e o openai instalado no teu ambiente de computação. Você também precisa da instância do espaço de trabalho Databricks para conectar o cliente OpenAI ao Databricks.


import os
import openai
from openai import OpenAI

client = OpenAI(
    api_key="dapi-your-databricks-token",
    base_url="https://example.staging.cloud.databricks.com/ai-gateway/mlflow/v1"
)

response = client.embeddings.create(
  model="system.ai.gte-large-en",
  input="what is databricks"
)

SQL

Importante

O exemplo a seguir usa a função SQL interna, ai_query. Esta função está em Pré-visualização Pública e a definição pode mudar.


SELECT ai_query(
    "system.ai.gte-large-en",
    "Can you explain AI in ten words?"
  )

API REST

Importante

O exemplo a seguir usa parâmetros de API REST para consultar pontos de extremidade de serviço que servem modelos de base ou modelos externos. Esses parâmetros estão em Visualização pública e a definição pode mudar. Consulte POST /serving-endpoints/{name}/invocations.


curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d  '{
  "model": "system.ai.gte-large-en",
  "input": "Embed this sentence!"
}' \
https://<workspace_host>.databricks.com/ai-gateway/mlflow/v1/embeddings

SDK de desenvolvimentos MLflow

Importante

O exemplo a seguir usa a predict() API do MLflow Deployments SDK.


import mlflow.deployments

export DATABRICKS_HOST="https://<workspace_host>.databricks.com"
export DATABRICKS_TOKEN="dapi-your-databricks-token"

client = mlflow.deployments.get_deploy_client("databricks")

embeddings_response = client.predict(
    endpoint="system.ai.gte-large-en",
    inputs={
        "input": "Here is some text to embed"
    }
)

Databricks Python SDK


from databricks.sdk import WorkspaceClient
from databricks.sdk.service.serving import ChatMessage, ChatMessageRole

w = WorkspaceClient()
response = w.serving_endpoints.query(
    name="system.ai.gte-large-en",
    input="Embed this sentence!"
)
print(response.data[0].embedding)

LangChain

Para usar um modelo de APIs do Databricks Foundation Model em LangChain como modelo de embedding, importe a DatabricksEmbeddings classe e especifique o endpoint parâmetro da seguinte forma:

%pip install databricks-langchain
from databricks_langchain import DatabricksEmbeddings

embeddings = DatabricksEmbeddings(endpoint="system.ai.gte-large-en")
embeddings.embed_query("Can you explain AI in ten words?")

A seguir está o formato de solicitação esperado para um modelo de incorporação. Para modelos externos, você pode incluir parâmetros adicionais que são válidos para um determinado provedor e configuração de ponto final. Consulte Parâmetros de consulta adicionais.


{
  "input": [
    "embedding text"
  ]
}

O seguinte é o formato de resposta esperado:

{
  "object": "list",
  "data": [
    {
      "object": "embedding",
      "index": 0,
      "embedding": []
    }
  ],
  "model": "text-embedding-ada-002-v2",
  "usage": {
    "prompt_tokens": 2,
    "total_tokens": 2
  }
}

Modelos suportados

Consulte Tipos de modelo Foundation para modelos de incorporação suportados.

Verifique se as incorporações estão normalizadas

Use o seguinte para verificar se as incorporações geradas pelo seu modelo estão normalizadas.


  import numpy as np

  def is_normalized(vector: list[float], tol=1e-3) -> bool:
      magnitude = np.linalg.norm(vector)
      return abs(magnitude - 1) < tol

Recursos adicionais