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, чтобы лучше понять данные в базе данных.