Spaces:
Sleeping
Sleeping
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() |