Поделиться через


LangChain в Azure Databricks для разработки LLM

Внимание

Это экспериментальные функции, а определения API могут измениться.

В этой статье описываются интеграции LangChain, которые упрощают разработку и развертывание больших языковых моделей (LLM) в Azure Databricks.

С помощью этих интеграции LangChain вы можете:

  • Используйте модели, обслуживаемые Databricks, в качестве LLM или внедрения в приложение LangChain.
  • Интегрируйте Mosaic AI Vector Search для хранения и извлечения векторов.
  • Управляйте и отслеживайте ваши модели LangChain и их производительность в экспериментах MLflow.
  • Отслеживайте этапы разработки и производства вашего приложения LangChain с помощью MLflow Tracing.
  • Плавно загружайте данные из DataFrame PySpark с помощью загрузчика DataFrame PySpark.
  • Интерактивный запрос данных с помощью естественного языка с агентом DataFrame Spark или агентом SQL Databricks.

Что такое LangChain?

LangChain — это программная платформа, предназначенная для создания приложений, использующих большие языковые модели (LLM). Сила LangChain лежит в широком спектре интеграции и возможностей. Она включает в себя оболочки API, подсистемы веб-очистки, средства анализа кода, средства сводки документов и многое другое. Она также поддерживает большие языковые модели из OpenAI, Anthropic, HuggingFace и т. д. из поля вместе с различными источниками и типами данных.

Использование MLflow для разработки LangChain

LangChain доступен как модуль MLflow, который позволяет пользователям использовать надежные инструменты MLflow для отслеживания экспериментов и наблюдаемости как в средах разработки, так и в производственных средах в Databricks. Дополнительные сведения и рекомендации по использованию MLflow с LangChain см. в документации по версии MLflow LangChain.

MLflow в Databricks предлагает дополнительные функции, которые отличают его от версии с открытым исходным кодом, повышая возможности разработки со следующими возможностями:

  • Полностью управляемый сервер отслеживания MLflow: мгновенно доступен в рабочей области Databricks, что позволяет запускать эксперименты отслеживания без задержек установки.
  • Простая интеграция с Databricks Notebooks: эксперименты автоматически связаны с записными книжками, упрощая процесс отслеживания.
  • трассировка MLflowв Databricks: обеспечивает промышленный мониторинг с интеграцией таблиц для вывода прогнозов, обеспечивая сквозное наблюдение от разработки до рабочего процесса.
  • управление жизненным циклом моделей сUnity Catalog: централизованное управление доступом, аудитом, происхождением и обнаружением моделей в ваших рабочих областях.
  • Интегрированнаяоценка агента ИИ Мозаики: оценка качества, стоимости и задержки приложений LangChain.

Используя эти функции, вы можете оптимизировать разработку, мониторинг и управление проектами на основе LangChain, что делает Databricks главным выбором для инициатив ИИ на основе MLflow.

Требования

  • Databricks Runtime 13.3 ML или более поздней версии.
  • Установите пакет интеграции LangChain Databricks и соединитель Databricks SQL. Databricks также рекомендует установить последнюю версию LangChain, чтобы обеспечить наличие последних обновлений.
    • %pip install --upgrade databricks-langchain langchain-community langchain databricks-sql-connector

Используйте модели Databricks в качестве LLM или для создания векторных представлений.

Если у вас есть модель LLM или модель эмбеддингов, которая обслуживается с помощью Databricks Model Serving, вы можете использовать ее непосредственно в LangChain вместо OpenAI, HuggingFace или любого другого поставщика LLM.

Чтобы использовать конечную точку обслуживания модели в качестве модели LLM или внедрения в LangChain, вам потребуется:

  • Зарегистрированная модель LLM или внедрение, развернутая в конечной точке обслуживания модели Azure Databricks.
    • Кроме того, можно использовать модели, доступные с помощью API-интерфейсов моделей Foundation, тщательно отобранного списка моделей с открытым исходным кодом, развернутых в вашей рабочей области и готовых к немедленному использованию.
  • Разрешение на запрос к конечной точке.

Модели чата

