Guia Definitivo para Começar com o LangChain
Você tem visto o emoji de papagaio + corrente aparecendo em torno da IA ultimamente? Esses são os emojis característicos do LangChain. LangChain é uma ferramenta de Agente de IA que adiciona funcionalidade a grandes modelos de linguagem (LLMs) como o GPT. Além disso, inclui funcionalidades como gerenciamento de tokens, gerenciamento de contexto e modelos de prompt. Neste tutorial de introdução, analisamos dois exemplos principais do LangChain com casos de uso do mundo real. Primeiro, como consultar o GPT. Segundo, como consultar um documento com um notebook do Colab disponível aqui. Este tutorial do LangChain guiará você pelo processo de consulta ao GPT e a documentos usando LangChain.
Neste tutorial, abordamos:
- O que é LangChain?
- Como você pode executar consultas LangChain?
- Consultar o GPT
- Consultar um documento
- Introdução ao LangChain: resumo
O que é LangChain?
LangChain é um framework para criar aplicações que aproveitam grandes modelos de linguagem. Ele permite que você crie rapidamente com o CVP Framework. As duas funcionalidades principais do LangChain para aproveitar grandes modelos de linguagem são 1) ser consciente de dados e 2) ser agêntico. Consciência de dados é a capacidade de incorporar fontes de dados externas a uma aplicação de LLM. Agência é a capacidade de usar outras ferramentas.
Como acontece com muitas ferramentas de LLM, o LLM padrão do LangChain é o GPT da OpenAI e você precisa de uma chave de API da OpenAI para usá-lo. Além disso, o LangChain oferece a LangChain Expression Language (LCEL) para compor cadeias complexas de processamento de linguagem, simplificando a transição da prototipagem para a produção. Além disso, o LangChain funciona tanto com Python quanto com JavaScript. Neste tutorial, você aprenderá como ele funciona usando exemplos em Python. Você pode instalar a biblioteca Python por meio do pip executando pip install langchain.
Como o LangChain funciona?
O fluxo de perguntas e respostas do LangChain consiste em blocos de construção que podem ser facilmente trocados para criar um modelo personalizado de acordo com as necessidades individuais. Esses blocos incluem a pergunta, embedding, documentos usados para treinar o modelo, o prompt construído e uma resposta. O LangChain também utiliza analisadores de saída para gerenciar e refinar as respostas geradas por modelos de linguagem, garantindo resultados estruturados e relevantes. Portanto, se uma empresa deseja uma experiência de chat treinada por documentos específicos, o LangChain pode trocar os vários componentes para atingir esse objetivo.
Como usar o LangChain com GPT e o banco de dados vetorial Milvus?
Um dos principais casos de uso do LangChain é consultar dados de texto. Você pode usá-lo para consultar documentos, armazenamentos vetoriais ou para suavizar suas interações com o GPT, de forma muito semelhante ao LlamaIndex. Neste tutorial, abordamos um exemplo simples de como interagir com o GPT usando LangChain e consultar um documento em busca de significado semântico usando LangChain com um armazenamento vetorial. Esse processo, conhecido como Retrieval Augmented Generation (RAG), aprimora as capacidades dos modelos de linguagem ao incorporar dados externos durante o processo de geração.
Consultar o GPT
A familiaridade da maioria das pessoas com o GPT vem de conversar com o ChatGPT. O ChatGPT é a interface principal da OpenAI para interagir com o GPT. No entanto, se você quiser interagir com o GPT programaticamente, precisa de uma interface de consulta como o LangChain. O LangChain fornece uma variedade de interfaces de consulta para o GPT, desde prompts simples de uma pergunta até few shot learning por meio de contexto.
Neste exemplo, veremos como usar o LangChain para encadear perguntas usando um modelo de prompt. Há algumas bibliotecas Python que você precisa instalar primeiro. Podemos instalá-las com # pip install langchain openai python-dotenv tiktoken. Eu uso python-dotenv porque gerencio minhas variáveis de ambiente em um arquivo .env, mas você pode usar qualquer método que quiser para carregar sua chave de API da OpenAI.
Com nossa chave de API da OpenAI pronta, precisamos carregar nossas ferramentas do LangChain. Precisamos das importações PromptTemplate e LLMChain de langchain e da importação OpenAI de langchain.llms. Usamos o modelo de texto da OpenAI, text-davinci-003, para este exemplo. Em seguida, criamos um modelo para consultar o GPT. O modelo que criamos abaixo diz ao GPT para responder às perguntas dadas uma de cada vez. Primeiro, criamos uma string representando variáveis de entrada entre chaves, semelhante a como f-strings funcionam.
import os
from dotenv import load_dotenv
import openai
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
from langchain import PromptTemplate, LLMChain
from langchain.llms import OpenAI
davinci = OpenAI(model_name="text-davinci-003")
multi_template = """Answer the following questions one at a time.
Questions:
{questions}
Answers:
"""
Em seguida, usamos o objeto PromptTemplate para criar um modelo a partir da string com variáveis de entrada especificadas. Com nosso modelo de prompt pronto, podemos criar uma “cadeia” LLM passando o prompt e os grandes modelos de linguagem escolhidos para alavancagem. Agora é hora de criar as perguntas. Depois de termos as perguntas que queremos fazer, nós run a cadeia LLM com as perguntas passadas para obter nossas respostas.
long_prompt = PromptTemplate(template=multi_template, input_variables=["questions"])
llm_chain = LLMChain(
prompt=long_prompt,
llm=davinci
)
qs_str = (
"Which NFL team won the Super Bowl in the 2010 season?\n" +
"If I am 6 ft 4 inches, how tall am I in centimeters?\n" +
"Who was the 12th person on the moon?" +
"How many eyes does a blade of grass have?"
)
print(llm_chain.run(qs_str))
A imagem abaixo mostra os resultados esperados das nossas perguntas de exemplo.
Resultados das perguntas de exemplo.
Consultar documentos relevantes
Uma das áreas para melhoria do GPT e dos grandes modelos de linguagem em geral é que eles são treinados apenas com dados disponíveis no momento do treinamento. Isso significa que, com o tempo, eles perdem contexto e precisão. Muito semelhante ao framework CVP, o LangChain fornece uma maneira de remediar esse problema com bancos de dados vetoriais. Muitos bancos de dados vetoriais estão disponíveis; para este exemplo, usamos Milvus por causa da nossa familiaridade com ele.
O LangChain se destaca no manuseio de dados de documentos, transformando documentos digitalizados em dados acionáveis por meio de automação de fluxo de trabalho.
Para demonstrar a capacidade do LangChain de injetar conhecimento atualizado em sua aplicação LLM e a capacidade de fazer uma busca semântica, abordamos como consultar um documento. Usamos uma transcrição do discurso do Estado da União para este exemplo. Você pode baixar a transcrição e encontrar o notebook Colab aqui. Para obter as bibliotecas de que você precisa para esta parte do tutorial, execute pip install langchain openai milvus [pymilvus](https://zilliz.com/blog/get-started-with-pymilvus) python-dotenv tiktoken.
A capacidade de buscar documentos relevantes dinamicamente com base em consultas de usuários melhora significativamente a precisão das respostas geradas.
Assim como no exemplo de encadear perguntas, começamos carregando nossa chave de API da OpenAI e os grandes modelos de linguagem de apoio. Em seguida, inicializamos um banco de dados vetorial usando o Milvus Lite, que nos permite executar o Milvus diretamente em nosso notebook.
import os
from dotenv import load_dotenv
import openai
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
from langchain.llms import OpenAI
davinci = OpenAI(model_name="text-davinci-003")
from milvus import default_server
default_server.start()
Agora estamos prontos para entrar nos detalhes de consultar um documento. Desta vez, há muitas importações do LangChain. Precisamos dos Open AI Embeddings, do divisor de texto por caracteres, da integração com o Milvus, do carregador de texto e da cadeia de perguntas e respostas com recuperação.
A primeira coisa que fazemos é configurar um carregador e carregar o arquivo de texto. Neste caso, eu o tenho armazenado na mesma pasta que este notebook, em state_of_the_union.txt. Em seguida, dividimos o texto e o armazenamos como um conjunto de documentos do LangChain. Então, podemos configurar nosso banco de dados vetorial. Neste caso, criamos uma coleção do Milvus a partir dos documentos que acabamos de ingerir via TextLoader e CharacterTextSplitter. Também passamos os embeddings da OpenAI como o conjunto de embeddings vetoriais de texto.
Com nosso banco de dados vetorial carregado, podemos usar o objeto RetrievalQA para consultar os documentos via um banco de dados vetorial. Usamos o tipo de cadeia stuff " e passamos a OpenAI como nosso LLM e o banco de dados vetorial Milvus como um recuperador. Então, podemos criar uma consulta, como “O que o presidente disse sobre Ketanji Brown Jackson?” erun` a consulta. Por fim, devemos desligar nosso banco de dados vetorial para um encerramento limpo.
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Milvus
from langchain.document_loaders import TextLoader
from langchain.chains import RetrievalQA
loader = TextLoader('./state_of_the_union.txt')
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
embeddings = OpenAIEmbeddings()
vector_db = Milvus.from_documents(
docs,
embeddings,
connection_args={"host": "127.0.0.1", "port": default_server.listen_port},
)
qa = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=vector_db.as_retriever())
query = "What did the president say about Ketanji Brown Jackson?"
qa.run(query)
default_server.stop()
A imagem abaixo mostra como poderia ser uma resposta esperada. Devemos obter uma resposta como “O presidente disse que Ketanji Brown Jackson é uma das maiores mentes jurídicas do país, ex-advogada de destaque em prática privada, ex-defensora pública federal, …”
Resultados da consulta
Alternativa ao LangChain
Existem várias ferramentas baseadas em chat que poderiam ser consideradas alternativas ao LangChain, e as pessoas frequentemente debatem quais são as melhores. Muitas dessas alternativas também utilizam modelos de chat especializados, projetados para aplicações de chat interativas. Algumas que aparecem com frequência incluem:
- AgentGPT
- TensorFlow
- Auto-GPT
- BabyAGI
- Semantic UI
- LlamaIndex
Resumo de um tutorial de LangChain
Neste artigo, abordamos os fundamentos de como usar o LangChain. Aprendemos que o LangChain é um framework para criar aplicações de LLM que se baseia em dois fatores principais. O primeiro fator é usar dados externos, como um documento de texto. A capacidade do LangChain de integrar dados externos aumenta a eficácia dos modelos de linguagem ao incorporar informações específicas do usuário. O segundo fator é usar outras ferramentas, como um banco de dados vetorial.
Abordamos dois exemplos. Primeiro, analisamos um dos exemplos clássicos do LangChain — como encadear várias perguntas. O LangChain funciona perfeitamente com vários provedores de modelos, incluindo OpenAI e Hugging Face, para aprimorar sua funcionalidade. Em seguida, analisamos uma maneira prática de usar o LangChain para injetar conhecimento de domínio, combinando-o com um banco de dados vetorial como o Milvus para consultar documentos.
Os analisadores de saída desempenham um papel crucial no refinamento das respostas do modelo de linguagem, garantindo resultados estruturados e relevantes.
Continue lendo

Why We Built Vector Lakebase: Rethinking Unstructured Data Architecture for AI
Vector Lakebase: a unified, lake-native data foundation for AI workloads — and an answer to what happens after vector databases succeed.

Zilliz Cloud Launches in AWS Australia, Expanding Global Reach to Australia and Neighboring Markets
We're thrilled to announce that Zilliz Cloud is now available in the AWS Sydney, Australia region (ap-southeast-2).
Milvus/Zilliz + Surveillance: How Vector Databases Transform Multi-Camera Tracking
See how Milvus vector database enhances multi-camera tracking with similarity-based matching for better surveillance in retail, warehouses and transport hubs.



