Sdílet prostřednictvím


LangChain v Azure Databricks pro vývoj LLM

Důležité

Jedná se o experimentální funkce a definice rozhraní API se můžou změnit.

Tento článek popisuje integrace jazyka LangChain, které usnadňují vývoj a nasazení rozsáhlých jazykových modelů (LLM) v Azure Databricks.

S těmito integracemi jazyka LangChain můžete:

  • Modely obsluhované službou Databricks můžete použít jako LLM nebo vkládání do aplikace LangChain.

  • Integrujte hledání vektorové architektury AI pro vektorové úložiště a načítání vektorů.

  • Správa a sledování modelů LangChain a výkonu v experimentech MLflow

  • Sledujte vývojové a produkční fáze aplikace LangChain pomocí trasování MLflow.

  • Bezproblémově načtěte data z datového rámce PySpark pomocí zavaděče datového rámce PySpark.

  • Interaktivně dotazujte data pomocí přirozeného jazyka pomocí agenta Spark DataFrame nebo agenta SQL Databricks.

Co je LangChain?

LangChain je softwarová architektura navržená tak, aby pomáhala vytvářet aplikace, které využívají velké jazykové modely (LLM). Síla jazyka LangChain spočívá v široké škále integrací a schopností. Zahrnuje obálky rozhraní API, subsystémy pro výstřižky webu, nástroje pro analýzu kódu, nástroje pro shrnutí dokumentů a další. Podporuje také velké jazykové modely od OpenAI, Anthropic, HuggingFace atd. společně s různými zdroji a typy dat.

Využití MLflow pro vývoj jazyka LangChain

LangChain je k dispozici jako příchuť MLflow, která uživatelům umožňuje využívat robustní nástroje MLflow pro sledování experimentů a pozorovatelnost v vývojových i produkčních prostředích přímo v Databricks. Další podrobnosti a pokyny k používání MLflow s LangChainem najdete v dokumentaci k příchutě jazyka MLflow.

MLflow v Databricks nabízí další funkce, které ho odlišují od opensourcové verze a vylepšují vaše vývojové prostředí následujícími funkcemi:

  • Plně spravovaný server pro sledování MLflow: Okamžitě dostupný v rámci pracovního prostoru Databricks, který umožňuje začít sledovat experimenty bez zpoždění nastavení.

  • Bezproblémová integrace s poznámkovými bloky Databricks: Experimenty se automaticky propojily s poznámkovými bloky a zjednodušily proces sledování.

  • Trasování MLflow v Databricks: Poskytuje monitorování na úrovni produkce s integrací tabulek odvozování, což zajišťuje komplexní pozorovatelnost z vývoje do produkčního prostředí.

  • Správa životního cyklu modelů pomocí katalogu Unity: Centralizovaná kontrola přístupu, auditování, rodokmenu a zjišťování modelů napříč vašimi pracovními prostory.

  • Integrované vyhodnocení agenta AI pro architekturu AI: Posouzení kvality, nákladů a latence aplikací LangChain

Díky využití těchto funkcí můžete optimalizovat vývoj, monitorování a správu projektů založených na jazyce LangChain, což databricks představuje první volbu pro iniciativy AI využívající MLflow.

Požadavky

  • Databricks Runtime 13.3 ML nebo novější
  • Nainstalujte integrační balíček LangChain Databricks a konektor SQL Databricks. Databricks také doporučuje pip nainstalovat nejnovější verzi LangChain, abyste měli jistotu, že máte nejnovější aktualizace.
    • %pip install --upgrade langchain-databricks langchain-community langchain databricks-sql-connector

Použití databricks obsluhovaných modelů jako LLM nebo vkládání

Pokud máte model LLM nebo vložený model obsluhovaný pomocí služby Databricks Model Serving, můžete ho použít přímo v jazyce LangChain místo OpenAI, HuggingFace nebo jakéhokoli jiného poskytovatele LLM.

Pokud chcete použít model obsluhující koncový bod jako LLM nebo model vkládání v langchainu, potřebujete:

  • Zaregistrovaný model LLM nebo vložený model nasazený do koncového bodu obsluhy modelu Azure Databricks
    • Alternativně můžete použít modely, které zpřístupnil rozhraní API základních modelů, kurátorovaný seznam opensourcových modelů nasazených v rámci pracovního prostoru a připravený k okamžitému použití.
  • CAN QUERY oprávnění ke koncovému bodu.

Modely chatu

Následující příklad ukazuje, jak použít Meta Llama 3.1 70B Pokyn modelu jako LLM komponenta v LangChain pomocí rozhraní API základních modelů.


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?")

