Respuestas genéricas
Sin un corpus específico, la IA mezcla información general y no se ajusta al marco teórico del usuario ni a las fuentes que sustentan su investigación.
El proyecto combina una arquitectura RAG con chunking optimizado, embeddings multilingües y un modelo de lenguaje servido en local. Cada decisión apunta al mismo objetivo: respuestas precisas, verificables y apoyadas en bibliografía del usuario.
Los modelos generales de IA producen respuestas extensas y fluidas, pero no siempre verificables. En procesos de investigación, esta limitación se vuelve crítica.
Sin un corpus específico, la IA mezcla información general y no se ajusta al marco teórico del usuario ni a las fuentes que sustentan su investigación.
El modelo puede generar datos, citas o referencias que suenan correctos pero no existen. En contexto académico, esto compromete la integridad del trabajo.
No es posible volver al documento original para verificar la información ni citarla con propiedad académica. La respuesta queda desconectada de su fuente.
Retrieval-Augmented Generation. El sistema no responde desde el conocimiento previo del modelo: primero recupera fragmentos relevantes de la bibliografía cargada y luego genera la respuesta apoyándose en ese contexto.
Los PDFs del corpus se procesan con pypdf y LangChain. El texto extraído se segmenta usando RecursiveCharacterTextSplitter, que respeta la estructura de párrafos y secciones del documento original.
Cada documento se divide en fragmentos (chunks). El tamaño es clave: si son muy grandes pierden foco; si son muy chicos pierden contexto. Optimizar este equilibrio impacta directamente en la calidad de la recuperación.
Cada chunk se representa como un vector semántico usando paraphrase-multilingual-MiniLM-L12-v2, un modelo bilingüe español-inglés. Los vectores se almacenan en Qdrant, una base vectorial que corre en local.
Cuando el usuario pregunta algo, el sistema busca los chunks más cercanos al sentido semántico de la consulta, no solo a las palabras exactas. Esto permite encontrar pasajes relevantes aunque usen vocabulario distinto al de la pregunta.
El modelo Mistral 7B, servido vía Ollama, recibe la consulta del usuario junto con los chunks recuperados y formula la respuesta usando solo esa información como contexto.
Cada respuesta muestra los fragmentos exactos que la sustentan. El usuario puede volver al documento original, verificar el contexto y citar con propiedad académica.
El chunking no es un detalle técnico: es lo que determina si el sistema recupera información útil o irrelevante.
Chunks demasiado grandes incluyen ruido: el modelo recibe varios temas mezclados y no puede focalizar la respuesta. Chunks demasiado pequeños pierden el contexto: un párrafo aislado puede ser ambiguo sin las oraciones que lo rodean.
El sistema no parte arbitrariamente por número de caracteres: usa segmentación recursiva que prioriza saltos naturales (párrafos, oraciones), y solo cuando no encuentra estos, recurre al corte por longitud máxima.
Durante el desarrollo se ajustó la ventana de contexto del modelo a 8192 tokens y se aumentó la cantidad de chunks recuperados de 5 a 8, lo que mejoró notablemente la coherencia de las respuestas.
Se incorporó un score mínimo para descartar fragmentos poco pertinentes antes de enviarlos al modelo. Las respuestas se apoyan solo en chunks con alta similitud semántica respecto a la consulta.
FuentIA corre íntegramente offline, sin depender de APIs externas. Esta decisión tiene tres dimensiones: técnica, pedagógica y ética.
El sistema no depende de conectividad ni de servicios de terceros. Funciona en cualquier máquina con recursos mínimos para ejecutar Ollama y Qdrant.
El usuario carga su propio corpus y decide qué fuentes usar. El sistema se adapta al marco teórico de cada investigación, no al revés.
Los documentos académicos no salen del entorno local. El capital intelectual del investigador y los materiales en proceso quedan protegidos.
El sistema no se construyó con una sola instrucción al modelo. A lo largo del desarrollo, el prompt fue refinándose en seis iteraciones documentadas.
El prompt inicial era simple: "usá únicamente esta información para responder". Las iteraciones siguientes especificaron rol del modelo, idioma de salida, tratamiento de fuentes y respuesta segura cuando la información no estaba en el corpus.
La versión final incluye: "Basate ÚNICAMENTE en el contexto proporcionado. Si la información no está, decí: no encontré información sobre eso en los documentos". Esta restricción reduce drásticamente las alucinaciones.
Las pruebas mostraron que no solo el prompt general importa: la formulación de la consulta del usuario también afecta la recuperación. Una pregunta clara y delimitada recupera chunks más pertinentes.
Una iteración importante fue corregir cómo se mostraban las fuentes en la interfaz. La trazabilidad no se declara: se construye visualmente, donde el usuario pueda hacer clic y verificar.
Una herramienta de consulta bibliográfica que combina automatización con rigor académico.
El método de FuentIA muestra que no alcanza con usar un modelo de lenguaje: también es necesario trabajar sobre la calidad de la ingesta, la segmentación, la recuperación de contexto, la formulación de prompts y la visualización transparente de fuentes. El valor del sistema no está en producir textos extensos, sino en asistir de manera más controlada y verificable el trabajo de investigación, reduciendo alucinaciones y priorizando la bibliografía acotada que el usuario decide cargar.