Dela via


Skicka en förfrågan till en inbäddningsmodell

I den här artikeln får du lära dig hur du skriver frågeförfrågningar för grundläggande modeller som är optimerade för inbäddningsuppgifter och skickar dem till din modell som betjänar slutpunkten.

Exemplen i den här artikeln gäller för förfrågningar mot grundmodeller som görs tillgängliga genom antingen:

Kravspecifikation

Frågeexempel

Följande är en embeddings-förfrågan för modellen gte-large-en, som tillhandahålls av Foundation Model APIs där man betalar per token, med hjälp av de olika klientalternativen.

OpenAI-klient

Om du vill använda OpenAI-klienten anger du modellens slutpunktsnamn som model indata.


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

Om du vill köra frågor mot grundmodeller utanför arbetsytan måste du använda OpenAI-klienten direkt, vilket visas nedan. I följande exempel förutsätter vi att du har en Databricks API-token och openai är installerad på din beräkning. Du behöver också din Databricks-arbetsyteinstans för att ansluta OpenAI-klienten till 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

Viktigt!

I följande exempel används den inbyggda SQL-funktionen ai_query. Den här funktionen finns i offentlig förhandsversion och definitionen kan ändras.


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

REST-API

Viktigt!

I följande exempel används REST API-parametrar för att köra frågor mot serverdelsslutpunkter som hanterar grundmodeller eller externa modeller. Dessa parametrar finns i offentlig förhandsversion och definitionen kan ändras. Se även 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 för MLflow-distributioner

Viktigt!

I följande exempel används API:et predict() från 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

För att använda en Databricks Foundation Model APIs-modell i LangChain som inbäddningsmodell importerar du klassen DatabricksEmbeddings och anger parametern endpoint enligt följande:

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

Följande är det förväntade begärandeformatet för en inbäddningsmodell. För externa modeller kan du inkludera ytterligare parametrar som är giltiga för en viss provider och slutpunktskonfiguration. Se Ytterligare frågeparametrar.


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

Följande är det förväntade svarsformatet:

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

Modeller som stöds

Se Grundläggande modelltyper för inbäddningsmodeller som stöds.

Kontrollera om inbäddningar normaliseras

Använd följande för att kontrollera om inbäddningarna som genereras av din modell normaliseras.


  import numpy as np

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

Ytterligare resurser