Pular para o conteúdo principal

LangChain no Databricks para desenvolvimento de LLM

importante

Estes são recursos experimentais e as definições do site API podem mudar.

Este artigo descreve as integrações do LangChain que facilitam o desenvolvimento e a implantação de modelos de linguagem grandes (LLMs) no Databricks.

Com essas integrações do LangChain, o senhor pode:

  • Use modelos servidos pela Databricks como LLMs ou embeddings em seu aplicativo LangChain.

  • Integre a Busca Vetorial para armazenamento e recuperação de vetores.

  • gerenciar e acompanhar seus modelos LangChain e desempenho em experimentos MLflow.

  • Rastreie as fases de desenvolvimento e produção de seu aplicativo LangChain com o MLflow Tracing.

  • Carregue perfeitamente os dados de um DataFrame do PySpark com o carregador de DataFrame do PySpark.

  • Consulte interativamente seu uso de dados em linguagem natural com o Spark DataFrame Agent ou Databricks SQL Agent.

O que é LangChain?

O LangChain é uma estrutura de software projetada para ajudar a criar aplicativos que utilizam modelos de linguagem grandes (LLMs). A força da LangChain está em sua ampla gama de integrações e recursos. Ele inclui wrappers de API, subsistemas de raspagem da Web, ferramentas de análise de código, ferramentas de resumo de documentos e muito mais. Ele também é compatível com grandes modelos de linguagem da OpenAI, Anthropic, HuggingFace, etc. prontos para uso, juntamente com várias fontes de dados e tipos.

Aproveite o MLflow para o desenvolvimento de LangChain

LangChain está disponível como uma variante do MLflow, que permite aos usuários aproveitar as ferramentas robustas do MLflow para acompanhamento de experimentos e observabilidade em ambientes de desenvolvimento e produção diretamente no Databricks. Para obter mais detalhes e orientações sobre o uso do MLflow com o LangChain, consulte a documentação da variante do MLflow LangChain.

MLflow em Databricks oferece recursos adicionais que o diferenciam da versão de código aberto, aprimorando sua experiência de desenvolvimento com os seguintes recursos:

  • totalmente gerenciado MLflow acompanhamento Server : Disponível instantaneamente em seu Databricks workspace, permitindo que o senhor comece a acompanhar experimentos sem atrasos na configuração.
  • Integração perfeita com o Databricks Notebook : Os experimentos são automaticamente vinculados ao Notebook, simplificando o processo de acompanhamento.
  • MLflow Tracing em Databricks : Fornece monitoramento em nível de produção com integração de tabela de inferência, garantindo observabilidade de ponta a ponta, do desenvolvimento à produção.
  • Gerenciamento do ciclo de vida do modelo com Unity Catalog: Controle centralizado sobre o acesso, a auditoria, a linhagem e a descoberta de modelos em todo o seu espaço de trabalho.
  • Avaliação Integrada de Agentes: Avalie a qualidade, o custo e a latência de seus aplicativos LangChain.

Ao aproveitar esses recursos, o senhor pode otimizar o desenvolvimento, o monitoramento e o gerenciamento de seus projetos baseados em LangChain, tornando o site Databricks a principal opção para iniciativas AI baseadas em MLflow.

Requisitos

  • Databricks Runtime 13.3 ML ou acima.
  • Instale o pacote de integração LangChain Databricks e o conector Databricks SQL. A Databricks também recomenda instalar a versão mais recente do LangChain para garantir que o senhor tenha as atualizações mais recentes.
    • %pip install --upgrade databricks-langchain langchain-community langchain databricks-sql-connector

Usar modelos servidos pela Databricks como LLMs ou embeddings

Se o senhor tiver um modelo LLM ou embeddings servido usando Databricks servindo modelo, poderá usá-lo diretamente em LangChain no lugar de OpenAI, HuggingFace ou qualquer outro provedor LLM.

Para usar um modelo servindo endpoint como um modelo LLM ou embeddings em LangChain, o senhor precisa:

  • Um modelo registrado LLM ou embeddings implantado em um Databricks servindo modelo endpoint.

    • Como alternativa, o senhor pode usar os modelos disponibilizados pela Foundation Model APIs, uma lista com curadoria de modelos de código aberto implantados em seu site workspace e prontos para uso imediato.
  • CAN QUERY permissão para o site endpoint.

