Bagikan melalui


LangChain di Azure Databricks untuk pengembangan LLM

Penting

Ini adalah fitur eksperimental dan definisi API mungkin berubah.

Artikel ini menjelaskan integrasi LangChain yang memfasilitasi pengembangan dan penyebaran model bahasa besar (LLM) di Azure Databricks.

Dengan integrasi LangChain ini, Anda dapat:

  • Gunakan model yang dilayani Databricks sebagai LLM atau penyematan di aplikasi LangChain Anda.

  • Integrasikan Mosaic AI Vector Search untuk penyimpanan dan pengambilan vektor.

  • Kelola dan lacak model dan performa LangChain Anda dalam eksperimen MLflow.

  • Lacak fase pengembangan dan produksi aplikasi LangChain Anda dengan MLflow Tracing.

  • Muat data dengan mulus dari PySpark DataFrame dengan pemuat DataFrame PySpark.

  • Kueri data Anda secara interaktif menggunakan bahasa alami dengan Spark DataFrame Agent atau Databricks SQL Agent.

Apa itu LangChain?

LangChain adalah kerangka kerja perangkat lunak yang dirancang untuk membantu membuat aplikasi yang menggunakan model bahasa besar (LLM). Kekuatan LangChain terletak pada berbagai integrasi dan kemampuannya. Ini termasuk pembungkus API, subsistem pengikisan web, alat analisis kode, alat ringkasan dokumen, dan banyak lagi. Ini juga mendukung model bahasa besar dari OpenAI, Anthropic, HuggingFace, dll. out of the box bersama dengan berbagai sumber dan jenis data.

Memanfaatkan MLflow untuk pengembangan LangChain

LangChain tersedia sebagai rasa MLflow, yang memungkinkan pengguna memanfaatkan alat MLflow yang kuat untuk pelacakan eksperimen dan pengamatan di lingkungan pengembangan dan produksi langsung dalam Databricks. Untuk detail dan panduan selengkapnya tentang menggunakan MLflow dengan LangChain, lihat dokumentasi rasa MLflow LangChain.

MLflow on Databricks menawarkan fitur tambahan yang membedakannya dari versi sumber terbuka, meningkatkan pengalaman pengembangan Anda dengan kemampuan berikut:

  • Server Pelacakan MLflow yang dikelola sepenuhnya: Tersedia secara instan di dalam ruang kerja Databricks Anda, memungkinkan Anda untuk mulai melacak eksperimen tanpa penundaan penyiapan.

  • Integrasi mulus dengan Databricks Notebooks: Eksperimen secara otomatis ditautkan ke notebook, menyederhanakan proses pelacakan.

  • Pelacakan MLflow pada Databricks: Menyediakan pemantauan tingkat produksi dengan integrasi tabel inferensi, memastikan pengamatan end-to-end dari pengembangan ke produksi.

  • Manajemen siklus hidup model dengan Unity Catalog: Kontrol terpusat atas akses, audit, silsilah data, dan penemuan model di seluruh ruang kerja Anda.

  • Evaluasi Agen AI Mosaik Terintegrasi: Menilai kualitas, biaya, dan latensi aplikasi LangChain Anda.

Dengan memanfaatkan fitur-fitur ini, Anda dapat mengoptimalkan pengembangan, pemantauan, dan manajemen proyek berbasis LangChain Anda, menjadikan Databricks pilihan utama untuk inisiatif AI yang didukung MLflow.

Persyaratan

  • Databricks Runtime 13.3 ML atau lebih tinggi.
  • Instal paket integrasi LangChain Databricks dan konektor Databricks SQL. Databricks juga merekomendasikan pip menginstal versi terbaru LangChain untuk memastikan Anda memiliki pembaruan terbaru.
    • %pip install --upgrade langchain-databricks langchain-community langchain databricks-sql-connector

Menggunakan model yang dilayani Databricks sebagai LLM atau penyematan

Jika Anda memiliki model LLM atau penyematan yang disajikan menggunakan Databricks Model Serving, Anda dapat menggunakannya langsung di dalam LangChain di tempat OpenAI, HuggingFace, atau penyedia LLM lainnya.

Untuk menggunakan model yang melayani titik akhir sebagai model LLM atau penyematan di LangChain, Anda perlu:

  • Model LLM atau penyematan terdaftar yang disebarkan ke model Azure Databricks yang melayani titik akhir.
    • Atau, Anda dapat menggunakan model yang disediakan oleh FOUNDATION Model API, daftar model sumber terbuka yang dikumpulkan yang disebarkan dalam ruang kerja Anda dan siap digunakan segera.
  • IZIN CAN QUERY ke titik akhir.

