Loading

Quipoin Menu

Learn • Practice • Grow

rag / Project: Conversational RAG
tutorial

Project: Conversational RAG

In this project, you will extend the simple Q&A to a conversational chatbot that remembers chat history. This allows follow‑up questions like "What did you just say?"

Project 2: Conversational RAG with chat memory using LangChain's `ConversationalRetrievalChain`.

Step 1: Install Dependencies (same as Project 1)

Step 2: Create Conversational RAG Script

Create `chat_rag.py`:
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationalRetrievalChain
from langchain.chat_models import ChatOpenAI
import os

os.environ["OPENAI_API_KEY"] = "your-key-here"

# Load, chunk, embed, store (same as before)
loader = PyPDFLoader("document.pdf")
documents = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(documents)
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(chunks, embeddings)

# Conversational chain
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
qa_chain = ConversationalRetrievalChain.from_llm(
llm, retriever=vectorstore.as_retriever(), memory=memory
)

# Interactive chat
print("Chat with your PDF (type 'exit' to stop)")
while True:
query = input("nYou: ")
if query.lower() == "exit": break
result = qa_chain({"question": query})
print(f"Bot: {result['answer']}")

Step 3: Run and Test

python chat_rag.py
Ask a question, then follow up: "Can you elaborate?" – the bot remembers the previous question.

What You Learned

  • Adding conversation memory with `ConversationBufferMemory`.
  • Using `ConversationalRetrievalChain` for chat.
  • Handling multi‑turn conversations.


Two Minute Drill
  • `ConversationalRetrievalChain` stores chat history.
  • `ConversationBufferMemory` keeps messages.
  • Enables follow‑up questions.
  • Essential for chatbot applications.

Need more clarification?

Drop us an email at career@quipoinfotech.com