Condividi tramite


Eseguire query su un modello di incorporamento

Questo articolo illustra come scrivere richieste di query per i modelli di base ottimizzati per le attività di incorporamento e inviarle all'endpoint di gestione del modello.

Gli esempi in questo articolo si applicano all'esecuzione di query sui modelli di base resi disponibili tramite:

Requisiti

Esempi di query

Di seguito è riportata una richiesta di incorporamento per il gte-large-en modello reso disponibile dalle API del modello foundation con pagamento in base al token, usando le diverse opzioni client.

Client OpenAI

Per usare il client OpenAI, specificare il nome dell'endpoint di gestione del modello come model input.


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"
)

Per eseguire query sui modelli di base all'esterno dell'area di lavoro, è necessario usare direttamente il client OpenAI, come illustrato di seguito. L'esempio seguente presuppone che tu abbia un token API Databricks e che openai sia installato sul tuo sistema di calcolo. È anche necessaria l'istanza dell'area di lavoro di Databricks per connettere il client OpenAI a 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

Nel seguente esempio viene usata la funzione SQL predefinita ai_query. Questa funzione è in anteprima pubblica e la definizione potrebbe cambiare.


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

REST API

Importante

L'esempio seguente usa i parametri dell'API REST per l'esecuzione di query sugli endpoint che servono modelli di base o modelli esterni. Questi parametri si trovano in anteprima pubblica e la definizione potrebbe cambiare. Vedi 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

MLflow Deployments SDK

Importante

L'esempio seguente usa l'API predict() di 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="databricks-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="databricks-gte-large-en",
    input="Embed this sentence!"
)
print(response.data[0].embedding)

LangChain

Per usare un modello di API modello di Databricks Foundation in LangChain come modello di incorporamento, importare la DatabricksEmbeddings classe e specificare il endpoint parametro come segue:

%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?")

Di seguito è riportato il formato di richiesta previsto per un modello di incorporamento. Per i modelli esterni, è possibile includere parametri aggiuntivi validi per un determinato provider e configurazione dell'endpoint. Consulta Parametri aggiuntivi di query.


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

Di seguito è riportato il formato di risposta previsto:

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

Modelli supportati

Vedere Tipi di modello di base per i modelli di incorporamento supportati.

Controllare se gli incorporamenti sono normalizzati

Usare quanto segue per verificare se gli incorporamenti generati dal modello sono normalizzati.


  import numpy as np

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

Risorse aggiuntive