Koncový bod můžete nahradit vlastním modelem nasazený do koncového bodu obsluhy. Další příklady, jako je streamování, asynchronní volání a volání funkcí, najdete v dokumentaci jazyka LangChain.

Vkládání

Následující příklad ukazuje, jak použít databricks-bge-large-en model vkládání jako komponentu embeddings v LangChain pomocí rozhraní API základních modelů.


from langchain_databricks import DatabricksEmbeddings

embeddings = DatabricksEmbeddings(endpoint="databricks-bge-large-en")

Další podrobnosti najdete v dokumentaci k jazyku LangChain.

LLMs

Upozorňující

Modely dokončení jsou považovány za starší funkci. Většina moderních modelů využívá rozhraní pro dokončování chatu a měla by být použita s komponentou ChatModel.

Následující příklad ukazuje, jak použít rozhraní API modelu dokončování jako součást LLM v 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?")

Použití funkce AI Vector Search jako vektorového úložiště

Mosaic AI Vector Search je bezserverový vyhledávací modul podobnosti v Databricks, který umožňuje ukládat vektorové reprezentace vašich dat, včetně metadat, do vektorové databáze. Indexy vektorového vyhledávání můžete vytvářet automaticky aktualizovat z tabulek Delta spravovaných katalogem Unity a dotazovat se na ně pomocí jednoduchého rozhraní API pro načtení nejvíce podobných vektorů.

Pokud chcete tuto funkci použít v jazyce LangChain, vytvořte DatabricksVectorSearch instanci:

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?")

Další podrobnosti najdete v dokumentaci DatabricksVectorSearch.

Použití funkce Katalogu Unity jako nástrojů

Poznámka:

Integrace funkce Katalogu Unity je v langchain-community balíčku. Pokud chcete získat přístup k jeho funkcím, musíte ho %pip install langchain-community nainstalovat. Tato integrace se bude migrovat na langchain-databricks balíček v nadcházející verzi.

Funkce SQL nebo Pythonu můžete v Katalogu Unity zveřejnit jako nástroje pro agenta LangChain. Úplné pokyny k vytváření funkcí katalogu Unity a jejich používání v LangChain najdete v dokumentaci k sadě nástrojů Databricks UC Toolkit.

Načtení dat pomocí zavaděče datového rámce PySpark

Zavaděč datových rámců PySpark v LangChain zjednodušuje načítání dat z datového rámce PySpark jednou metodou.

from langchain.document_loaders import PySparkDataFrameLoader

loader = PySparkDataFrameLoader(spark, wikipedia_dataframe, page_content_column="text")
documents = loader.load()

Následující poznámkový blok ukazuje příklad, ve kterém se zavaděč datového rámce PySpark používá k vytvoření chatovacího robota založeného na načítání, který je protokolovaný pomocí MLflow, který pak umožňuje model interpretovat jako obecnou funkci Pythonu pro odvozování pomocí mlflow.pyfunc.load_model().

Zavaděč datových rámců PySpark a MLflow v poznámkovém bloku Langchain

Získat poznámkový blok

Agent datového rámce Sparku

Agent datového rámce Sparku v LangChain umožňuje interakci s datovým rámcem Sparku optimalizovaným pro zodpovězení otázek. Dokumentace k agentovi sparkových datových rámců jazyka LangChain obsahuje podrobný příklad vytvoření a použití agenta sparkového datového rámce s datovým rámcem.

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

Následující poznámkový blok ukazuje, jak vytvořit a použít agenta datového rámce Spark, který vám pomůže získat přehled o datech.

Použití jazyka LangChain k interakci s poznámkovým blokem datového rámce Sparku

Získat poznámkový blok

Databricks SQL Agent

S agentem SQL Databricks můžou všichni uživatelé Azure Databricks pracovat se zadaným schématem v katalogu Unity a generovat přehledy o svých datech.

Důležité

Agent SQL Databricks může dotazovat pouze tabulky a nevytvoří tabulky.

V následujícím příkladu se instance databáze vytvoří v SQLDatabase.from_databricks(catalog="...", schema="...") rámci příkazu a agent a požadované nástroje jsou vytvořeny SQLDatabaseToolkit(db=db, llm=llm) a create_sql_agent(llm=llm, toolkit=toolkit, **kwargs)v uvedeném pořadí.

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?")

Následující poznámkový blok ukazuje, jak vytvořit a použít agenta SQL Databricks, který vám pomůže lépe porozumět datům v databázi.

Použití jazyka LangChain k interakci s poznámkovým blokem databáze SQL

Získat poznámkový blok