Este proyecto implementa un chatbot basado en RAG (Retrieval-Augmented Generation), que combina documentos PDF con un modelo de lenguaje para responder consultas de manera contextualizada. Utiliza Pinecone como vector store(escalable y cloud free) y Ollama como modelo de embeddings y LLM base se usa LLAMA3 y alternativamente gpt-4.1-mini
- Indexación de documentos PDF para búsqueda semántica.
- Uso de Pinecone como vector database serverless.
- Creación de embeddings con OllamaEmbeddings.
- Generación de respuestas mediante ChatOllama.
- Interfaz interactiva con Gradio.
- Soporte para prompts personalizados.
- Python 3.10+
- Pinecone — Vector database para búsqueda semántica.
- LangChain — Framework para LLMs y RAG.
- Ollama — Embeddings y chat models.
- PyMuPDF — Lectura y procesamiento de PDFs.
- Gradio — Interfaz web interactiva.
- Librerías estándar:
os,re.
El proyecto utiliza las siguientes librerías y versiones (según tu entorno llm_env):
| Librería | Versión |
|---|---|
| langchain | 0.1.16 |
| langchain-classic | 1.0.0 |
| langchain-community | 0.0.32 |
| langchain-core | 0.2.43 |
| langchain-ollama | 1.0.0 |
| langchain-pinecone | 0.0.3 |
| langchain-tests | 0.3.15 |
| langchain-text-splitters | 0.0.2 |
| pinecone-client | 5.4.2 |
| PyMuPDF (fitz) | 1.25.4 |
| gradio | 5.22.0 |
Se recomienda usar estas versiones exactas en un entorno virtual para asegurar compatibilidad.
- Crea una cuenta en Pinecone.
- Obtén tu API Key y guárdala en tu entorno:(usado en codigo, para fines demostrativos)
export PINECONE_API_KEY="tu_api_key"
Para ejecutar el chatbot, usa el siguiente comando:
source /home/wilderd/anaconda3/bin/activate
conda activate llm_env
python main.py # chatbot llama3 free online local with ollama
python main_gpt.py # chatbot con api key chatg-gpt-4.1-miniDurante el desarrollo del prototipo RAG, utilicé ChatGPT para apoyar varias tareas técnicas y asegurar calidad en el código:
-
Instalación y ambiente virtual:
Sugerencias de comandos para crear el entorno Conda e instalar librerías sin conflictos de versiones. -
Depuración y compatibilidad:
Identificación de errores, optimización de fragmentos de código y aseguramiento de funcionamiento correcto. -
Corrección de código:
Actualización de sintaxis y métodos según versiones recientes de librerías, mejorando legibilidad y estabilidad. -
Decisiones técnicas:
Asistencia para integrar Pinecone en lugar de FAISS y construir la lógica de recuperación y generación de respuestas. -
Mejora del prompting:
ChatGPT ayudó a refinar prompts, incluyendo ejemplos claros para optimizar la generación de respuestas basadas en los documentos.