adcelis commited on
Commit
b0ab61b
·
verified ·
1 Parent(s): 4760535

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -8
app.py CHANGED
@@ -21,7 +21,7 @@ GEN_MODEL = "google/flan-t5-base"
21
 
22
  CHUNK_SIZE = 800
23
  CHUNK_OVERLAP = 100
24
- TOP_K = 4
25
 
26
  # --------------------------------------------------
27
  # PDF
@@ -76,11 +76,17 @@ def construir_chunks(paginas):
76
  # CARGA DEL SISTEMA
77
  # --------------------------------------------------
78
 
 
79
  descargar_pdf()
 
 
80
  paginas = extraer_paginas(PDF_PATH)
81
  chunk_texts, chunk_meta = construir_chunks(paginas)
82
 
 
83
  embedder = SentenceTransformer(EMBEDDING_MODEL)
 
 
84
  embeddings = embedder.encode(chunk_texts, convert_to_numpy=True, show_progress_bar=False)
85
  embeddings = embeddings.astype("float32")
86
 
@@ -88,6 +94,7 @@ dimension = embeddings.shape[1]
88
  index = faiss.IndexFlatL2(dimension)
89
  index.add(embeddings)
90
 
 
91
  device = 0 if torch.cuda.is_available() else -1
92
  generator = pipeline(
93
  "text2text-generation",
@@ -99,7 +106,7 @@ generator = pipeline(
99
  # RAG
100
  # --------------------------------------------------
101
 
102
- def recuperar_contexto(query, top_k=4):
103
  query_emb = embedder.encode([query], convert_to_numpy=True).astype("float32")
104
  distances, indices = index.search(query_emb, top_k)
105
 
@@ -110,6 +117,7 @@ def recuperar_contexto(query, top_k=4):
110
  "page": chunk_meta[idx]["page"],
111
  "score": float(dist)
112
  })
 
113
  return resultados
114
 
115
  def responder(query):
@@ -141,7 +149,7 @@ Respuesta:
141
  do_sample=False
142
  )
143
 
144
- respuesta = salida[0]["generated_text"]
145
 
146
  fuentes = "\n".join(
147
  [f"Página {r['page']} | score={r['score']:.4f}" for r in resultados]
@@ -158,11 +166,11 @@ Respuesta:
158
  # --------------------------------------------------
159
 
160
  examples = [
161
- ["¿Qué consejos da el documento sobre el desayuno?"],
162
- ["¿Qué dice el documento sobre beber agua?"],
163
- ["¿Qué recomendaciones da sobre frutas, verduras y fibra?"],
164
- ["¿Qué indica el documento sobre la sal y las grasas?"],
165
- ["¿Qué dice el documento sobre la actividad física?"]
166
  ]
167
 
168
  with gr.Blocks() as demo:
 
21
 
22
  CHUNK_SIZE = 800
23
  CHUNK_OVERLAP = 100
24
+ TOP_K = 6
25
 
26
  # --------------------------------------------------
27
  # PDF
 
76
  # CARGA DEL SISTEMA
77
  # --------------------------------------------------
78
 
79
+ print("Descargando PDF...")
80
  descargar_pdf()
81
+
82
+ print("Extrayendo texto del documento...")
83
  paginas = extraer_paginas(PDF_PATH)
84
  chunk_texts, chunk_meta = construir_chunks(paginas)
85
 
86
+ print("Cargando modelo de embeddings...")
87
  embedder = SentenceTransformer(EMBEDDING_MODEL)
88
+
89
+ print("Generando embeddings...")
90
  embeddings = embedder.encode(chunk_texts, convert_to_numpy=True, show_progress_bar=False)
91
  embeddings = embeddings.astype("float32")
92
 
 
94
  index = faiss.IndexFlatL2(dimension)
95
  index.add(embeddings)
96
 
97
+ print("Cargando modelo generativo...")
98
  device = 0 if torch.cuda.is_available() else -1
99
  generator = pipeline(
100
  "text2text-generation",
 
106
  # RAG
107
  # --------------------------------------------------
108
 
109
+ def recuperar_contexto(query, top_k=6):
110
  query_emb = embedder.encode([query], convert_to_numpy=True).astype("float32")
111
  distances, indices = index.search(query_emb, top_k)
112
 
 
117
  "page": chunk_meta[idx]["page"],
118
  "score": float(dist)
119
  })
120
+
121
  return resultados
122
 
123
  def responder(query):
 
149
  do_sample=False
150
  )
151
 
152
+ respuesta = salida[0]["generated_text"].strip()
153
 
154
  fuentes = "\n".join(
155
  [f"Página {r['page']} | score={r['score']:.4f}" for r in resultados]
 
166
  # --------------------------------------------------
167
 
168
  examples = [
169
+ ["Resume qué dice el documento sobre el desayuno."],
170
+ ["Resume qué dice el documento sobre beber agua."],
171
+ ["Explica qué recomendaciones da el documento sobre frutas, verduras y fibra."],
172
+ ["Explica qué dice el documento sobre la sal y las grasas."],
173
+ ["Resume qué dice el documento sobre la actividad física."]
174
  ]
175
 
176
  with gr.Blocks() as demo: