File size: 3,646 Bytes
38f8736
6c05acd
317cf3c
 
0deea66
652437c
0deea66
 
 
db5c016
0deea66
db5c016
 
 
49bedec
0deea66
 
db5c016
 
 
 
49bedec
 
 
 
0deea66
 
db5c016
0deea66
db5c016
49bedec
0deea66
db5c016
 
49bedec
 
0deea66
49bedec
db5c016
0deea66
db5c016
49bedec
0deea66
49bedec
 
 
 
 
db5c016
 
0deea66
0cea8e5
 
3818f5a
0cea8e5
db5c016
 
3818f5a
0cea8e5
 
 
 
b474dc5
0cea8e5
 
 
b474dc5
0cea8e5
 
56adc9e
3d3f8f8
0cea8e5
 
 
3d3f8f8
3818f5a
0cea8e5
3d3f8f8
0cea8e5
 
ed1dd60
0cea8e5
 
 
 
 
 
3818f5a
 
0cea8e5
ed1dd60
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91

import gradio as gr
from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import HuggingFaceEmbeddings
import zipfile
import os

# Percorsi per il primo file ZIP
zip_path_m = "faiss_manual_index.zip"  # File ZIP per l'indice manuale
faiss_manual_index = "faiss_manual_index"  # Sottocartella per estrazione manuale

# Controlla se la directory esiste già
if not os.path.exists(faiss_manual_index):
    os.makedirs(faiss_manual_index)  # Crea la directory

# Percorsi per il secondo file ZIP
zip_path_p = "faiss_problems_index.zip"  # File ZIP per l'indice problemi
faiss_problems_index = "faiss_problems_index"  # Sottocartella per estrazione problemi

# Controlla se la directory esiste già
if not os.path.exists(faiss_problems_index):
    os.makedirs(faiss_problems_index)  # Crea la directory

# Controlla i file presenti nella cartella faiss_manual_index prima dell'estrazione
print(f"Contenuto della directory {faiss_manual_index} prima dell'estrazione:", os.listdir(faiss_manual_index))

# Estrai il primo file ZIP se non esiste già
if os.path.exists(zip_path_m):  # Controlla che il file zip esista
    with zipfile.ZipFile(zip_path_m, 'r') as zip_ref:
        zip_ref.extractall(faiss_manual_index)
    print(f"Files estratti nella directory: {faiss_manual_index}")
else:
    print(f"File {zip_path_m} non trovato. Assicurati di caricarlo nello Space.")

# Verifica di nuovo il contenuto della cartella faiss_manual_index dopo l'estrazione
print(f"Contenuto della directory {faiss_manual_index} dopo l'estrazione:", os.listdir(faiss_manual_index))

# Estrai il secondo file ZIP se non esiste già
if os.path.exists(zip_path_p):  # Controlla che il file zip esista
    with zipfile.ZipFile(zip_path_p, 'r') as zip_ref:
        zip_ref.extractall(faiss_problems_index)
    print(f"Files estratti nella directory: {faiss_problems_index}")
else:
    print(f"File {zip_path_p} non trovato. Assicurati di caricarlo nello Space.")

# Verifica di nuovo il contenuto della cartella faiss_problems_index dopo l'estrazione
print(f"Contenuto della directory {faiss_problems_index} dopo l'estrazione:", os.listdir(faiss_problems_index))

   


# Carica il modello di embedding
embedding_model = HuggingFaceEmbeddings(model_name="sentence-transformers/LaBSE")

# Carica i vectorstore FAISS salvati
manual_vectorstore = FAISS.load_local(faiss_manual_index, embedding_model, allow_dangerous_deserialization=True)
problems_vectorstore = FAISS.load_local(faiss_problems_index, embedding_model, allow_dangerous_deserialization=True)

def search_query(query):
    # Cerca nei manuali
    manual_results = manual_vectorstore.similarity_search(query, k=2)
    manual_output = "\n\n".join([doc.page_content for doc in manual_results])

    # Cerca nei problemi
    problems_results = problems_vectorstore.similarity_search(query, k=2)
    problems_output = "\n\n".join([doc.page_content for doc in problems_results])

    # Restituisce i risultati come output diviso
    return manual_output, problems_output
    
examples = [
    ["How to change the knife?"],
    ["What are the safety precautions for using the machine?"],
    ["How can I get help with the machine?"]
]

# Interfaccia Gradio
iface = gr.Interface(
    fn=search_query,
   inputs=gr.Textbox(lines=2, placeholder="Enter your question here..."),
    outputs=[
    gr.Textbox(label="Manual Results"),
    gr.Textbox(label="Issues Results")
],
    examples=examples, 
     title="Manual Querying System",
    description="Enter a question to get relevant information extracted from the manual and the most common related issues."
)

# Avvia l'app
iface.launch()