Compartilhar via


Consultar um modelo de inserção

Neste artigo, você aprenderá a escrever solicitações de consulta para modelos da base que são otimizados para tarefas de incorporação e enviá-las para o ponto de extremidade de serviço do modelo.

Os exemplos neste artigo se aplicam à consulta de modelos de base que são disponibilizados usando:

Requisitos

Exemplos de consulta

A seguir, uma solicitação de incorporação para o gte-large-en modelo disponibilizado pelas APIs do Modelo de Base pagas por token, usando diferentes opções de cliente.

Cliente OpenAI

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


from databricks.sdk import WorkspaceClient

w = WorkspaceClient()
openai_client = w.serving_endpoints.get_open_ai_client()

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

Para consultar modelos de base fora do espaço de trabalho, você deve usar o cliente OpenAI diretamente, conforme demonstrado abaixo. O exemplo a seguir pressupõe que você tenha um token de API do Databricks e openai instalado em seu computador. Você também precisa da sua instância de espaço de trabalho do 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/serving-endpoints"
)

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

SQL

Importante

O exemplo a seguir usa a função SQL integrada, ai_query. Essa função está na Versão Prévia Pública e a definição pode ser alterada.


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

API REST

Importante

O exemplo a seguir usa os parâmetros da API REST para consultar os pontos de extremidade de serviço que fornecem modelos base ou modelos externos. Esses parâmetros estão na Visualização Pública e a definição pode ser alterada. Consulte POST /serving-endpoints/{name}/invocations.


curl \
-u token:$DATABRICKS_TOKEN \
-X POST \
-H "Content-Type: application/json" \
-d  '{ "input": "Embed this sentence!"}' \
https://<workspace_host>.databricks.com/serving-endpoints/databricks-gte-large-en/invocations

SDK de Implantações do MLflow

Importante

O exemplo a seguir usa a API predict() do SDK de Implantações do MLflow..


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="databricks-gte-large-en",
    inputs={
        "input": "Here is some text to embed"
    }
)

SDK do Databricks do Python


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

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

LangChain

Para usar um Modelo de APIs do Foundation Model do Databricks no LangChain como um modelo de inserção, importe a classe DatabricksEmbeddings e especifique o parâmetro endpoint da seguinte maneira:

%pip install databricks-langchain
from databricks_langchain import DatabricksEmbeddings

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

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


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

O formato de resposta esperado é o seguinte:

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

Modelos com suporte

Consulte os tipos de modelos do Foundation para modelos incorporados suportados.

Verificar se as inserçõ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