Delen via


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 Tracing op Databricks: biedt bewaking op productieniveau met deductietabelintegratie, waardoor end-to-end waarneembaarheid wordt gegarandeerd van ontwikkeling naar productie.

  • Levenscyclusbeheer van modellen met Unity Catalog: Gecentraliseerd beheer over toegang, controle, herkomst en modeldetectie in uw werkruimten.

  • Evaluatie van geïntegreerde Mozaï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 optimaliseren, waardoor Databricks een belangrijke keuze is voor AI-initiatieven op basis van MLflow.

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 langchain-databricks 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 lijst met 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 langchain_databricks 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 langchain_databricks 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 uit Delta-tabellen die worden 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 langchain_databricks 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.

De functie Unity Catalog gebruiken als hulpprogramma's

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 langchain-databricks pakket in een toekomstige release.

U kunt SQL- of Python-functies beschikbaar maken in Unity Catalog als hulpprogramma's voor uw LangChain-agent. Zie de Documentatie van de Databricks UC Toolkit voor volledige richtlijnen over het maken van Unity Catalog-functies en het gebruik ervan in LangChain.

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 ziet u een voorbeeld waarin het PySpark DataFrame-laadprogramma wordt gebruikt om een chatbot te maken die is geregistreerd met MLflow, waardoor het model op zijn beurt kan worden geïnterpreteerd als een algemene Python-functie voor deductie met mlflow.pyfunc.load_model().

PySpark DataFrame-laadprogramma en MLflow in Langchain-notebook

Notebook downloaden

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

Notebook downloaden

Databricks SQL Agent

Met de Databricks SQL Agent kunnen alle Azure Databricks-gebruikers communiceren met een opgegeven schema in Unity Catalog en inzichten genereren over hun gegevens.

Belangrijk

De Databricks SQL Agent kan alleen query's uitvoeren op tabellen en maakt geen tabellen.

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 langchain_databricks 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.

LangChain gebruiken om te communiceren met een SQL-databasenotebook

Notebook downloaden