ETAPA 1 — Configurar Ambiente Virtual
Criar ambiente virtual
python -m venv rag_env
Ativar ambiente
Windows
rag_env\Scripts\activate
Mac/Linux
source rag_env/bin/activate
Atualizar pip
python -m pip install --upgrade pip
ETAPA 2 — Instalar Dependências
pip install langchain langchain-openai langchain-community python-dotenv jupyter
ETAPA 3 — Preparar Jupyter
jupyter notebook
Sem Jupyter:
Selecionar kernel correspondente ao rag_env.
ETAPA 4 — Criar Arquivo .env
Arquivo .env:
OPENAI_API_KEY="sua_chave_aqui"
LANGCHAIN_TRACING_V2="true"
LANGCHAIN_API_KEY="sua_chave_langsmith"
LANGCHAIN_PROJECT="RAG-DATALEX"
ETAPA 5 — Código do Caderno
Agora começa a implementação técnica.
Carregar Variáveis de Ambiente
import os
from dotenv import load_dotenv
load_dotenv()
Carregar Documentos (TextLoader)
from langchain_community.document_loaders import TextLoader
loader = TextLoader("manual_tecnico.txt")
docs = loader.load()
len(docs)
Divisão em partes (RecursiveCharacterTextSplitter)
from langchain_text_splitters import RecursiveCharacterTextSplitter
splitter = RecursiveCharacterTextSplitter(
chunk_size=1000,
chunk_overlap=150
)
chunks = splitter.split_documents(docs)
len(chunks)
Gerar Embeddings
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(
model="text-embedding-3-small"
)
Modelo e eficiente.
Criar Banco Vetorial (InMemory)
from langchain_community.vectorstores import InMemoryVectorStore
vector_store = InMemoryVectorStore.from_documents(
documents=chunks,
embedding=embeddings
)
Ideal para testes e protótipos.
Criar Retriever
retriever = vector_store.as_retriever(search_kwargs={"k": 3})
Recupera os 3 pedaços mais relevantes.
ETAPA 6 — Modelo de prompt Montar
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages(
[
("system",
"Responda usando exclusivamente o contexto fornecido.\n\nContexto:\n{context}"),
("human", "{question}")
]
)
Importante:
Prompt restritivo → reduz a alucinação.
ETAPA 7 — Configurar Modelo OpenAI
from langchain_openai import ChatOpenAI
model = ChatOpenAI(
model="gpt-4o-mini",
temperature=0
)
Temperatura 0 → respostas mais determinísticas.
ETAPA 8 — Criar Cadeia RAG
from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser
rag_chain = (
{
"context": retriever,
"question": RunnablePassthrough()
}
| prompt
| model
| StrOutputParser()
)
situação:
Query → Retriever → Prompt → LLM → Output
RAG completo.
ETAPA 9 — Executar Pergunta
pergunta = "Qual é o procedimento de backup descrito no manual?"
resposta = rag_chain.invoke(pergunta)
print(resposta)
ETAPA 10 — Debug com LangSmith
Com:
LANGCHAIN_TRACING_V2=true