AshenClock commited on
Commit
964c6d4
·
verified ·
1 Parent(s): 2ecaeb3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +10 -10
app.py CHANGED
@@ -81,17 +81,17 @@ def create_faiss_index(documents_file: str, index_file: str, embedding_model_ins
81
  document = json.load(f)
82
  lines = document['lines']
83
  logger.info(f"{len(lines)} linee caricate da {documents_file}.")
84
-
85
  # Genera embedding
86
  embeddings = embedding_model_instance.encode(lines, convert_to_numpy=True, show_progress_bar=True)
87
  logger.info("Embedding generati con SentenceTransformer.")
88
-
89
  # Crea l'indice FAISS
90
  dimension = embeddings.shape[1]
91
  index = faiss.IndexFlatL2(dimension)
92
  index.add(embeddings)
93
  logger.info(f"Indice FAISS creato con dimensione: {dimension}.")
94
-
95
  # Salva l'indice
96
  faiss.write_index(index, index_file)
97
  logger.info(f"Indice FAISS salvato in {index_file}.")
@@ -142,23 +142,23 @@ def retrieve_relevant_lines(query: str, top_k: int = 5, embedding_model_instance
142
  document = json.load(f)
143
  lines = document['lines']
144
  logger.info(f"{len(lines)} linee caricate da {DOCUMENTS_FILE}.")
145
-
146
  # Carica l'indice FAISS
147
  index = faiss.read_index(FAISS_INDEX_FILE)
148
  logger.info(f"Indice FAISS caricato da {FAISS_INDEX_FILE}.")
149
-
150
  # Genera embedding della query
151
  if embedding_model_instance is None:
152
  embedding_model_instance = SentenceTransformer('all-MiniLM-L6-v2')
153
  logger.info("Modello SentenceTransformer caricato per l'embedding della query.")
154
-
155
  query_embedding = embedding_model_instance.encode([query], convert_to_numpy=True)
156
  logger.info("Embedding della query generati.")
157
-
158
  # Ricerca nell'indice
159
  distances, indices = index.search(query_embedding, top_k)
160
  logger.info(f"Ricerca FAISS completata. Risultati ottenuti: {len(indices[0])}")
161
-
162
  # Recupera le linee rilevanti
163
  relevant_texts = [lines[idx] for idx in indices[0] if idx < len(lines)]
164
  retrieved_docs = "\n".join(relevant_texts)
@@ -188,10 +188,10 @@ Sei un assistente museale esperto in ontologie RDF. Utilizza le informazioni for
188
  4) Se la domanda è generica (tipo 'Ciao, come stai?'), rispondi brevemente.
189
  5) Se trovi risultati, la risposta finale deve essere la query SPARQL (una sola riga).
190
  6) Se non trovi nulla, rispondi con 'Nessuna info.'
191
- 7) Non multiline. Esempio: PREFIX base: <...> SELECT ?x WHERE { ... }.
192
  Esempio:
193
  Utente: Chi ha creato l'opera 'Amore e Psiche'?
194
- Risposta: PREFIX base: <http://www.semanticweb.org/lucreziamosca/ontologies/progettoMuseo#> SELECT ?creatore WHERE { ?opera base:hasName "Amore e Psiche" . ?opera base:creatoDa ?creatore . }
195
  ### FINE REGOLE ###
196
 
197
  ### Conversazione ###
 
81
  document = json.load(f)
82
  lines = document['lines']
83
  logger.info(f"{len(lines)} linee caricate da {documents_file}.")
84
+
85
  # Genera embedding
86
  embeddings = embedding_model_instance.encode(lines, convert_to_numpy=True, show_progress_bar=True)
87
  logger.info("Embedding generati con SentenceTransformer.")
88
+
89
  # Crea l'indice FAISS
90
  dimension = embeddings.shape[1]
91
  index = faiss.IndexFlatL2(dimension)
92
  index.add(embeddings)
93
  logger.info(f"Indice FAISS creato con dimensione: {dimension}.")
94
+
95
  # Salva l'indice
96
  faiss.write_index(index, index_file)
97
  logger.info(f"Indice FAISS salvato in {index_file}.")
 
142
  document = json.load(f)
143
  lines = document['lines']
144
  logger.info(f"{len(lines)} linee caricate da {DOCUMENTS_FILE}.")
145
+
146
  # Carica l'indice FAISS
147
  index = faiss.read_index(FAISS_INDEX_FILE)
148
  logger.info(f"Indice FAISS caricato da {FAISS_INDEX_FILE}.")
149
+
150
  # Genera embedding della query
151
  if embedding_model_instance is None:
152
  embedding_model_instance = SentenceTransformer('all-MiniLM-L6-v2')
153
  logger.info("Modello SentenceTransformer caricato per l'embedding della query.")
154
+
155
  query_embedding = embedding_model_instance.encode([query], convert_to_numpy=True)
156
  logger.info("Embedding della query generati.")
157
+
158
  # Ricerca nell'indice
159
  distances, indices = index.search(query_embedding, top_k)
160
  logger.info(f"Ricerca FAISS completata. Risultati ottenuti: {len(indices[0])}")
161
+
162
  # Recupera le linee rilevanti
163
  relevant_texts = [lines[idx] for idx in indices[0] if idx < len(lines)]
164
  retrieved_docs = "\n".join(relevant_texts)
 
188
  4) Se la domanda è generica (tipo 'Ciao, come stai?'), rispondi brevemente.
189
  5) Se trovi risultati, la risposta finale deve essere la query SPARQL (una sola riga).
190
  6) Se non trovi nulla, rispondi con 'Nessuna info.'
191
+ 7) Non multiline. Esempio: PREFIX base: <...> SELECT ?x WHERE {{ ... }}.
192
  Esempio:
193
  Utente: Chi ha creato l'opera 'Amore e Psiche'?
194
+ Risposta: PREFIX base: <http://www.semanticweb.org/lucreziamosca/ontologies/progettoMuseo#> SELECT ?creatore WHERE {{ ?opera base:hasName "Amore e Psiche" . ?opera base:creatoDa ?creatore . }}
195
  ### FINE REGOLE ###
196
 
197
  ### Conversazione ###