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


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

Внимание

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

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

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

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

  • Интеграция векторного поиска вектора Мозаики для хранения векторов и извлечения.

  • Управление моделями LangChain и производительность в экспериментах MLflow.

  • Трассируйте этапы разработки и рабочей среды приложения LangChain с помощью трассировки MLflow.

  • Просто загружайте данные из кадра данных 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: централизованное управление доступом, аудитом, происхождением и обнаружением моделей в рабочих областях.

  • Интегрированная оценка агента ИИ Мозаики: оценка качества, стоимости и задержки приложений 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, вы можете использовать ее непосредственно в LangChain вместо OpenAI, HuggingFace или любого другого поставщика LLM.

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

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

Модели чата

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


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

Конечную точку можно заменить пользовательской моделью, развернутой на конечной точке обслуживания. Дополнительные примеры, такие как потоковая передача, асинхронный вызов и вызов функций, можно найти в документации 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?")

Использование векторного поиска в виде векторного хранилища векторов для мозаики

Поиск вектора вектора мозаики — это бессерверная поисковая система сходства в Databricks, которая позволяет хранить векторные представления данных, включая метаданные, в векторной базе данных. Индексы векторов автоматического обновления можно создавать из таблиц Delta, управляемых каталогом Unity, и запрашивать их с помощью простого 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 см. в документации по Набору средств UC Databricks.

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

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

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

Получить записную книжку

Агент DataFrame Spark

Агент DataFrame Spark в LangChain позволяет взаимодействовать с кадром данных Spark, оптимизированным для ответа на вопросы. Документация по агенту DataFrame Spark в LangChain содержит подробный пример создания и использования агента DataFrame Spark с кадром данных.

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

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

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

Получить записную книжку