geronimo-pericoli commited on
Commit
c0baed4
·
verified ·
1 Parent(s): 85c62e9

Update server.py

Browse files
Files changed (1) hide show
  1. server.py +16 -10
server.py CHANGED
@@ -80,7 +80,7 @@ for source, rel_path in SOURCES.items():
80
  storage_path = os.path.join(root, "storage_nodes")
81
  storage_context = StorageContext.from_defaults(persist_dir=storage_path)
82
  index_name = os.path.basename(root)
83
- indices[index_name] = load_index_from_storage(storage_context)
84
  logger.info(f"Índice cargado correctamente: {index_name}")
85
  except Exception as e:
86
  logger.error(f"Error cargando índice {index_name}: {str(e)}", exc_info=True)
@@ -241,7 +241,7 @@ async def list_retrievers(ctx: Context, source: str = None) -> dict:
241
 
242
 
243
 
244
- # Función principal de búsqueda
245
  @mcp.tool()
246
  def retrieve_docs(
247
  query: str,
@@ -255,26 +255,27 @@ def retrieve_docs(
255
  query (str): Texto de búsqueda (requerido)
256
  retrievers (List[str]): Nombres de retrievers a consultar (requerido)
257
  top_k (int): Número de resultados por retriever (opcional, default=3)
258
-
259
- Ejemplo:
260
- retrieve_docs(
261
- query="estándares farmacéuticos",
262
- retrievers=["vec_1", "vec_2"],
263
- top_k=2
264
- )
265
  """
 
 
 
266
  results = {}
267
  invalid = []
268
 
269
  for name in retrievers:
270
  if name not in indices:
 
271
  invalid.append(name)
272
  continue
273
 
274
  try:
 
 
275
  # 1. Obtener el índice y realizar la búsqueda
 
276
  retriever = indices[name].as_retriever(similarity_top_k=top_k)
277
  nodes = retriever.retrieve(query)
 
278
 
279
  # 2. Buscar metadatos COMPLETOS
280
  metadata = {}
@@ -284,8 +285,9 @@ def retrieve_docs(
284
  metadata = indexes[name]
285
  source = src
286
  break
 
287
 
288
- # 3. Construir respuesta para ESTE retriever
289
  results[name] = {
290
  "title": metadata.get("title", name),
291
  "documents": [
@@ -300,8 +302,10 @@ def retrieve_docs(
300
  "source": source,
301
  "last_updated": metadata.get("last_updated", "")
302
  }
 
303
 
304
  except Exception as e:
 
305
  results[name] = {
306
  "error": str(e),
307
  "retriever": name
@@ -315,11 +319,13 @@ def retrieve_docs(
315
  }
316
 
317
  if invalid:
 
318
  response["warnings"] = {
319
  "invalid_retrievers": invalid,
320
  "valid_options": list(indices.keys())
321
  }
322
 
 
323
  return response
324
 
325
 
 
80
  storage_path = os.path.join(root, "storage_nodes")
81
  storage_context = StorageContext.from_defaults(persist_dir=storage_path)
82
  index_name = os.path.basename(root)
83
+ indices[index_name] = load_index_from_storage(storage_context) #, index_id="vector_index"
84
  logger.info(f"Índice cargado correctamente: {index_name}")
85
  except Exception as e:
86
  logger.error(f"Error cargando índice {index_name}: {str(e)}", exc_info=True)
 
241
 
242
 
243
 
244
+ # Función de retrievers
245
  @mcp.tool()
246
  def retrieve_docs(
247
  query: str,
 
255
  query (str): Texto de búsqueda (requerido)
256
  retrievers (List[str]): Nombres de retrievers a consultar (requerido)
257
  top_k (int): Número de resultados por retriever (opcional, default=3)
 
 
 
 
 
 
 
258
  """
259
+ logger.info(f"Iniciando búsqueda para query: '{query}'")
260
+ logger.debug(f"Parámetros - retrievers: {retrievers}, top_k: {top_k}")
261
+
262
  results = {}
263
  invalid = []
264
 
265
  for name in retrievers:
266
  if name not in indices:
267
+ logger.warning(f"Retriever no encontrado: {name}")
268
  invalid.append(name)
269
  continue
270
 
271
  try:
272
+ logger.info(f"Procesando retriever: {name}")
273
+
274
  # 1. Obtener el índice y realizar la búsqueda
275
+ logger.debug(f"Creando retriever para {name} con top_k={top_k}")
276
  retriever = indices[name].as_retriever(similarity_top_k=top_k)
277
  nodes = retriever.retrieve(query)
278
+ logger.info(f"Retrieved {len(nodes)} documentos de {name}")
279
 
280
  # 2. Buscar metadatos COMPLETOS
281
  metadata = {}
 
285
  metadata = indexes[name]
286
  source = src
287
  break
288
+ logger.debug(f"Metadatos encontrados para {name}: {metadata.keys()}")
289
 
290
+ # 3. Construir respuesta
291
  results[name] = {
292
  "title": metadata.get("title", name),
293
  "documents": [
 
302
  "source": source,
303
  "last_updated": metadata.get("last_updated", "")
304
  }
305
+ logger.info(f"Retriever {name} procesado exitosamente")
306
 
307
  except Exception as e:
308
+ logger.error(f"Error procesando retriever {name}: {str(e)}", exc_info=True)
309
  results[name] = {
310
  "error": str(e),
311
  "retriever": name
 
319
  }
320
 
321
  if invalid:
322
+ logger.warning(f"Retrievers inválidos: {invalid}. Opciones válidas: {list(indices.keys())}")
323
  response["warnings"] = {
324
  "invalid_retrievers": invalid,
325
  "valid_options": list(indices.keys())
326
  }
327
 
328
+ logger.info(f"Búsqueda completada. Total resultados: {len(results)}")
329
  return response
330
 
331