Mengkueri model penyematan

Dalam artikel ini, Anda akan mempelajari cara menulis permintaan kueri untuk model dasar yang dioptimalkan untuk tugas-tugas embeddings dan mengirimkannya ke titik akhir penyajian model Anda.

Contoh dalam artikel ini berlaku untuk mengkueri model fondasi yang tersedia menggunakan:

  • Model Fondasi API yang disebut sebagai model fondasi yang dihosting Databricks.
  • Model eksternal yang disebut sebagai model fondasi yang dihosting di luar Databricks.

Persyaratan

Contoh kueri

Berikut ini adalah permintaan penyematan untuk gte-large-en model yang disediakan oleh API Model Foundation pay-per-token, menggunakan berbagai opsi klien.

Klien OpenAI

Untuk menggunakan klien OpenAI, tentukan nama titik akhir model sebagai model input.

from databricks_openai import DatabricksOpenAI

client = DatabricksOpenAI()

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

Untuk mengkueri model fondasi di luar ruang kerja, Anda harus menggunakan klien OpenAI secara langsung, seperti yang ditunjukkan di bawah ini. Contoh berikut mengasumsikan Anda memiliki token Databricks API dan openai diinstal pada komputasi Anda. Anda juga memerlukan instans ruang kerja Databricks untuk menghubungkan klien OpenAI ke 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

Penting

Contoh berikut menggunakan fungsi SQL bawaan, ai_query. Fungsi ini ada di Pratinjau Umum dan definisinya mungkin berubah.


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

REST API

Penting

Contoh berikut menggunakan parameter REST API untuk mengkueri titik akhir penyajian yang melayani model fondasi atau model eksternal. Parameter ini ada di Pratinjau Umum dan definisinya mungkin berubah. Lihat 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 Penyebaran MLflow

Penting

Contoh berikut menggunakan predict() API dari 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

Untuk menggunakan model API Model Databricks Foundation di LangChain sebagai model penyematan, impor DatabricksEmbeddings kelas dan tentukan endpoint parameter sebagai berikut:

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

Berikut ini adalah format permintaan yang diinginkan untuk model penyematan. Untuk model eksternal, Anda dapat menyertakan parameter tambahan yang valid untuk penyedia dan konfigurasi titik akhir tertentu. Lihat Parameter kueri tambahan.


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

Berikut ini adalah format respons yang diharapkan:

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

Model yang didukung

Lihat Jenis model dasar untuk model penyematan yang didukung.

Periksa apakah embeddings dinormalisasi

Gunakan yang berikut ini untuk memeriksa apakah embedding yang dihasilkan oleh model Anda sudah dinormalisasi.


  import numpy as np

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

Sumber daya tambahan