Subha95 commited on
Commit
c426283
·
verified ·
1 Parent(s): d1aca1e

Upload chatbot_rag.py

Browse files
Files changed (1) hide show
  1. chatbot_rag.py +47 -0
chatbot_rag.py ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """chatbot_rag.ipynb
3
+
4
+ Automatically generated by Colab.
5
+
6
+ Original file is located at
7
+ https://colab.research.google.com/drive/1Qb6RDSuj0-E-Jy6a7bze6Plz9l9e5D_q
8
+ """
9
+
10
+ # rag_pipeline.py
11
+ from langchain.vectorstores import Chroma
12
+ from langchain.embeddings import HuggingFaceEmbeddings
13
+ from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
14
+ from langchain.llms import HuggingFacePipeline
15
+ from langchain.chains import RetrievalQA
16
+
17
+
18
+ def build_qa():
19
+ """Builds and returns the RAG QA pipeline."""
20
+
21
+ # 1. Embeddings
22
+ embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
23
+
24
+ # 2. Vector DB (already persisted in Kaggle, same folder name in HF Space)
25
+ vectorstore = Chroma(persist_directory="db", embedding_function=embeddings)
26
+
27
+ # 3. LLM
28
+ model_id = "microsoft/phi-2"
29
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
30
+ model = AutoModelForCausalLM.from_pretrained(model_id)
31
+ pipe = pipeline("text-generation", model=model, tokenizer=tokenizer, max_new_tokens=512)
32
+ llm = HuggingFacePipeline(pipeline=pipe)
33
+
34
+ # 4. QA Chain
35
+ retriever = vectorstore.as_retriever(search_kwargs={"k": 3})
36
+ qa = RetrievalQA.from_chain_type(llm=llm, retriever=retriever, return_source_documents=False)
37
+
38
+ return qa
39
+
40
+
41
+ # Build once (so Hugging Face loads at startup)
42
+ qa_pipeline = build_qa()
43
+
44
+
45
+ def get_answer(query: str) -> str:
46
+ """Takes user query and returns chatbot response."""
47
+ return qa_pipeline.run(query)