LangChain på Azure Databricks för LLM-utveckling
Viktigt!
Det här är experimentella funktioner och API-definitionerna kan ändras.
Den här artikeln beskriver LangChain-integreringar som underlättar utveckling och distribution av stora språkmodeller (LLM) på Azure Databricks.
Med dessa LangChain-integreringar kan du:
Använd Databricks-serverade modeller som LLM:er eller inbäddningar i ditt LangChain-program.
Integrera Mosaic AI Vector Search för vektorlagring och hämtning.
Hantera och spåra dina LangChain-modeller och prestanda i MLflow-experiment.
Spåra utvecklings- och produktionsfaserna för ditt LangChain-program med MLflow Tracing.
Läs in data sömlöst från en PySpark DataFrame med PySpark DataFrame-inläsaren.
Fråga dina data interaktivt med naturligt språk med Spark DataFrame Agent eller Databricks SQL Agent.
Vad är LangChain?
LangChain är ett programvaruramverk som är utformat för att skapa program som använder stora språkmodeller (LLM). LangChains styrka ligger i dess breda utbud av integreringar och funktioner. Den innehåller API-omslutning, undersystem för webbskrapa, kodanalysverktyg, verktyg för dokumentsammanfattning med mera. Det stöder också stora språkmodeller från OpenAI, Anthropic, HuggingFace osv. ut ur lådan tillsammans med olika datakällor och typer.
Utnyttja MLflow för LangChain-utveckling
LangChain är tillgängligt som en MLflow-smak, vilket gör det möjligt för användare att utnyttja MLflows robusta verktyg för experimentspårning och observerbarhet i både utvecklings- och produktionsmiljöer direkt i Databricks. Mer information och vägledning om hur du använder MLflow med LangChain finns i dokumentationen om MLflow LangChain-smak.
MLflow på Databricks erbjuder ytterligare funktioner som skiljer den från versionen med öppen källkod, vilket förbättrar din utvecklingsupplevelse med följande funktioner:
Fullständigt hanterad MLflow Tracking Server: Omedelbart tillgänglig på din Databricks-arbetsyta, så att du kan börja spåra experiment utan installationsfördröjningar.
Sömlös integrering med Databricks Notebooks: Experiment länkas automatiskt till notebook-filer, vilket effektiviserar spårningsprocessen.
MLflow-spårning på Databricks: Tillhandahåller övervakning på produktionsnivå med integrering av slutsatsdragningstabeller, vilket säkerställer observerbarhet från slutpunkt till slutpunkt från utveckling till produktion.
Modelllivscykelhantering med Unity Catalog: Centraliserad kontroll över åtkomst, granskning, ursprung och modellidentifiering över dina arbetsytor.
Integrerad mosaic AI-agentutvärdering: Utvärdera kvaliteten, kostnaden och svarstiden för dina LangChain-program.
Genom att utnyttja dessa funktioner kan du optimera utvecklingen, övervakningen och hanteringen av dina LangChain-baserade projekt, vilket gör Databricks till ett utmärkt val för MLflow-baserade AI-initiativ.
Krav
- Databricks Runtime 13.3 ML eller senare.
- Installera LangChain Databricks-integreringspaketet och Databricks SQL-anslutningsappen. Databricks rekommenderar också pip-installation av den senaste versionen av LangChain för att säkerställa att du har de senaste uppdateringarna.
%pip install --upgrade databricks-langchain langchain-community langchain databricks-sql-connector
Använda Databricks-serverade modeller som LLM:er eller inbäddningar
Om du har en LLM- eller inbäddningsmodell som hanteras med Databricks Model Serving kan du använda den direkt i LangChain i stället för OpenAI, HuggingFace eller någon annan LLM-provider.
Om du vill använda en modell som betjänar slutpunkten som en LLM- eller inbäddningsmodell i LangChain behöver du:
- En registrerad LLM- eller inbäddningsmodell som distribuerats till en Azure Databricks-modell som betjänar slutpunkten.
- Du kan också använda de modeller som görs tillgängliga av Foundation Model-API:er, en kuraterad lista över modeller med öppen källkod som distribuerats på din arbetsyta och som är redo för omedelbar användning.
- KAN FRÅGA behörighet till slutpunkten.
Chattmodeller
I följande exempel visas hur du använder Metas Llama 3.1 70B Instruct-modell som en LLM-komponent i LangChain med hjälp av 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?")
Du kan ersätta slutpunkten med din anpassade modell som distribuerats på serverdelsslutpunkten. Ytterligare exempel som strömning, asynkron anrop och funktionsanrop finns i LangChain-dokumentationen.
Inbäddningar
I följande exempel visas hur du använder databricks-bge-large-en
inbäddningsmodellen som en inbäddningskomponent i LangChain med hjälp av API:et för Foundation Models.
from databricks_langchain import DatabricksEmbeddings
embeddings = DatabricksEmbeddings(endpoint="databricks-bge-large-en")
Mer information finns i LangChain-dokumentationen
LLM:er
Varning
Slutförandemodeller betraktas som en äldre funktion. De flesta moderna modeller använder chattens slutförandegränssnitt och bör användas med ChatModel-komponenten i stället.
I följande exempel visas hur du använder din kompletteringsmodell-API som en LLM-komponent i 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?")
Använda Mosaic AI Vector Search som vektorarkiv
Mosaic AI Vector Search är en serverlös likhetssökmotor på Databricks, så att du kan lagra vektorrepresentationer av dina data, inklusive metadata, i en vektordatabas. Du kan skapa vektorsökningsindex för automatisk uppdatering från Delta-tabeller som hanteras av Unity Catalog och köra frågor mot dem via ett enkelt API för att hämta de mest liknande vektorerna.
Om du vill använda den här funktionen i LangChain skapar du en DatabricksVectorSearch
instans:
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?")
Mer information finns i Dokumentationen om DatabricksVectorSearch.
Använda Unity Catalog-funktionen som verktyg
Kommentar
Unity Catalog-funktionsintegrering finns i paketet langchain-community
. Du måste installera den med för %pip install langchain-community
att få åtkomst till dess funktioner. Den här integreringen migreras till databricks-langchain
paket i en kommande version.
Du kan exponera SQL- eller Python-funktioner i Unity Catalog som verktyg för din LangChain-agent. Fullständig vägledning om hur du skapar Unity Catalog-funktioner och använder dem i LangChain finns i dokumentationen om Databricks UC Toolkit.
Läsa in data med PySpark DataFrame-inläsaren
PySpark DataFrame-inläsaren i LangChain förenklar inläsningen av data från en PySpark DataFrame med en enda metod.
from langchain.document_loaders import PySparkDataFrameLoader
loader = PySparkDataFrameLoader(spark, wikipedia_dataframe, page_content_column="text")
documents = loader.load()
Följande notebook-fil visar ett exempel där PySpark DataFrame-inläsaren används för att skapa en hämtningsbaserad chattrobot som loggas med MLflow, vilket i sin tur gör att modellen kan tolkas som en allmän Python-funktion för slutsatsdragning med mlflow.pyfunc.load_model()
.
PySpark DataFrame-inläsare och MLflow i Langchain Notebook
Spark DataFrame-agent
Spark DataFrame-agenten i LangChain tillåter interaktion med en Spark DataFrame, optimerad för frågesvar. LangChains Dokumentation om Spark DataFrame Agent innehåller ett detaljerat exempel på hur du skapar och använder Spark DataFrame-agenten med en 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)
...
Följande notebook-fil visar hur du skapar och använder Spark DataFrame-agenten för att få insikter om dina data.
Använda LangChain för att interagera med en Spark DataFrame-notebook-fil
Databricks SQL Agent
Med Databricks SQL Agent kan alla Azure Databricks-användare interagera med ett angivet schema i Unity Catalog och generera insikter om sina data.
Viktigt!
Databricks SQL Agent kan bara köra frågor mot tabeller och skapar inte tabeller.
I följande exempel skapas databasinstansen SQLDatabase.from_databricks(catalog="...", schema="...")
i kommandot och agenten och nödvändiga verktyg skapas av SQLDatabaseToolkit(db=db, llm=llm)
respektive 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?")
Följande notebook-fil visar hur du skapar och använder Databricks SQL Agent för att hjälpa dig att bättre förstå data i databasen.