Este proyecto implementa un sistema de Inteligencia Artificial diseñado para actuar como un asesor financiero personal. Utiliza una arquitectura RAG para consultar una base de conocimiento compuesta por 8 libros clásicos de educación financiera y generar respuestas fundamentadas, precisas y con citas directas al autor.
- Procesamiento de Documentos Inteligente: Carga de PDFs con inyección de metadatos (autor, título y tema) para asegurar la trazabilidad de cada consejo financiero.
- Vectorización Acelerada por GPU: Uso de embeddings multilingües (
google/embeddinggemma-300m) ejecutados de manera local optimizando los recursos de hardware (CUDA). - Retrieval Avanzado (Pipeline Híbrido):
- MMR (Maximal Marginal Relevance): Maximiza la diversidad de las fuentes (ej. contrastando las ideas de los diferentes autores).
- Contextual Compression: Un LLM intermedio extrae únicamente la información vital de los fragmentos recuperados, eliminando el ruido ("basura contextual") antes de la inferencia final.
- Generación con Atribución: El modelo de lenguaje responde inyectando las citas exactas de dónde provino la información, evitando alucinaciones y sesgos.
- Framework Core: LangChain
- Modelos de Lenguaje (LLM):
gemini-2.5-flash-liteygemma-3-27b-it(vía Google Generative AI) - Modelos de Embeddings: HuggingFace (
google/embeddinggemma-300m) - Base de Datos Vectorial: ChromaDB (Persistente en almacenamiento local)
- Procesamiento de Texto:
PyPDFLoaderyRecursiveCharacterTextSplitter
Para garantizar la reproducibilidad del proyecto y evitar conflictos con las dependencias (especialmente con librerías de GPU y LangChain), se recomienda usar Conda.
Si tienes Anaconda o Miniconda instalado, puedes recrear el entorno exacto ejecutando:
# Clonar el repositorio
git clone <URL_DE_TU_REPOSITORIO>
# Crear el entorno a partir del archivo YAML
conda env create -f environment.yml
# Activar el entorno
conda activate Financial_advisorSi prefieres usar entornos virtuales de Python estándar (venv):
# Crear y activar el entorno virtual
python -m venv env
source env/bin/activate # En Windows usa: env\Scripts\activate
# Instalar dependencias
pip install -r requirements.txt[!warning] Advertencia: Variables de entorno Necesitarás una API Key de Google (Google AI Studio) para usar los modelos de generación.
- Ingesta (Document Loading & Splitting): Los 8 libros se leen, se les asignan metadatos y se dividen en chunks de 1200 caracteres con un overlap de 200 caracteres para no perder contexto.
- Base Vectorial (ChromaDB): Los fragmentos se transforman en vectores de 768 dimensiones y se almacenan localmente en el directorio
./db/vectorial-db/para evitar el re-procesamiento continuo. - Recuperación (Retrieval):
- Búsqueda inicial de los 25 fragmentos más relevantes (
fetch_k=25). - Filtrado MMR para seleccionar los 4 más diversos (
k=4). - Compresión contextual (
LLMChainExtractor) para limpiar los textos.
- Búsqueda inicial de los 25 fragmentos más relevantes (
- Respuesta (Question Answering): La consulta del usuario y el contexto comprimido se envían al LLM final usando LCEL (
ChatPromptTemplate | model | StrOutputParser) asegurando la cita de fuentes.
Una vez configurado el entorno y la API Key, el proyecto se puede ejecutar de manera secuencial usando Jupyter Notebooks:
# Ejemplo de consulta al Asesor Financiero
query = "¿Cuáles son los pasos a seguir para empezar a invertir?"
# El sistema recuperará el contexto comprimido y generará la respuesta
retrievedDocs = compressedRetriever.invoke(query)
reference = format_docs(retrievedDocs)
answer = chain.invoke({
"query": query,
"reference": reference,
})
print(answer)