Consulte um modelo de incorporação
Neste artigo, você aprenderá a escrever solicitações de consulta para modelos básicos otimizados para tarefas de incorporação e enviá-las ao seu modelo de serviço endpoint.
Os exemplos neste artigo se aplicam à consulta de modelos básicos disponibilizados usando:
- APIs de modelos básicos, referidos como modelos básicos hospedados pela Databricks.
- Modelos externos referidos como modelos básicos hospedados fora do Databricks .
Requisitos
- Consulte os requisitos.
- Instale o pacote apropriado para o seu clustering com base na opção de cliente de consulta escolhida.
Exemplos de consultas
A seguir, apresentamos uma solicitação de incorporação para o modelo gte-large-en
disponibilizado pela Foundation Model APIs pay-per-tokens, utilizando as diferentes opções de cliente.
- OpenAI client
- SQL
- REST API
- MLflow Deployments SDK
- Databricks Python SDK
- LangChain
Para utilizar o cliente OpenAI, especifique o nome do modelo em execução endpoint como 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 básicos fora do seu workspace, é necessário utilizar o cliente OpenAI diretamente, conforme demonstrado abaixo. O exemplo a seguir pressupõe que você possui os tokens Databricks e API e que o openai
está instalado em compute. É necessário também que a instância Databricks workspace esteja conectada ao cliente OpenAI em 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"
)
O exemplo a seguir utiliza a função SQL integrada, ai_query. Essa função está na Pré-visualização Pública e a definição pode mudar.
SELECT ai_query(
"databricks-gte-large-en",
"Can you explain AI in ten words?"
)
O exemplo a seguir utiliza os parâmetros REST e API para consultar o endpoint de serviço que atende modelos básicos ou modelos externos. Esses parâmetros estão na visualização pública e a definição pode mudar. Consulte POST /serving-endpoint/{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
O exemplo a seguir utiliza a API predict()
do SDK MLflow Deployments.
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"
}
)
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)
Para utilizar um modelo Databricks Foundation Model APIs no LangChain como um modelo de incorporação, importe a classe DatabricksEmbeddings
e especifique o parâmetro endpoint
da seguinte forma:
%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 está o formato de solicitação esperado para um modelo de incorporação. Para modelos externos, é possível incluir parâmetros adicionais válidos para um determinado provedor e uma configuração d endpoint. Consulte Parâmetros de consulta adicionais.
{
"input": [
"embedding text"
]
}
Veja a seguir o formato de resposta esperado:
{
"object": "list",
"data": [
{
"object": "embedding",
"index": 0,
"embedding": []
}
],
"model": "text-embedding-ada-002-v2",
"usage": {
"prompt_tokens": 2,
"total_tokens": 2
}
}
Modelos compatíveis
Consulte os tipos de modelo Foundation para ver os modelos de incorporação compatíveis.
Verifique se as incorporaçõ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