LangChain em Databricks para desenvolvimento LLM

Importante

Esses são recursos experimentais e as definições da API podem mudar.

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

Com essas integrações LangChain você pode:

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

  • Integrar o Mosaic AI Vector Search 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 dados perfeitamente de um PySpark DataFrame com o carregador PySpark DataFrame.

  • query interativamente sua linguagem natural de uso de dados com o Spark DataFrame Agent ou o Databricks SQL Agent.

O que é LangChain?

LangChain é uma estrutura de software projetada para ajudar a criar aplicativos que utilizam modelos de linguagem grandes (LLMs). A força da LangChain reside em sua ampla gama de integrações e capacidades. 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 suporta grandes modelos de linguagem de OpenAI, Anthropic, HuggingFace, etc. prontos para uso junto com várias fontes de dados e tipos.

Aproveitar 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 MLflowpara 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.

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 de 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 langchain-databricks 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 selecionada de modelos de código aberto implantados em seu site workspace e prontos para uso imediato.

  • A permissão CAN QUERY 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 no LangChain usando o 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?")

O senhor pode substituir o endpoint pelo seu modelo personalizado implantado no endpoint de serviço. 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.


from langchain_databricks import DatabricksEmbeddings

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

Detalhes adicionais podem ser encontrados na documentação do LangChain

LLMs

Aviso

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 sua API de modelo de conclusão como um componente LLM no 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?")

Use o Mosaic AI Vector Search como armazenamento de vetores

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

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

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

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

Usar as funções do Unity Catalog como ferramentas

Observação

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 langchain-databricks 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 PySpark DataFrame

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

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 registra logs com MLflow, o que, por sua vez, permite que o modelo seja interpretado como uma função Python genérica para inferência com mlflow.pyfunc.load_model().

PySpark DataFrame loader e MLflow em Langchain Notebook

Abra o bloco de anotações em outra guia

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.

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 Notebook a seguir demonstra como criar e usar o agente Spark DataFrame para ajudá-lo a entender seus dados.

Use LangChain para interagir com um NotebookSpark DataFrame

Abra o bloco de anotações em outra guia

Databricks SQL Agent

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 query 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 criadas por SQLDatabaseToolkit(db=db, llm=llm) e create_sql_agent(llm=llm, toolkit=toolkit, **kwargs), respectivamente.

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

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

Use LangChain para interagir com um Notebookde banco de dados SQL

Abra o bloco de anotações em outra guia