Chatbot con RAG – Reglamento de Admisión
Producto desplegado en la nube que utiliza RAG con LangChain y Ollama para responder consultas sobre admisión. Enfocado en recuperación semántica con interfaz gráfica.
Funcionalidades Clave
- Respuestas rápidas y precisas basadas en documentos oficiales.
- Interfaz gráfica intuitiva para usuarios finales.
- Despliegue en la nube para acceso global.
Diagrama de Arquitectura
Diagrama inicial del flujo de datos y componentes del sistema RAG.
Fragmento de Código Destacado
Este fragmento en Python muestra la inicialización de la cadena de QA (Question-Answering) con LangChain, el núcleo del sistema RAG.
from langchain.chains import RetrievalQA
from langchain.llms import Ollama
from langchain.vectorstores import FAISS
# Cargar el vectorstore previamente creado
vectorstore = FAISS.load_local("faiss_index_admision")
# Inicializar el modelo de lenguaje local con Ollama
llm = Ollama(model="llama2")
# Crear la cadena de Retrieval QA
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=vectorstore.as_retriever()
)
Resumen del Proyecto: Asistente RAG para Admisión Universitaria
El proyecto es un sistema de Asistente Virtual Inteligente diseñado para guiar a los postulantes durante el proceso de admisión de la Universidad Nacional de Moquegua (UNAM). Su objetivo principal es responder de manera precisa y amigable a las preguntas de los usuarios sobre requisitos, fechas, costos, carreras, vacantes y otros detalles del proceso, utilizando como base de conocimiento los documentos oficiales de admisión.
Funcionalidad y Arquitectura
El sistema está construido con una arquitectura cliente-servidor desacoplada:
- Backend (Servidor): Desarrollado en Python con el framework FastAPI. Es el cerebro de la aplicación y se encarga de la lógica de Recuperación Aumentada por Generación (RAG).
- Frontend (Cliente): Una aplicación de página única (SPA) desarrollada con React, que proporciona la interfaz de chat con la que interactúa el usuario.
Implementación Detallada
El flujo de trabajo es el siguiente:
- El usuario envía una pregunta a través de la interfaz de chat del frontend.
- El frontend envía la pregunta al endpoint
/chatdel backend de FastAPI. - El backend utiliza un modelo de embeddings (Google embedding-001) para convertir la pregunta en un vector numérico.
- Este vector se usa para buscar los fragmentos de texto más relevantes en una base de datos vectorial ChromaDB.
- Los fragmentos de texto recuperados se insertan en un prompt cuidadosamente diseñado junto con la pregunta original y el historial de la conversación.
- Este prompt completo se envía a un Modelo de Lenguaje Grande (LLM), específicamente Google Gemini Pro, para generar una respuesta coherente y contextualizada.
- La respuesta generada se devuelve al frontend en tiempo real (vía streaming) y se muestra al usuario en la interfaz de chat.
Tecnologías Utilizadas
- Backend: Python 3, FastAPI, LlamaIndex, ChromaDB, Google Gemini Pro, Google embedding-001, Uvicorn.
- Frontend: React, JavaScript (JSX), Vite, Tailwind CSS, React Icons.
- Control de Versiones: Git.