Modelos de bate-papo

O exemplo a seguir mostra como usar o modelo Meta's Llama 3.1 70B Instruct como um componente LLM em LangChain usando a API Foundation Models.

Python

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

O senhor pode substituir o endpoint pelo seu modelo personalizado implantado na porção endpoint. Exemplos adicionais, como transmissão, invocação assíncrona e chamada de função, podem ser encontrados na documentação do siteLangChain.

Incorporações

O exemplo a seguir mostra como usar o modelo de incorporação databricks-bge-large-en como um componente de incorporação no LangChain usando a API Foundation Models.

Python

from databricks_langchain import DatabricksEmbeddings

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

Mais detalhes podem ser encontrados na documentação do LangChain

LLMs

atenção

Os modelos de conclusão são considerados um recurso legado. A maioria dos modelos modernos utiliza a interface de conclusão de bate-papo e, em vez disso, deve ser usada com o componente ChatModel.

O exemplo a seguir mostra como usar a API do modelo de conclusão como um componente LLM no LangChain.

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

Use a Busca Vetorial como armazenamento de vetores.

O Vector Search é um mecanismo de busca por similaridade serverless no Databricks, que permite armazenar representações vetoriais dos seus dados, incluindo metadados, em um índice vetorial. Você pode criar índices de pesquisa vetorial com atualização automática a partir de tabelas Delta gerenciadas pelo Unity Catalog e consultá-los por meio de uma API simples para recuperar os vetores mais semelhantes.

Para usar esse recurso no LangChain, crie uma instância do DatabricksVectorSearch:

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

Consulte a documentação do DatabricksVectorSearch para obter mais detalhes.

Usar as funções do Unity Catalog como ferramentas

nota

A integração da função do Unity Catalog está no pacote langchain-community. Você deve instalá-lo usando %pip install langchain-community para acessar sua funcionalidade. Essa integração será migrada para o pacote databricks-langchain em uma próxima versão.

O senhor pode expor funções SQL ou Python no Unity Catalog como ferramentas para o seu agente LangChain. Para obter orientação completa sobre como criar funções do Unity Catalog e usá-las no LangChain, consulte a documentação do Databricks UC Toolkit.

Carregar dados com o carregador de DataFrame do PySpark

O carregador de DataFrame do PySpark no LangChain simplifica o carregamento de dados de um DataFrame do PySpark com um único método.

Python
from langchain.document_loaders import PySparkDataFrameLoader

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

O Notebook a seguir mostra um exemplo em que o carregador PySpark DataFrame é usado para criar um chatbot baseado em recuperação que é registrado com MLflow, o que, por sua vez, permite que o modelo seja interpretado como uma função genérica Python para inferência com mlflow.pyfunc.load_model().

PySpark DataFrame loader e MLflow no Langchain Notebook

Abrir notebook em uma nova aba

Agente Spark DataFrame

O Spark DataFrame Agent no LangChain permite a interação com um Spark DataFrame, otimizado para responder a perguntas. A documentação do Spark DataFrame Agent da LangChain fornece um exemplo detalhado de como criar e usar o Spark DataFrame Agent com um DataFrame.

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

O seguinte Notebook demonstra como criar e usar o Spark DataFrame Agent para ajudá-lo a obter percepções sobre seus dados.

Use LangChain para interagir com um notebook Spark DataFrame

Abrir notebook em uma nova aba

Databricks SQL Agente

Com o Databricks SQL Agent, qualquer usuário do Databricks pode interagir com um esquema especificado no Unity Catalog e gerar percepções sobre seus dados.

importante

O Databricks SQL Agent só pode consultar tabelas e não cria tabelas.

No exemplo a seguir, a instância do banco de dados é criada no comando SQLDatabase.from_databricks(catalog="...", schema="...") e o agente e as ferramentas necessárias são criados por SQLDatabaseToolkit(db=db, llm=llm) e create_sql_agent(llm=llm, toolkit=toolkit, **kwargs), respectivamente.

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

O seguinte Notebook demonstra como criar e usar o Databricks SQL Agent para ajudá-lo a entender melhor os dados do seu banco de dados.

Use LangChain para interagir com um banco de dados SQL Notebook

Abrir notebook em uma nova aba