Aller au contenu principal

Utiliser un modèle d’intégration personnalisé avec la recherche IA

Pour utiliser votre propre modèle d'incorporation avec la recherche IA, enregistrez-le comme modèle Python personnalisé avec MLflow. L'exemple suivant enregistre un modèle que Databricks utilise pour générer des intégrations.

Le schéma d'entrée doit être une chaîne ColSpec unique, et le schéma de sortie doit être TensorSpec comme votre signature. Les intégrations doivent être renvoyées dans un tableau NumPy.

Python
class CustomEmbeddingModel(PythonModel):

def load_context(self, context):
import os
self.databricks_token = os.environ.get('DATABRICKS_TOKEN')
self.base_url = os.environ.get("BASE_URL")
self.model_name = "databricks-gte-large-en"

def predict(self, context, model_input, params=None):
from openai import OpenAI
import numpy as np
client = OpenAI(api_key=self.databricks_token, base_url=self.base_url)
embeddings = client.embeddings.create(
input=model_input.iloc[:, 0], model=self.model_name)
results = np.stack([e.embedding for e in embeddings.data])
return results

with mlflow.start_run() as run:
input_schema = Schema([ColSpec(DataType.string)])
output_schema = Schema([TensorSpec(np.dtype(np.float32), [-1, 1024])])
signature = ModelSignature(inputs=input_schema, outputs=output_schema)
mlflow.pyfunc.log_model(
artifact_path="model",
python_model=CustomEmbeddingModel(),
pip_requirements=["mlflow==2.21.3", "openai==1.69.0"],
signature=signature,
input_example=input_example
)