#!/usr/bin/env python3 """Prueba el RAG con los temas recien ingestados de Wikipedia.""" import os, sys, time sys.path.insert(0, "/app/share/newelle") sys.path.insert(0, os.path.expanduser( "~/.var/app/io.github.qwersyk.Newelle/config/pip")) from gi.repository import Gio # noqa: E402 from newelle.handlers.rag.llamaindex_handler import LlamaIndexHanlder # noqa from newelle.handlers.embeddings.model2vec import Model2VecHandler # noqa MODELOS = os.path.expanduser("~/.var/app/io.github.qwersyk.Newelle/config/models") PREGUNTAS = [ "que es la criptografia de curva eliptica", "quien es Richard Stallman y el software libre", "que es el efecto invernadero y el cambio climatico", "que fue la guerra civil espanola", "que es un ataque de denegacion de servicio", ] def main(): settings = Gio.Settings.new("io.github.qwersyk.Newelle") rag = LlamaIndexHanlder(settings, MODELOS) if not rag.is_installed(): print("faltan dependencias del RAG"); return 1 rag.embedding = Model2VecHandler(settings, MODELOS) class SinModelo: def load_model(self, *a, **k): return True rag.llm = SinModelo(); rag.secondary_llm = SinModelo() print("cargando el indice...", flush=True) rag.load_index() for pregunta in PREGUNTAS: print(f"\n### {pregunta}") ini = time.time() try: trozos = rag.get_context(pregunta, []) except Exception as e: print(f" fallo: {e}"); continue ms = (time.time() - ini) * 1000 if not trozos: print(f" sin resultados ({ms:.0f} ms)"); continue print(f" {len(trozos)} trozos en {ms:.0f} ms:") for t in trozos[:2]: resumen = " ".join(str(t).split())[:280] print(f" ยท {resumen}") return 0 if __name__ == "__main__": sys.exit(main())