Files

1 line
12 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{"repo": "cayetano108/inversia", "files": {"README.md": {"bbb19ded9fd0b141015c1c38e108f218859367a5": {"t": 1785747269.412579, "n": 5583, "h": "71acbf1ddd01ae63", "c": "\n# 📈 inversIA – Asistente de Educación Financiera basado en RAG\n\n> **Nota:** este repositorio recoge el código del proyecto con fines de consulta y documentación del trabajo realizado. No es funcional de forma autónoma: requiere el corpus documental y el índice vectorial FAISS, que no se incluyen aquí. La versión desplegada está disponible en HuggingFace Spaces.\n\nAsistente conversacional de educación financiera para particulares, desarrollado como Trabajo de Fin de Máster del **Máster Universitario en Ciencia de Datos** de la **Universitat de València** (curso 2025–2026).\n\n> **Autor:** Cayetano Fernando Romero Monteagudo \n> **Tutor:** Arturo Sirvent Fresneda \n> **Título del TFM:** *Diseño y Evaluación de Asistente Financiero basado en Retrieval Augmented Generation (RAG)*\n\n---\n\n## ¿Qué es inversIA?\n\ninversIA es un asistente conversacional que combina un grafo de estados construido con **LangGraph** y un pipeline **RAG** (Retrieval-Augmented Generation) para responder preguntas de educación financiera en español. A diferencia de un LLM de propósito general, el sistema fundamenta sus respuestas en un corpus curado y verificado, filtra los fragmentos recuperados mediante un juez de relevancia y valida la respuesta generada antes de devolverla al usuario.\n\nEl sistema está pensado para cubrir conceptos como fondos indexados, ETFs, planes de pensiones, interés compuesto, diversificación, fiscalidad básica española (IRPF) y errores comunes del inversor particular.\n\n> ⚠️ **inversIA tiene fines exclusivamente educativos.** Las respuestas no constituyen asesoramiento financiero personalizado en el sentido del artículo 4 de la Directiva MiFID II. Para decisiones de inversión reales, consulta a un profesional autorizado por la CNMV.\n\n---\n\n## Arquitectura\n\nEl pipeline se implementa como un grafo de estados de 8 nodos sobre LangGraph:\n\n```\nPregunta → Expansión → Enrutador ──► Recuperación FAISS\n │ │\n │ Juez de relevancia\n │ │\n │ Enriquecimiento (yfinance)\n │ │\n │ Generación\n │ │\n └──► Redirección Validación doble\n │\n Respuesta\n```\n\n| Nodo | Función |\n|------|---------|\n| `augment` | Enriquece la pregunta con contexto financiero y el historial reciente |\n| `route_question` | Clasifica la pregunta como dentro/fuera del dominio |\n| `retrieve` | Recupera los *k=6* fragmentos más relevantes del índice FAISS |\n| `grade_documents` | Filtra los fragmentos no relevantes para la pregunta |\n| `enrich` | Incorpora datos de mercado en tiempo real vía yfinance (*tool calling*) |\n| `generate` | Genera la respuesta usando el contexto recuperado |\n| `check` | Verifica ausencia de alucinaciones y adecuación de la respuesta |\n| `redirect` | Redirige preguntas fuera del dominio con una respuesta alternativa |\n\n---\n\n## Corpus y vectorstore\n\nEl corpus está compuesto por libros de referencia sobre inversión a largo plazo y gestión pasiva (Bogle, Bernstein, Graham, Housel, Paramés, Larimore et al.) junto con 17 guías divulgativas de la CNMV sobre fondos, ETFs, fiscalidad, protección del inversor y fraudes financieros.\n\nLos documentos se segmentan en fragmentos de 500 tokens (solapamiento 50) y se vectorizan con `text-embedding-3-large` de OpenAI, produciendo un índice FAISS de **2.496 vectores**. Cada fragmento incluye un resumen generado con DeepSeek en el campo de metadatos para mejorar la precisión del retrieval.\n\n---\n\n## Stack tecnológico\n\n| Componente | Librería |\n|-----------|----------|\n| Grafo de estados | `langgraph ≥ 0.4` |\n| Integración LLM | `langchain ≥ 0.3`, `langchain-deepseek`, `langchain-openai` |\n| Vectorstore | `faiss-cpu ≥ 1.7.4` |\n| Embeddings | `text-embedding-3-large` (OpenAI) |\n| Modelo generador principal | `deepseek-chat` (DeepSeek) |\n| Datos de mercado | `yfinance ≥ 0.2.40` |\n| Interfaz conversacional | `chainlit ≥ 2.0` |\n\n---\n\n## Evaluación\n\nEl sistema fue evaluado con métricas RAGAS sobre 28 preguntas estratificadas (simples, multiconcepto, comparativas, adversariales y fuera de alcance), comparando 9 configuraciones: 3 variantes del pipeline (RAG-FULL, RAG-LITE, NO-RAG) × 3 modelos generadores (GPT-3.5-turbo, DeepSeek Chat, GPT-4o).\n\n**Resultados destacados (configuraciones RAG-FULL):**\n\n| Modelo | Faithfulness | Answer Relevancy | Coste/consulta |\n|--------|-------------|-----------------|----------------|\n| GPT-3.5-turbo | 0,803 | 0,693 | $0,001773 |\n| DeepSeek Chat | 0,893 | 0,741 | $0,000960 |\n| GPT-4o | 0,905 | 0,794 | $0,010021 |\n\nDeepSeek ofrece una fidelidad prácticamente equivalente a GPT-4o a menos de una décima parte del coste, posicionándose como la opción más equilibrada para un despliegue productivo. El nodo de evaluación de documentos concentra cerca del 50% de la latencia total en todas las configuraciones RAG-FULL.\n\n---\n\n## Variables de entorno requeridas\n\nEl sistema utiliza las siguientes claves API, configuradas como *secrets* en HuggingFace:\n\n- `DEEPSEEK_API_KEY` — modelos Deepseek\n- `OPENAI_API_KEY_EMBEDDING` — para modelos de openAI y embedding (`text-embedding-3-large`)\n\n---\n\n## Privacidad\n\nEl historial de conversación se mantiene únicamente en memoria durante la sesión activa y se descarta al cerrarla. No se almacenan datos personales entre sesiones, simplificando el cumplimiento del RGPD.\n\n"}, "dc943cc478facc92702f011a5111130574c35b1e": {"t": 1785772036.257836, "n": 5673, "h": "0feb2527751438e2", "c": "---\ntitle: InversIA\nemoji: 📈\ncolorFrom: green\ncolorTo: blue\nsdk: docker\npinned: false\n---\n\n# 📈 inversIA – Asistente de Educación Financiera basado en RAG\n\n> **Nota:** este repositorio recoge el código del proyecto con fines de consulta y documentación del trabajo realizado. No es funcional de forma autónoma: requiere el corpus documental y el índice vectorial FAISS, que no se incluyen aquí. La versión desplegada está disponible en HuggingFace Spaces.\n\nAsistente conversacional de educación financiera para particulares, desarrollado como Trabajo de Fin de Máster del **Máster Universitario en Ciencia de Datos** de la **Universitat de València** (curso 2025–2026).\n\n> **Autor:** Cayetano Fernando Romero Monteagudo \n> **Tutor:** Arturo Sirvent Fresneda \n> **Título del TFM:** *Diseño y Evaluación de Asistente Financiero basado en Retrieval Augmented Generation (RAG)*\n\n---\n\n## ¿Qué es inversIA?\n\ninversIA es un asistente conversacional que combina un grafo de estados construido con **LangGraph** y un pipeline **RAG** (Retrieval-Augmented Generation) para responder preguntas de educación financiera en español. A diferencia de un LLM de propósito general, el sistema fundamenta sus respuestas en un corpus curado y verificado, filtra los fragmentos recuperados mediante un juez de relevancia y valida la respuesta generada antes de devolverla al usuario.\n\nEl sistema está pensado para cubrir conceptos como fondos indexados, ETFs, planes de pensiones, interés compuesto, diversificación, fiscalidad básica española (IRPF) y errores comunes del inversor particular.\n\n> ⚠️ **inversIA tiene fines exclusivamente educativos.** Las respuestas no constituyen asesoramiento financiero personalizado en el sentido del artículo 4 de la Directiva MiFID II. Para decisiones de inversión reales, consulta a un profesional autorizado por la CNMV.\n\n---\n\n## Arquitectura\n\nEl pipeline se implementa como un grafo de estados de 8 nodos sobre LangGraph:\n\n```\nPregunta → Expansión → Enrutador ──► Recuperación FAISS\n │ │\n │ Juez de relevancia\n │ │\n │ Enriquecimiento (yfinance)\n │ │\n │ Generación\n │ │\n └──► Redirección Validación doble\n │\n Respuesta\n```\n\n| Nodo | Función |\n|------|---------|\n| `augment` | Enriquece la pregunta con contexto financiero y el historial reciente |\n| `route_question` | Clasifica la pregunta como dentro/fuera del dominio |\n| `retrieve` | Recupera los *k=6* fragmentos más relevantes del índice FAISS |\n| `grade_documents` | Filtra los fragmentos no relevantes para la pregunta |\n| `enrich` | Incorpora datos de mercado en tiempo real vía yfinance (*tool calling*) |\n| `generate` | Genera la respuesta usando el contexto recuperado |\n| `check` | Verifica ausencia de alucinaciones y adecuación de la respuesta |\n| `redirect` | Redirige preguntas fuera del dominio con una respuesta alternativa |\n\n---\n\n## Corpus y vectorstore\n\nEl corpus está compuesto por libros de referencia sobre inversión a largo plazo y gestión pasiva (Bogle, Bernstein, Graham, Housel, Paramés, Larimore et al.) junto con 17 guías divulgativas de la CNMV sobre fondos, ETFs, fiscalidad, protección del inversor y fraudes financieros.\n\nLos documentos se segmentan en fragmentos de 500 tokens (solapamiento 50) y se vectorizan con `text-embedding-3-large` de OpenAI, produciendo un índice FAISS de **2.496 vectores**. Cada fragmento incluye un resumen generado con DeepSeek en el campo de metadatos para mejorar la precisión del retrieval.\n\n---\n\n## Stack tecnológico\n\n| Componente | Librería |\n|-----------|----------|\n| Grafo de estados | `langgraph ≥ 0.4` |\n| Integración LLM | `langchain ≥ 0.3`, `langchain-deepseek`, `langchain-openai` |\n| Vectorstore | `faiss-cpu ≥ 1.7.4` |\n| Embeddings | `text-embedding-3-large` (OpenAI) |\n| Modelo generador principal | `deepseek-chat` (DeepSeek) |\n| Datos de mercado | `yfinance ≥ 0.2.40` |\n| Interfaz conversacional | `chainlit ≥ 2.0` |\n\n---\n\n## Evaluación\n\nEl sistema fue evaluado con métricas RAGAS sobre 28 preguntas estratificadas (simples, multiconcepto, comparativas, adversariales y fuera de alcance), comparando 9 configuraciones: 3 variantes del pipeline (RAG-FULL, RAG-LITE, NO-RAG) × 3 modelos generadores (GPT-3.5-turbo, DeepSeek Chat, GPT-4o).\n\n**Resultados destacados (configuraciones RAG-FULL):**\n\n| Modelo | Faithfulness | Answer Relevancy | Coste/consulta |\n|--------|-------------|-----------------|----------------|\n| GPT-3.5-turbo | 0,803 | 0,693 | $0,001773 |\n| DeepSeek Chat | 0,893 | 0,741 | $0,000960 |\n| GPT-4o | 0,905 | 0,794 | $0,010021 |\n\nDeepSeek ofrece una fidelidad prácticamente equivalente a GPT-4o a menos de una décima parte del coste, posicionándose como la opción más equilibrada para un despliegue productivo. El nodo de evaluación de documentos concentra cerca del 50% de la latencia total en todas las configuraciones RAG-FULL.\n\n---\n\n## Variables de entorno requeridas\n\nEl sistema utiliza las siguientes claves API, configuradas como *secrets* en HuggingFace:\n\n- `DEEPSEEK_API_KEY` — modelos Deepseek\n- `OPENAI_API_KEY_EMBEDDING` — para modelos de openAI y embedding (`text-embedding-3-large`)\n\n---\n\n## Privacidad\n\nEl historial de conversación se mantiene únicamente en memoria durante la sesión activa y se descarta al cerrarla. No se almacenan datos personales entre sesiones, simplificando el cumplimiento del RGPD.\n\n"}, "47ae277f9cc3a876110d5079f6278369979ea668": {"t": 1785772039.0983953, "n": 30, "h": "b445ac0429ed9092", "c": "# inversIA\nTFM - inversIA app\n"}}}}