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

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more →

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

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay