Curso de Chatbots - Implementaciones RAG
Teaches RAG through four Python implementations that load documents, generate embeddings, and answer queries using OpenAI or local models.
What this file does
Teaches RAG through four Python implementations that load documents, generate embeddings, and answer queries using OpenAI or local models.
When to use it
- Learning RAG from scratch with a step-by-step progression
- Comparing OpenAI-based RAG with a local Hugging Face alternative
- Adopting a modular RAG pipeline using LangChain Expression Language
- Building a production-ready RAG chatbot with structured prompting
Assumes this stack
Curso de Chatbots - Implementaciones RAG
Este repositorio contiene varias implementaciones de RAG (Retrieval Augmented Generation) con diferentes configuraciones y niveles de complejidad.
¿Qué es RAG?
RAG (Retrieval Augmented Generation) es una técnica que combina la recuperación de información (Retrieval) con la generación de texto mediante modelos de lenguaje (Generation). Permite a los modelos generar respuestas basadas en información específica recuperada de una base de conocimiento, mejorando la precisión y relevancia de las respuestas.
Estructura del Proyecto
graph TD
A[curso-chatbots] --> B[src]
B --> C[rag]
C --> D[a_intro]
C --> E[a_rag_openai.py]
C --> F[b_basica]
C --> G[b_rag_local.py]
C --> H[b_rag_openai_store.py]
C --> I[rag_prompting.py]
D --> J[0_lexical_method.py]
D --> K[1_models_intro.py]
D --> L[2_semantic_method.py]
D --> M[helpers_semantic.py]
B --> N[config]
B --> O[chatbots]
B --> P[local_llm]
B --> Q[models_ia]
B --> R[proyecto_code]
A --> S[data]
Implementaciones RAG Disponibles
1. RAG con OpenAI (Versión Básica)
Archivo: src/rag/a_rag_openai.py
Esta implementación básica de RAG utiliza OpenAI y LangChain, incluyendo:
- Carga de documentos (Alice en el País de las Maravillas)
- División de texto en chunks
- Generación de embeddings con OpenAI
- Almacenamiento en base de datos vectorial FAISS
- Búsqueda por similitud
- Configuración del retriever
- Configuración del LLM (OpenAI)
- Construcción del pipeline RAG
- Consultas al sistema
Esta es la implementación recomendada para comenzar a entender RAG de forma práctica.
2. RAG con LLM Local
Archivo: src/rag/b_rag_local.py
Implementación que usa un modelo de Hugging Face en lugar de OpenAI, manteniendo la misma estructura RAG básica. Ideal para entornos donde se prefiere no depender de APIs externas.
3. RAG con OpenAI usando LCEL
Archivo: src/rag/b_rag_openai_store.py
Una implementación más moderna que utiliza LangChain Expression Language (LCEL) con tuberías de operadores (|). Representa un enfoque más declarativo y modular para construir sistemas RAG.
4. RAG con Prompting Estructurado
Archivo: src/rag/rag_prompting.py
Esta implementación usa una clase RAGChatbot bien organizada y tiene un mejor manejo de prompts y logging. Ofrece un enfoque más estructurado y escalable para implementaciones en producción.
Conceptos Fundamentales de RAG
En el directorio src/rag/a_intro/ encontrarás archivos que explican los conceptos básicos:
-
Búsqueda Léxica (
0_lexical_method.py): Implementación utilizando BM25 para búsqueda basada en palabras clave. -
Introducción a Modelos (
1_models_intro.py): Conceptos básicos sobre modelos de lenguaje y embeddings. -
Búsqueda Semántica (
2_semantic_method.py): Implementación de búsqueda basada en embeddings para capturar el significado semántico.
Cómo Empezar
-
Instala las dependencias:
pip install -r requirements.txt -
Configura tus claves de API en el archivo
.env(basado en.env_template). -
Ejecuta cualquiera de las implementaciones RAG:
python -m src.rag.a_rag_openai
Recomendaciones
Si estás comenzando con RAG:
- Empieza con
a_rag_openai.pypara entender los componentes básicos - Explora los conceptos fundamentales en el directorio
a_intro - Progresa hacia implementaciones más complejas como
rag_prompting.py
Desarrollado por Datoscout para el curso de Chatbots.
What's inside
4 RAG implementations, 3 concept files, 1 project structure diagram, 1 dependency file
Change this for your project
- Replace
Alice en el País de las Maravillaswith your own document source - Replace
educep/curso-chatbotswith your own repository name - Replace
.env_templatewith your own environment variable template
Where it goes
Reference documentation for a retrieval pipeline. Keep with the ingestion or retrieval code it describes.
Worth borrowing
- Progressive complexity: start with a basic OpenAI RAG, then add local models, LCEL pipelines, and structured classes
- Separate concept files (lexical search, semantic search, model intro) before full RAG implementations
Related Documents
SUMMARY
Proposes three on-prem AI architectures, modular, hybrid, and fully local RAG, with hardware specs and vendor lists.
Retrieval & Prompts
Explains how CharMemory's extraction prompt and Vector Storage settings determine memory retrieval quality in SillyTavern.
Advanced RAG Techniques
Surveys advanced RAG architectures, Agentic, Corrective, Self-RAG, Graph RAG, RAPTOR, Multimodal, Temporal, with design trade-offs and decision guidance.
RFC-BLite: High-Performance Embedded Document Database for .NET
Specifies an embedded document database for.NET with zero-allocation I/O, C-BSON format, and ACID transactions.