В следующем примере показано, как использовать модель Meta Llama 3.1 70B Instruct в качестве компонента LLM в LangChain с помощью API базовых моделей.


from databricks_langchain import ChatDatabricks

chat_model = ChatDatabricks(
    endpoint="databricks-meta-llama-3-3-70b-instruct"
    temperature=0.1,
    max_tokens=250,
)
chat_model.invoke("How to use Databricks?")

Конечную точку можно заменить пользовательской моделью, развернутой на конечной точке обслуживания. Дополнительные примеры, такие как потоковая передача, асинхронный вызов и вызов функций, можно найти в документации LangChain.

Эмбеддинги

В следующем примере показано, как использовать databricks-bge-large-en модель внедрения в качестве компонента внедрения в LangChain с помощью API базовых моделей.


from databricks_langchain import DatabricksEmbeddings

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

Дополнительные сведения см. в документации по LangChain

LLM'ы

Предупреждение

Модели завершения считаются устаревшей функцией. Большинство современных моделей используют интерфейс завершения чата и должны работать с компонентом ChatModel.

В следующем примере показано, как использовать API модели завершения в качестве компонента LLM в 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?")

Используйте Vector Search от Mosaic AI как хранилище векторов

Mosaic AI Vector Search — это бессерверная поисковая система сходства в Databricks, которая позволяет хранить векторные представления ваших данных, включая метаданные, в векторном индексе. Индексы автоматического обновления для поиска векторов можно создавать из таблиц Delta, управляемых Unity Catalog, и запрашивать их с помощью простого API для получения наиболее похожих векторов.

Чтобы использовать эту функцию в LangChain, создайте экземпляр DatabricksVectorSearch.

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

Дополнительные сведения см. в документации DatabricksVectorSearch.

Использование функции каталога Unity в качестве инструментов

Примечание.

Интеграция функции каталога Unity находится в пакете langchain-community. Его необходимо установить с помощью %pip install langchain-community для доступа к его функциям. Эта интеграция будет перенесена в databricks-langchain пакет в предстоящем выпуске.

Вы можете предоставлять функции SQL или Python в каталоге Unity в качестве инструментов для агента LangChain. Полные рекомендации по созданию функций каталога Unity и их использованию в LangChain см. в документации Databricks UC Toolkit.

Загрузка данных с помощью загрузчика DataFrame PySpark

Загрузчик DataFrame PySpark в LangChain упрощает загрузку данных из PySpark DataFrame с помощью одного метода.

from langchain.document_loaders import PySparkDataFrameLoader

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

В следующем блокноте продемонстрирован пример использования загрузчика DataFrame PySpark для создания чат-бота на основе извлечения, который логируется с помощью MLflow и позволяет интерпретировать модель как универсальную функцию Python для вывода с mlflow.pyfunc.load_model().

Загрузчик PySpark DataFrame и MLflow в записной книжке Langchain

Возьмите записную книжку

Агент Spark DataFrame

Агент Spark DataFrame в LangChain позволяет взаимодействовать с Spark DataFrame, который оптимизирован для ответов на вопросы. Документация LangChain по агенту Spark DataFrame содержит подробный пример создания и использования агента Spark DataFrame с 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)
...

В следующей записной книжке показано, как создать и использовать агент DataFrame Spark для получения аналитических сведений о данных.

Использование LangChain для взаимодействия с ноутбуком Spark DataFrame

Возьмите записную книжку

Агент SQL Databricks

С помощью агента SQL Databricks любой пользователь Azure Databricks может взаимодействовать с указанной схемой в каталоге Unity и создавать аналитические сведения о своих данных.

Внимание

Агент SQL Databricks может запрашивать только таблицы и не создавать таблицы.

В следующем примере экземпляр базы данных создается командой SQLDatabase.from_databricks(catalog="...", schema="..."), а агент и необходимые средства создаются SQLDatabaseToolkit(db=db, llm=llm) и 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-3-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?")

В следующей записной книжке показано, как создать и использовать агент SQL Databricks, чтобы лучше понять данные в базе данных.

Использование LangChain для взаимодействия с записной книжкой базы данных SQL

Возьмите записную книжку