Delen via


Een query uitvoeren op een insluitmodel

In dit artikel leert u hoe u queryaanvragen schrijft voor basismodellen die zijn geoptimaliseerd voor het insluiten van taken en deze naar het eindpunt van uw model kunt verzenden.

De voorbeelden in dit artikel zijn van toepassing op het uitvoeren van query's op basismodellen die beschikbaar worden gesteld met behulp van:

  • Basismodellen-API's die worden aangeduid als door Databricks gehoste basismodellen.
  • Externe modellen die worden aangeduid als basismodellen die buiten Databricks worden gehost.

Behoeften

Queryvoorbeelden

Hier volgt een insluitingsaanvraag voor het gte-large-en model dat beschikbaar wordt gesteld door Foundation Model-API's met betalen per token, met behulp van de verschillende clientopties.

OpenAI-client

Als u de OpenAI-client wilt gebruiken, geeft u de eindpuntnaam van het model op als invoer 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"
)

Als u een query wilt uitvoeren op basismodellen buiten uw werkruimte, moet u de OpenAI-client rechtstreeks gebruiken, zoals hieronder wordt weergegeven. In het volgende voorbeeld wordt ervan uitgegaan dat u een Databricks-API-token hebt en openai op uw rekenproces hebt geïnstalleerd. U hebt ook uw Databricks-werkruimte-exemplaar nodig om de OpenAI-client te verbinden met 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

Belangrijk

In het volgende voorbeeld wordt de ingebouwde SQL-functie ai_query gebruikt. Deze functie bevindt zich in openbare preview en de definitie kan veranderen.


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

REST-API

Belangrijk

In het volgende voorbeeld worden REST API-parameters gebruikt voor het uitvoeren van query's op eindpunten die basismodellen of externe modellen dienen. Deze parameters bevinden zich in openbare preview en de definitie kan veranderen. Zie POST /serving-endpoints/{name}/oproepen.


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

Belangrijk

In het volgende voorbeeld wordt de predict() API van de MLflow Deployments SDK gebruikt.


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

Als u een Databricks Foundation Model-API-model in LangChain wilt gebruiken als een insluitmodel, importeert u de DatabricksEmbeddings klasse en geeft u de endpoint parameter als volgt op:

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

Hier volgt de verwachte aanvraagindeling voor een insluitingsmodel. Voor externe modellen kunt u aanvullende parameters opnemen die geldig zijn voor een bepaalde provider en eindpuntconfiguratie. Zie Aanvullende query-parameters.


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

Hier volgt de verwachte antwoordindeling:

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

Ondersteunde modellen

Zie Foundation-modeltypen voor ondersteunde insluitingsmodellen.

Controleren of insluitingen zijn genormaliseerd

Gebruik het volgende om te controleren of de insluitingen die door uw model worden gegenereerd, zijn genormaliseerd.


  import numpy as np

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

Aanvullende bronnen