Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Important
Il s’agit de fonctionnalités expérimentales et les définitions de l’API peuvent changer.
Cet article décrit les intégrations LangChain qui facilitent le développement et le déploiement de grands modèles de langage (LLM) sur Azure Databricks.
Avec ces intégrations LangChain, vous pouvez :
- Utilisez des modèles Databricks servis en tant que LLM ou en tant qu'intégrations dans votre application LangChain.
- Intégrez Mosaic AI de recherche vectorielle pour le stockage et la récupération de vecteurs.
- Gérez et suivez vos modèles LangChain et performances dans les expériences MLflow.
- Suivez les phases de développement et de production de votre application LangChain à l'aide de MLflow Tracing.
- Chargez en toute transparence des données à partir d’un PySpark DataFrame avec le chargeur PySpark DataFrame.
- Interrogez vos données de manière interactive en utilisant le langage naturel avec l’agent Spark DataFrame ou SQL Agent Databricks.
Qu’est-ce que LangChain ?
LangChain est un framework logiciel conçu pour aider à créer des applications qui utilisent de grands modèles de langage (LLM). La force de LangChain réside dans son large éventail d’intégrations et de capacités. Il comprend des wrappers d’API, des sous-systèmes de web scraping, des outils d’analyse de code, des outils de synthèse de documents, etc. Il prend également en charge de grands modèles de langage d’OpenAI, Anthropic, HuggingFace, etc., ainsi que diverses sources et types de données.
Tirer profit de MLflow pour le développement LangChain
LangChain est disponible en tant que version MLflow, qui permet aux utilisateurs d'exploiter les outils robustes de MLflow pour le suivi des expériences et l'observabilité dans les environnements de développement et de production au sein de Databricks. Pour plus de détails et une aide sur l’utilisation de MLflow avec LangChain, consultez la documentation sur la version MLflow LangChain.
MLflow sur Databricks offre des caractéristiques supplémentaires qui la distinguent de la version open source, améliorant votre expérience de développement avec les capacités suivantes :
- Serveur de suivi MLflow complètement managé : disponible instantanément dans votre espace de travail Databricks, ce qui vous permet de débuter le suivi des expériences sans retard d’installation.
- Intégration transparente avec databricks Notebooks : les expériences sont automatiquement liées aux notebooks, ce qui simplifie le processus de suivi.
- MLflow Tracingsur Databricks: fournit une surveillance au niveau de la production avec l’intégration de la table d’inférence, garantissant ainsi l’observabilité de bout en bout du développement à la production.
- Gestion de cycle de vie des modèles avecle catalogue Unity : contrôle centralisé sur l’accès, l’audit, la traçabilité et la découverte de modèles sur vos espaces de travail.
- Évaluation de l’agent Mosaic AI intégrée : évaluez la qualité, le coût et la latence de vos applications LangChain.
En tirant profit de ces caractéristiques, vous pouvez optimiser le développement, la supervision et la gestion de vos projets LangChain, ce qui fait de Databricks un premier choix pour les initiatives IA basées sur MLflow.
Spécifications
- Databricks Runtime 13.3 ML ou version ultérieure.
- Installez le package d’intégration LangChain Databricks et le connecteur SQL Databricks. Databricks recommande également à pip d’installer la dernière version de LangChain pour garantir que vous disposez des mises à jour les plus récentes.
%pip install --upgrade databricks-langchain langchain-community langchain databricks-sql-connector
Utiliser des modèles Databricks mise en service en tant que grands modèles de langage (LLM) ou incorporations
Si vous avez un modèle LLM ou d’incorporation servi par Databricks Model Serving, vous pouvez l’utiliser directement dans LangChain à la place d’OpenAI, HuggingFace ou de tout autre fournisseur LLM.
Si vous souhaitez utiliser un point de terminaison de mise en service en tant que modèle LLM ou incorporations dans LangChain, vous avez besoin de :
- Un LLM enregistré ou un modèle d’incorporations déployé sur un point de terminaison de mise en service Azure Databricks.
- Vous pouvez également utiliser les modèles mis à disposition par les API Foundation Model, une liste organisée de modèles open source déployée dans votre espace de travail et prête à être utilisée immédiatement.
- Autorisation CAN QUERY sur le point de terminaison.
Modèles de conversation
L’exemple suivant montre comment utiliser le modèle Llama 3.1 70B Instruct de Meta en tant que composant LLM dans LangChain à l’aide de l’API Foundation Models.
from databricks_langchain import ChatDatabricks
chat_model = ChatDatabricks(
endpoint="databricks-meta-llama-3-3-70b-instruct",
temperature=0.1,
max_tokens=250,
)
chat_model.invoke("How to use Databricks?")
Vous pouvez remplacer le point de terminaison par votre modèle personnalisé déployé sur le point de terminaison de mise en service. Vous trouverez d’autres exemples tels que la diffusion en continu, l’invocation asynchrone et l’appel de fonction dans la documentation LangChain.
Incorporations
L’exemple suivant montre comment utiliser le modèle d’incorporation databricks-bge-large-en en tant que composant d’incorporation dans LangChain à l’aide de Foundation Models API.
from databricks_langchain import DatabricksEmbeddings
embeddings = DatabricksEmbeddings(endpoint="databricks-bge-large-en")
Vous trouverez plus de détails dans la documentation LangChain
Les LLM
Avertissement
Les modèles d’achèvement sont considérés comme une caractéristique héritée. La plupart des modèles modernes utilisent l’interface de complétion de conversation et devraient plutôt être utilisés avec le composant ChatModel.
L’exemple suivant montre comment utiliser votre API de modèle terminé en tant que composant LLM dans LangChain.
from langchain_community.llms import Databricks
llm = Databricks(endpoint_name="falcon-7b-instruct", model_kwargs={"temperature": 0.1, "max_tokens": 100})
llm("How are you?")
Utilisez la recherche vectorielle de Mosaic AI comme store de vecteurs
Mosaic AI Vector Search est un moteur de recherche de similarité serverless sur Databricks, ce qui vous permet de stocker des représentations vectorielles de vos données, y compris les métadonnées, dans un index vectoriel. Vous pouvez créer des index de recherche vectorielle à mise à jour automatique à partir de tables Delta managées par Unity Catalog, et les interroger via une API simple pour récupérer les vecteurs les plus similaires.
Pour utiliser cette caractéristique dans LangChain, créez une instance DatabricksVectorSearch :
from databricks_langchain import DatabricksVectorSearch
vector_store = DatabricksVectorSearch(index_name="<YOUR_VECTOR_SEARCH_INDEX_NAME>")
retriever = vector_store.as_retriever(search_kwargs={"k": 5})
retriever.invoke("What is Databricks?")
Reportez-vous à la section Documentation sur DatabricksVectorSearch pour plus de détails.
Utiliser la fonction catalogue Unity en tant qu’outils
Remarque
L’intégration de la fonction de catalogue Unity se trouve dans le package langchain-community. Vous devez l’installer en utilisant %pip install langchain-community pour accéder à ses fonctionnalités. Cette intégration migrera vers le package databricks-langchain dans une prochaine version.
Il est possible d’exposer des fonctions SQL ou Python dans le catalogue Unity en tant qu’outils pour votre agent LangChain. Pour obtenir une l’aide complète sur la création de fonctions de catalogue Unity et leur utilisation dans LangChain, consultez la documentation sur le kit de ressources databricks UC.
Charger des données avec le chargeur PySpark DataFrame
Le chargeur PySpark DataFrame dans LangChain simplifie le chargement des données à partir d’un PySpark DataFrame avec une seule méthode.
from langchain.document_loaders import PySparkDataFrameLoader
loader = PySparkDataFrameLoader(spark, wikipedia_dataframe, page_content_column="text")
documents = loader.load()
Le notebook suivant présente un exemple dans lequel le chargeur PySpark DataFrame est utilisé pour créer un chatbot basé sur la recherche d'information qui est consigné avec MLflow, ce qui permet à son tour d’interpréter le modèle comme une fonction Python générique pour l’inférence avec mlflow.pyfunc.load_model().
Chargeur PySpark DataFrame et MLflow dans le notebook Langchain
Agent Spark DataFrame
L’agent Spark DataFrame dans LangChain permet une interaction avec un Spark DataFrame, optimisé pour la réponse aux questions. La documentation de l’agent Spark DataFrame de LangChain fournit un exemple détaillé de création et d’utilisation de l’agent de trame de données Spark avec un DataFrame.
from langchain.agents import create_spark_dataframe_agent
df = spark.read.csv("/databricks-datasets/COVID/coronavirusdataset/Region.csv", header=True, inferSchema=True)
display(df)
agent = create_spark_dataframe_agent(llm=OpenAI(temperature=0), df=df, verbose=True)
...
Le notebook suivant montre comment créer et utiliser l’agent Spark DataFrame pour vous aider à obtenir des informations sur vos données.
Utilisez LangChain pour interagir avec un carnet contenant un DataFrame Spark
SQL Agent Databricks
Avec Databricks SQL Agent , tous les utilisateurs Azure Databricks peuvent interagir avec un schéma spécifié dans le catalogue Unity et générer des insights sur leurs données.
Important
SQL Agent Databricks peut uniquement interroger des tables et ne crée pas de tables.
Dans l'exemple suivant, l'instance de base de données est créée dans la commande SQLDatabase.from_databricks(catalog="...", schema="...") et l'agent et les outils requis sont créés respectivement par SQLDatabaseToolkit(db=db, llm=llm) et create_sql_agent(llm=llm, toolkit=toolkit, **kwargs).
from langchain.agents import create_sql_agent
from langchain.agents.agent_toolkits import SQLDatabaseToolkit
from langchain.sql_database import SQLDatabase
from langchain import OpenAI
from databricks_langchain import ChatDatabricks
# Note: Databricks SQL connections eventually time out. We set pool_pre_ping: True to
# try to ensure connection health is checked before a SQL query is made
db = SQLDatabase.from_databricks(catalog="samples", schema="nyctaxi", engine_args={"pool_pre_ping": True})
llm = ChatDatabricks(
endpoint="databricks-meta-llama-3-3-70b-instruct",
temperature=0.1,
max_tokens=250,
)
toolkit = SQLDatabaseToolkit(db=db, llm=llm)
agent = create_sql_agent(llm=llm, toolkit=toolkit, verbose=True)
agent.run("What is the longest trip distance and how long did it take?")
Ce notebook montre comment créer et utiliser l'agent SQL de Databricks afin de mieux comprendre les données de votre base de données.