Este proyecto es un asistente de IA conversacional que responde preguntas sobre mi perfil profesional. Utiliza un enfoque de Generación Aumentada por Recuperación (RAG) para basar sus respuestas en documentos locales como CVs, descripciones de proyectos y otros archivos de texto.
El sistema se compone de varios servicios orquestados a través de Docker, diseñados para ser modulares y eficientes:
-
Ingesta de Datos (
ingestion_flow.py):- Un flujo de Prefect que se encarga de leer documentos desde el directorio local
data_local/. - Utiliza LangChain para cargar y dividir los documentos en fragmentos (
chunks). - Genera embeddings (vectores numéricos) para cada fragmento utilizando el modelo
text-embedding-004de Google Gemini. - Almacena estos vectores en una base de datos vectorial Qdrant.
- Un flujo de Prefect que se encarga de leer documentos desde el directorio local
-
Base de Datos Vectorial (
qdrant):- Una instancia de Qdrant que almacena los vectores de los documentos. Actúa como la "memoria" a largo plazo del sistema, permitiendo búsquedas de similitud semántica.
-
API de RAG (
rag_api.py):- Una API construida con FastAPI que expone un endpoint
/askpara recibir preguntas. - Recibe una consulta, la convierte en un vector y busca los documentos más relevantes en Qdrant.
- Envía la pregunta y los documentos recuperados a un LLM (configurable, por ejemplo, Groq, Google Gemini o OpenAI) para generar una respuesta natural y contextualizada.
- Una API construida con FastAPI que expone un endpoint
-
Panel de Administración (
admin_panel.py):- Una aplicación de Streamlit que proporciona una interfaz gráfica de usuario para interactuar con la API de RAG de forma visual y amigable.
- Backend: Python, FastAPI, LangChain, Prefect, Streamlit
- IA & Machine Learning: Google Generative AI (para Embeddings y LLM), Groq, LangChain
- Base de Datos: Qdrant
- Orquestación: Docker, Docker Compose
- Docker y Docker Compose instalados.
- Git instalado.
- Credenciales de API para los servicios de LLM que desees utilizar (Google, Groq, etc.).
git clone https://github.com/ale-uy/Tu_CV_Chatero.git
cd Tu_CV_ChateroCrea un archivo .env en la raíz del proyecto. Puedes copiar el archivo .env.example como plantilla:
cp .env.example .envAhora, edita el archivo .env y completa las variables con tus propias credenciales y configuraciones. Es crucial que COLLECTION_NAME sea el mismo para la ingesta y la API.
Agrega los archivos (.pdf, .md, .docx, etc.) que conformarán la base de conocimiento de la IA dentro del directorio data_local/ y sus subcarpetas (CV/, proyectos/ y repos/).
El proyecto utiliza perfiles de Docker Compose para separar el entorno principal del proceso de ingesta.
a) Iniciar los servicios principales (API, Qdrant, Admin Panel):
docker-compose up --build -db) Ejecutar la ingesta de datos:
Una vez que los servicios principales estén en funcionamiento, abre otra terminal y ejecuta el perfil de ingesta. Esto procesará los archivos en data_local/ y los cargará en Qdrant.
docker-compose up --profile ingest --buildEste comando iniciará el contenedor ingestor, ejecutará el script ingestion_flow.py y se detendrá una vez completado.
- Accede a la interfaz de Streamlit en tu navegador:
http://localhost:8501
- La API estará disponible en
http://localhost:8000. - Puedes ver tus colecciones Qdrant en
http://localhost:3000/dashboard. - Puedes enviar preguntas al endpoint
/askusandocurlo cualquier cliente HTTP:
curl -X POST "http://localhost:8000/ask" \
-H "Content-Type: application/json" \
-d '{"query": "¿Cuál es tu experiencia con proyectos de Machine Learning?"}'- Consulta la documentación interactiva de la API (generada por FastAPI) en:
http://localhost:8000/docs