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.pyAsk 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
