LangChain in Azure Databricks voor LLM-ontwikkeling
Belangrijk
Dit zijn experimentele functies en de API-definities kunnen veranderen.
In dit artikel worden de LangChain-integraties beschreven die de ontwikkeling en implementatie van LLM's (Large Language Models) in Azure Databricks vergemakkelijken.
Met deze LangChain-integraties kunt u het volgende doen:
Gebruik databricks-modellen als LLM's of insluitingen in uw LangChain-toepassing.
Integreer Mozaïek AI Vector Search voor vectoropslag en ophalen.
Beheer en volg uw LangChain-modellen en prestaties in MLflow-experimenten.
Traceer de ontwikkelings- en productiefasen van uw LangChain-toepassing met MLflow Tracing.
Laad naadloos gegevens uit een PySpark DataFrame met het PySpark DataFrame-laadprogramma.
Voer interactief query's uit op uw gegevens met behulp van natuurlijke taal met de Spark DataFrame Agent of Databricks SQL Agent.
Wat is LangChain?
LangChain is een softwareframework dat is ontworpen om toepassingen te maken die gebruikmaken van grote taalmodellen (LLM's). De kracht van LangChain ligt in zijn breed scala aan integraties en mogelijkheden. Het bevat API-wrappers, web scraping subsystemen, hulpprogramma's voor codeanalyse, hulpprogramma's voor documentsamenvatting en meer. Het ondersteunt ook grote taalmodellen van OpenAI, Antropisch, HuggingFace, enzovoort, samen met verschillende gegevensbronnen en -typen.
MLflow gebruiken voor LangChain-ontwikkeling
LangChain is beschikbaar als een MLflow-smaak, waarmee gebruikers de robuuste hulpprogramma's van MLflow kunnen gebruiken voor het bijhouden van experimenten en waarneembaarheid in zowel ontwikkel- als productieomgevingen rechtstreeks in Databricks. Zie de MLflow LangChain-documentatie voor meer informatie en richtlijnen voor het gebruik van MLflow met LangChain.
MLflow op Databricks biedt extra functies die deze onderscheiden van de opensource-versie, waardoor uw ontwikkelervaring wordt verbeterd met de volgende mogelijkheden:
Volledig beheerde MLflow Tracking Server: direct beschikbaar in uw Databricks-werkruimte, zodat u experimenten kunt bijhouden zonder vertragingen.
Naadloze integratie met Databricks Notebooks: Experimenten worden automatisch gekoppeld aan notebooks, waardoor het traceringsproces wordt stroomlijnd.
MLflow Tracingop Databricks-: biedt productieniveau bewaking met inference table integratie, waardoor volledige zichtbaarheid van ontwikkeling tot productie wordt gegarandeerd.
modellevenscyclusbeheer metUnity-Catalog: gecentraliseerd beheer over toegang, controle, herkomst en modeldetectie in uw werkruimten.
Evaluatie van geïntegreerdeMozaïek AI-agent: beoordeel de kwaliteit, kosten en latentie van uw LangChain-toepassingen.
Door gebruik te maken van deze functies kunt u de ontwikkeling, bewaking en het beheer van uw LangChain-projecten optimize, waardoor Databricks een belangrijke keuze is voor AI-initiatieven die door MLflow worden gemaakt.
Vereisten
- Databricks Runtime 13.3 ML of hoger.
- Installeer het Integratiepakket van LangChain Databricks en de Databricks SQL-connector. Databricks raadt pip ook aan om de nieuwste versie van LangChain te installeren om ervoor te zorgen dat u over de meest recente updates beschikt.
%pip install --upgrade databricks-langchain langchain-community langchain databricks-sql-connector
Databricks-modellen gebruiken als LLM's of insluiten
Als u een LLM- of insluitmodel hebt dat wordt geleverd met Databricks Model Serving, kunt u het rechtstreeks in LangChain gebruiken in de plaats van OpenAI, HuggingFace of een andere LLM-provider.
Als u een model voor eindpunten wilt gebruiken als een LLM- of embeddingsmodel in LangChain, hebt u het volgende nodig:
- Een geregistreerd LLM- of embeddingsmodel dat is geïmplementeerd in een Azure Databricks-model dat het eindpunt bedient.
- U kunt ook de modellen gebruiken die beschikbaar worden gesteld door Foundation Model-API's, een gecureerde list van opensource-modellen die in uw werkruimte zijn geïmplementeerd en direct kunnen worden gebruikt.
- KAN EEN QUERY uitvoeren op de machtiging voor het eindpunt.
Chatmodellen
In het volgende voorbeeld ziet u hoe u het Llama 3.1 70B-model van Meta gebruikt als een LLM-onderdeel in LangChain met behulp van de Foundation Models-API.
from databricks_langchain import ChatDatabricks
chat_model = ChatDatabricks(
endpoint="databricks-meta-llama-3-1-70b-instruct"
temperature=0.1,
max_tokens=250,
)
chat_model.invoke("How to use Databricks?")
U kunt het eindpunt vervangen door uw aangepaste model dat is geïmplementeerd op het servereindpunt. Aanvullende voorbeelden, zoals streaming, asynchrone aanroep en functie-aanroepen, vindt u in de Documentatie van LangChain.
Insluitingen
In het volgende voorbeeld ziet u hoe u het databricks-bge-large-en
insluitmodel gebruikt als een onderdeel voor insluitingen in LangChain met behulp van de Foundation Models-API.
from databricks_langchain import DatabricksEmbeddings
embeddings = DatabricksEmbeddings(endpoint="databricks-bge-large-en")
Meer informatie vindt u in de documentatie van LangChain
LLM's
Waarschuwing
Voltooiingsmodellen worden beschouwd als een verouderde functie. De meeste moderne modellen maken gebruik van de interface voor chatvoltooiing en moeten in plaats daarvan worden gebruikt met het ChatModel-onderdeel.
In het volgende voorbeeld ziet u hoe u uw voltooiingsmodel-API gebruikt als een LLM-onderdeel in 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?")
Mozaïek AI Vector Search gebruiken als vectorarchief
Mozaïek AI Vector Search is een zoekprogramma voor serverloze overeenkomsten op Databricks, waarmee u vectorweergaven van uw gegevens, inclusief metagegevens, kunt opslaan in een vectordatabase. U kunt indexen voor het automatisch bijwerken van vectorzoekopdrachten maken vanuit Delta tables beheerd door Unity Catalog en deze doorzoeken via een eenvoudige API om de meest vergelijkbare vectoren op te halen.
Als u deze functie in LangChain wilt gebruiken, maakt u een DatabricksVectorSearch
exemplaar:
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?")
Raadpleeg de documentatie van DatabricksVectorSearch voor meer informatie.
Unity Catalog-functie gebruiken als hulpprogramma
Notitie
De integratie van de Unity Catalog-functie bevindt zich in het langchain-community
-pakket. U moet het installeren met behulp van %pip install langchain-community
de functionaliteit ervan. Deze integratie wordt gemigreerd naar databricks-langchain
pakket in een toekomstige release.
U kunt SQL- of Python-functies beschikbaar maken in Unity Catalog als hulpprogramma's voor uw LangChain-agent. Raadpleeg de documentatie van de Databricks UC Toolkitvoor volledige richtlijnen over het maken van Unity
Gegevens laden met het PySpark DataFrame-laadprogramma
Het PySpark DataFrame-laadprogramma in LangChain vereenvoudigt het laden van gegevens uit een PySpark DataFrame met één methode.
from langchain.document_loaders import PySparkDataFrameLoader
loader = PySparkDataFrameLoader(spark, wikipedia_dataframe, page_content_column="text")
documents = loader.load()
In het volgende notebook wordt een voorbeeld getoond where waarbij de PySpark DataFrame-loader wordt gebruikt om een chatbot te maken, die is geregistreerd met MLflow. Dit zorgt ervoor dat het model geïnterpreteerd kan worden als een generieke Python-functie voor inferentie met mlflow.pyfunc.load_model()
.
PySpark DataFrame-laadprogramma en MLflow in Langchain-notebook
Spark DataFrame Agent
De Spark DataFrame-agent in LangChain maakt interactie mogelijk met een Spark DataFrame, geoptimaliseerd voor het beantwoorden van vragen. De documentatie van De Spark DataFrame-agent van LangChain biedt een gedetailleerd voorbeeld van het maken en gebruiken van de Spark DataFrame-agent met een 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)
...
In het volgende notebook ziet u hoe u de Spark DataFrame-agent maakt en gebruikt om inzicht te krijgen in uw gegevens.
LangChain gebruiken om te communiceren met een Spark DataFrame-notebook
Databricks SQL Agent
Met de Databricks SQL Agent kunnen alle Azure Databricks-gebruikers interageren met een opgegeven schema in Unity Catalog en generate inzichten verwerven over hun gegevens.
Belangrijk
De Databricks SQL Agent kan alleen query's uitvoeren op tablesen maakt geen tables.
In het volgende voorbeeld wordt het database-exemplaar gemaakt binnen de SQLDatabase.from_databricks(catalog="...", schema="...")
opdracht en worden de agent en de vereiste hulpprogramma's gemaakt door SQLDatabaseToolkit(db=db, llm=llm)
respectievelijk 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-1-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?")
In het volgende notebook ziet u hoe u de Databricks SQL Agent maakt en gebruikt om meer inzicht te krijgen in de gegevens in uw database.