RAGChatBot / app.py
Thilak118's picture
Update app.py
03d870d verified
import pandas as pd
from langchain_core.documents import Document
from langchain_community.vectorstores import FAISS
from langchain.chains import RetrievalQA
from langchain_community.llms import HuggingFacePipeline
from langchain_community.embeddings import HuggingFaceEmbeddings
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, pipeline
import torch
import gradio as gr
# Load dataset
dataset = pd.read_csv("dataset.csv")
# Convert to LangChain Documents
documents = [
Document(
page_content=str(row["answer"]),
metadata={"question": str(row["question"])}
)
for _, row in dataset.iterrows()
]
# Setup embeddings
embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
# Load LLM
model_name = "google/flan-t5-base"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
pipe = pipeline("text2text-generation", model=model, tokenizer=tokenizer, max_length=512,
device=0 if torch.cuda.is_available() else -1)
llm = HuggingFacePipeline(pipeline=pipe)
# Create vector store
vector_store = FAISS.from_documents(documents, embeddings)
retriever = vector_store.as_retriever(search_kwargs={"k": 3})
# Create QA chain
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
retriever=retriever,
return_source_documents=True
)
# Chatbot function
def chatbot_interface(question: str) -> str:
if not qa_chain:
return "Chatbot backend not initialized properly."
try:
response = qa_chain.invoke({"query": question})
answer = response.get("result", "No answer found.")
sources = response.get("source_documents", [])
source_texts = [doc.page_content for doc in sources]
return f"Answer: {answer}\n\nSources:\n" + "\n".join(f"- {text}" for text in source_texts)
except Exception as e:
return f"Error: {e}"
# Gradio UI
interface = gr.Interface(
fn=chatbot_interface,
inputs=gr.Textbox(label="Enter your question"),
outputs=gr.Textbox(label="Response"),
title="RAG Chatbot",
description="Ask questions about AI, ChatBots, NLP, and more.",
theme="default"
)
# Launch the interface
interface.launch()