DEV Community

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

Posted on

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

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.