DEV Community

Cover image for Langchain — RAG — Retrieval Augmented Generation
Airton Lira junior
Airton Lira junior

Posted on

2 1 1

Langchain — RAG — Retrieval Augmented Generation

RAG + LangChain: Potencializando LLMs com Seus Próprios Dados 🚀

O que vamos aprender? 🤔

Neste tutorial, vamos explorar como usar a técnica de Retrieval-Augmented Generation (RAG) com a biblioteca LangChain para integrar dados proprietários em Large Language Models (LLMs). Você vai aprender a melhorar as respostas do seu modelo usando dados externos, como páginas web ou documentos.

Configuração Inicial ⚙️

Antes de começar, certifique-se de ter o Python instalado. Vamos instalar as dependências necessárias:

pip install langchain openai faiss-cpu beautifulsoup4
Enter fullscreen mode Exit fullscreen mode

Implementação Passo a Passo 👨‍💻

1. Criando o Arquivo Principal 📝

Vamos começar com o arquivo principal que demonstra a integração básica do LangChain com um LLM:

from langchain import OpenAI, PromptTemplate, LLMChain

# Inicialize a API do OpenAI
openai = OpenAI(api_key="SUA_CHAVE_API")

# Template do prompt
prompt_template = PromptTemplate(
    template="Quantos Oscars o filme {filme} ganhou em {ano}?",
    input_variables=["filme", "ano"]
)

# Crie a cadeia LLM
llm_chain = LLMChain(llm=openai, prompt=prompt_template)

# Execute a cadeia
resposta = llm_chain.run(filme="Openheimer", ano="2024")
print(resposta)
Enter fullscreen mode Exit fullscreen mode

2. Web Scraping e Criação de Vetores 🕸️

Agora vamos criar a parte responsável por fazer web scraping e transformar o conteúdo em embeddings:

from langchain.document_loaders import WebBaseLoader
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings

# Carregue documentos da Wikipedia
loader = WebBaseLoader("https://pt.wikipedia.org/wiki/Filme_Openheimer")
documents = loader.load()

# Crie embeddings
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(documents, embeddings)

# Configure o retriever
retriever = vectorstore.as_retriever()
Enter fullscreen mode Exit fullscreen mode

3. Funções Utilitárias 🛠️

Vamos encapsular as operações em uma função utilitária:

from langchain.document_loaders import WebBaseLoader
from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings

def url_to_retriever(url):
    loader = WebBaseLoader(url)
    documents = loader.load()

    embeddings = OpenAIEmbeddings()
    vectorstore = FAISS.from_documents(documents, embeddings)

    return vectorstore.as_retriever()
Enter fullscreen mode Exit fullscreen mode

4. Integrando RAG 🔄

Por fim, vamos juntar todos os componentes para implementar a técnica RAG:

from langchain import OpenAI, ChatPromptTemplate, create_retrieval_chain
from your_module import url_to_retriever

# Inicialize OpenAI
openai = OpenAI(api_key="SUA_CHAVE_API")

# Crie retriever
retriever = url_to_retriever("https://pt.wikipedia.org/wiki/Filme_Openheimer")

# Template do prompt
prompt_template = ChatPromptTemplate(
    template="Quantos Oscars o filme {filme} ganhou em {ano}?",
    input_variables=["filme", "ano"]
)

# Crie cadeia de recuperação
chain = create_retrieval_chain(
    llm=openai,
    retriever=retriever,
    prompt_template=prompt_template
)

# Execute
resposta = chain.run(filme="Openheimer", ano="2024")
print(resposta)
Enter fullscreen mode Exit fullscreen mode

Dicas Importantes 💡

  1. Substituição da API Key: Não esqueça de substituir "SUA_CHAVE_API" pela sua chave da OpenAI
  2. Segurança: Nunca compartilhe sua chave API em repositórios públicos
  3. Custos: Fique atento ao uso da API da OpenAI, pois há custos associados

Aplicações Práticas 🎯

Este conhecimento pode ser aplicado em diversos cenários:

  • Chatbots com conhecimento específico do seu domínio
  • Sistemas de suporte com documentação personalizada
  • Análise de documentos internos
  • Assistentes virtuais especializados

Conclusão 🎉

Neste tutorial, você aprendeu como implementar a técnica RAG usando LangChain para melhorar as respostas dos LLMs com dados externos. Esta é uma técnica poderosa que permite criar aplicações mais inteligentes e contextualizadas.

O Que Vem Depois? 🚀

  • Experimente com diferentes tipos de dados
  • Ajuste os prompts para seus casos de uso
  • Explore outras funcionalidades do LangChain
  • Implemente em projetos reais

Recursos Úteis 📚


Gostou do conteúdo? Me siga no LinkedIn para mais tutoriais sobre IA, LLMs e desenvolvimento! 🤝

langchain #llm #openai #python #rag #ai #tutorial

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (1)

Collapse
 
winzod4ai profile image
Winzod AI

Amazing!! Also folks, I came across this post and thought it might be helpful for you all! Rag Retrieval.

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay