dine24 commited on
Commit
8664dd7
·
verified ·
1 Parent(s): a28188e

Upload 6 files

Browse files

Initial commit: Added Luxury Decor Assistant RAG app with FAISS + DeBERTa + LLaMA-2

.gitattributes CHANGED
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ deberta_faiss.index filter=lfs diff=lfs merge=lfs -text
37
+ Online[[:space:]]Retail.xlsx filter=lfs diff=lfs merge=lfs -text
Online Retail.xlsx ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:22d7d032ef5e8e9d039c16db624fc570ec2bacaf42e5dd3055cb5732971de78a
3
+ size 2220651
app.py ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
+ import gradio as gr
3
+ import numpy as np
4
+ import pandas as pd
5
+ import faiss
6
+ import torch
7
+ from transformers import AutoTokenizer, AutoModel, pipeline
8
+
9
+ # Load FAISS index and product data
10
+ index = faiss.read_index("deberta_faiss.index")
11
+ text_data = pd.read_csv("deberta_text_data.csv")["Retrieved Text"].tolist()
12
+
13
+ # Load DeBERTa model and tokenizer for embedding
14
+ deberta_model_name = "microsoft/deberta-v3-base"
15
+ deberta_tokenizer = AutoTokenizer.from_pretrained(deberta_model_name)
16
+ deberta_model = AutoModel.from_pretrained(deberta_model_name).to("cpu")
17
+
18
+ # Load LLaMA-2 tokenizer and pipeline
19
+ llama_model_name = "meta-llama/Llama-2-7b-chat-hf"
20
+ llama_tokenizer = AutoTokenizer.from_pretrained(llama_model_name)
21
+ llama_pipeline = pipeline("text-generation", model=llama_model_name, tokenizer=llama_tokenizer, device=-1)
22
+
23
+ # Function to generate embeddings from DeBERTa
24
+ def generate_embeddings(queries):
25
+ tokens = deberta_tokenizer(queries, return_tensors="pt", padding=True, truncation=True).to("cpu")
26
+ with torch.no_grad():
27
+ outputs = deberta_model(**tokens).last_hidden_state.mean(dim=1).cpu().numpy().astype("float32")
28
+ return outputs
29
+
30
+ # Define the RAG response logic
31
+ def generate_response(user_query):
32
+ query_embedding = generate_embeddings([user_query])
33
+ faiss.normalize_L2(query_embedding)
34
+ distances, indices = index.search(query_embedding, k=5)
35
+ retrieved_docs = [text_data[idx] for idx in indices[0]]
36
+ context = ", ".join(set(retrieved_docs))
37
+
38
+ prompt = f"""
39
+ Using the following product descriptions:
40
+ {context}
41
+
42
+ Carefully craft a well-structured response to the following question:
43
+
44
+ **Question:** {user_query}
45
+
46
+ **Instructions:**
47
+ 1. Incorporate **all** retrieved product descriptions.
48
+ 2. Use a **formal yet engaging** tone.
49
+ 3. Provide **practical & creative** luxury decor ideas.
50
+ 4. Ensure a **cohesive & detailed response.**
51
+
52
+ **Your response:**
53
+ """
54
+
55
+ result = llama_pipeline(prompt, max_length=512, truncation=True, do_sample=True)[0]["generated_text"]
56
+ return result
57
+
58
+ # Gradio UI
59
+ interface = gr.Interface(
60
+ fn=generate_response,
61
+ inputs=gr.Textbox(lines=2, placeholder="Ask a question about luxury home decor..."),
62
+ outputs="text",
63
+ title="Luxury Decor Assistant (RAG)",
64
+ description="Ask your luxury decor questions based on real product descriptions!"
65
+ )
66
+
67
+ interface.launch()
deberta_embeddings.npy ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:7bd48c0b806882c35bacac456c8885e228e2daf5dedf3bb6ee5a29a705fd83ec
3
+ size 87496832
deberta_faiss.index ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a0961f49569103d709230403f8ca053da05fc5d73aebdf8f389a6590c7b01a29
3
+ size 87496749
deberta_text_data.csv ADDED
The diff for this file is too large to render. See raw diff
 
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ gradio
2
+ faiss-cpu
3
+ torch
4
+ transformers
5
+ pandas
6
+ numpy