Building a RAG System with LangChain
Enhancing LLM responses using document retrieval and generative AI.
Introduction
Retrieval-Augmented Generation (RAG) improves AI-generated responses by incorporating external documents during inference. In this blog, we will build a simple RAG system using **LangChain** and **OpenAI** models.
Pre-requisites
Install the necessary dependencies:
pip install langchain langchain-community langchain-openai faiss-cpuStore API keys in a .env file for security.
Setting Up Environment Variables
import os
from dotenv import load_dotenv
load_dotenv()
os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
os.environ["LANGCHAIN_API_KEY"] = os.getenv("LANGCHAIN_API_KEY")
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_PROJECT"] = os.getenv("LANGCHAIN_PROJECT")Setting Up the LLM
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="o1-mini")
print(llm)Creating a Chat Prompt
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([
("system", "You are an expert AI Engineer. Provide an answer based on the question."),("user", "{input}")])Implementing RAG
from langchain_community.document_loaders import WebBaseLoader
loader = WebBaseLoader("https://python.langchain.com/docs/tutorials/llm_chain/")
document = loader.load()Splitting Documents
from langchain_text_splitters import RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200)
documents = text_splitter.split_documents(document)Creating a Vector Store
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
embeddings = OpenAIEmbeddings()
vectorstore = FAISS.from_documents(documents, embeddings)Implementing a Retriever
retriever = vectorstore.as_retriever()Creating the Retrieval Chain
from langchain.chains import create_retrieval_chain
retrieval_chain = create_retrieval_chain(retriever, chain)Running the RAG Pipeline
result = retrieval_chain.invoke({"input": "Note that ChatModels receive message objects as input"})
print(result['answer'])Conclusion
This RAG system enhances LLMs by integrating document retrieval with generative AI. Applications include AI search engines, customer support, and research assistants.
Learn more at LangChain Documentation