Model obrolan

Contoh berikut menunjukkan cara menggunakan model Instruksi Llama 3.1 70B Meta sebagai komponen LLM di LangChain menggunakan 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?")

Anda dapat mengganti titik akhir ke model kustom yang disebarkan pada titik akhir penyajian. Contoh tambahan seperti streaming, pemanggilan asinkron, dan panggilan fungsi dapat ditemukan dalam dokumentasi LangChain.

Penyematan

Contoh berikut menunjukkan cara menggunakan databricks-bge-large-en model penyematan sebagai komponen penyematan di LangChain menggunakan Foundation Models API.


from langchain_databricks import DatabricksEmbeddings

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

Detail tambahan dapat ditemukan dalam dokumentasi LangChain

LLM

Peringatan

Model penyelesaian dianggap sebagai fitur warisan. Sebagian besar model modern menggunakan antarmuka penyelesaian obrolan dan harus digunakan dengan komponen ChatModel sebagai gantinya.

Contoh berikut menunjukkan cara menggunakan API model penyelesaian Anda sebagai komponen LLM di 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?")

Menggunakan Mosaic AI Vector Search sebagai penyimpanan vektor

Mosaic AI Vector Search adalah mesin pencari kesamaan tanpa server pada Databricks, memungkinkan Anda menyimpan representasi vektor data Anda, termasuk metadata, dalam database vektor. Anda dapat membuat indeks pencarian vektor pembaruan otomatis dari tabel Delta yang dikelola oleh Katalog Unity dan mengkuerinya melalui API sederhana untuk mengambil vektor yang paling mirip.

Untuk menggunakan fitur ini di LangChain, buat DatabricksVectorSearch instans:

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

Lihat dokumentasi DatabricksVectorSearch untuk detail lebih lanjut.

Menggunakan fungsi Unity Catalog sebagai alat

Catatan

Integrasi fungsi Unity Catalog ada dalam langchain-community paket. Anda harus menginstalnya menggunakan %pip install langchain-community untuk mengakses fungsionalitasnya. Integrasi ini akan bermigrasi ke langchain-databricks paket dalam rilis mendatang.

Anda dapat mengekspos fungsi SQL atau Python di Unity Catalog sebagai alat untuk agen LangChain Anda. Untuk panduan lengkap tentang membuat fungsi Unity Catalog dan menggunakannya di LangChain, lihat dokumentasi Toolkit UC Databricks.

Memuat data dengan pemuat DataFrame PySpark

Pemuat DataFrame PySpark di LangChain menyederhanakan pemuatan data dari PySpark DataFrame dengan satu metode.

from langchain.document_loaders import PySparkDataFrameLoader

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

Notebook berikut menampilkan contoh di mana PySpark DataFrame loader digunakan untuk membuat chatbot berbasis pengambilan yang dicatat dengan MLflow, yang pada gilirannya memungkinkan model ditafsirkan sebagai fungsi Python generik untuk inferensi dengan mlflow.pyfunc.load_model().

PySpark DataFrame loader dan MLflow di notebook Langchain

Dapatkan buku catatan

Spark DataFrame Agent

Spark DataFrame Agent di LangChain memungkinkan interaksi dengan Spark DataFrame, yang dioptimalkan untuk jawaban atas pertanyaan. Dokumentasi Spark DataFrame Agent LangChain memberikan contoh terperinci tentang cara membuat dan menggunakan Spark DataFrame Agent dengan 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)
...

Notebook berikut menunjukkan cara membuat dan menggunakan Spark DataFrame Agent untuk membantu Anda mendapatkan wawasan tentang data Anda.

Menggunakan LangChain untuk berinteraksi dengan notebook Spark DataFrame

Dapatkan buku catatan

Agen SQL Databricks

Dengan Agen SQL Databricks, setiap pengguna Azure Databricks dapat berinteraksi dengan skema tertentu di Unity Catalog dan menghasilkan wawasan tentang data mereka.

Penting

Agen SQL Databricks hanya dapat mengkueri tabel, dan tidak membuat tabel.

Dalam contoh berikut, instans database dibuat dalam SQLDatabase.from_databricks(catalog="...", schema="...") perintah dan agen dan alat yang diperlukan dibuat oleh SQLDatabaseToolkit(db=db, llm=llm) dan create_sql_agent(llm=llm, toolkit=toolkit, **kwargs), masing-masing.

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

Notebook berikut menunjukkan cara membuat dan menggunakan Databricks SQL Agent untuk membantu Anda lebih memahami data dalam database Anda.

Menggunakan LangChain untuk berinteraksi dengan buku catatan database SQL

Dapatkan buku catatan