9. Responder en Base a Texto Propio - 2
9: Responder en Base a Texto Propio - 2
馃幆 Tema: Introducci贸n a Bases de Datos Vectoriales y Embeddings
馃摎 Introducci贸n: M谩s All谩 de los Archivos TXT
¡Hola muchachos! Hoy vamos a dar un salto tecnol贸gico importante. Hasta ahora hemos usado archivos TXT, pero hay una forma m谩s poderosa de manejar informaci贸n para IA: bases de datos vectoriales como ChromaDB.
Analog铆a: Si antes ten铆amos libros en una estanter铆a (archivos TXT), ahora vamos a crear un cerebro digital que no solo almacena informaci贸n, sino que entiende su significado.
馃 Parte 1: ¿Qu茅 son los Embeddings?
Explicaci贸n Sencilla de Embeddings:
Imagina esto: Tienes la palabra "perro". Para una computadora, "perro" es solo letras: p-e-r-r-o. Pero para que la IA entienda lo que es "perro", necesitamos convertirlo en algo que pueda "pensar".
Los embeddings hacen exactamente eso: Convierten palabras en n煤meros m谩gicos que representan significado.
Visualizaci贸n de Embeddings:
┌─────────────────────────────────────────┐ │ PALABRA: "perro" │ │ │ │ Para humanos: 馃悤 │ │ Para IA (sin embeddings): "p e r r o" │ │ Para IA (con embeddings): │ │ [0.25, 0.89, -0.12, 0.45, -0.67, ...] │ │ (512 n煤meros que representan "perro") │ └─────────────────────────────────────────┘
Ejemplo de Embeddings en Acci贸n:
# Sin embeddings (solo texto): texto = "El gato caza ratones" # Con embeddings (representaci贸n num茅rica): embedding_gato = [0.12, 0.45, -0.23, 0.89, 0.34, ...] embedding_caza = [0.56, -0.12, 0.78, 0.23, -0.45, ...] embedding_ratones = [-0.34, 0.67, 0.12, -0.56, 0.89, ...]
Analog铆a del Mapa:
Piensa en los embeddings como un mapa de significados:
Palabras similares est谩n cerca en el mapa
"Perro" y "gato" est谩n m谩s cerca que "perro" y "computadora"
"Rey" est谩 relacionado con "reina" como "hombre" con "mujer"
Rey (0.8, 0.2)
│
│
Hombre (0.6, 0.4)───────Mujer (0.4, 0.6)
│
│
Reina (0.2, 0.8)馃梽️ Parte 2: ¿Qu茅 es ChromaDB?
ChromaDB es una Base de Datos Vectorial:
Comparaci贸n con bases de datos tradicionales:
┌──────────────────────┐ ┌──────────────────────┐ │ BASE DE DATOS │ │ CHROMADB │ │ TRADICIONAL (SQL) │ │ (VECTORIAL) │ ├──────────────────────┤ ├──────────────────────┤ │ Almacena: │ │ Almacena: │ │ - Tablas │ │ - Embeddings │ │ - Filas │ │ - Vectores │ │ - Columnas │ │ - Metadatos │ │ │ │ │ │ Busca: │ │ Busca: │ │ - Coincidencias │ │ - Similitud │ │ exactas │ │ sem谩ntica │ │ │ │ │ │ Ejemplo: │ │ Ejemplo: │ │ WHERE nombre = │ │ "Encuentra textos │ │ "Juan" │ │ similares a..." │ └──────────────────────┘ └──────────────────────┘
Ventajas de ChromaDB para IA:
馃攳 B煤squeda sem谩ntica: Encuentra significados, no solo palabras
馃殌 M谩s eficiente: Busca en millones de documentos r谩pidamente
馃З Escalable: Maneja grandes vol煤menes de informaci贸n
馃 Compatible con IA: Dise帽ada espec铆ficamente para LLMs
馃攧 Parte 3: El Proceso Completo con Embeddings
Diagrama del Flujo de Trabajo:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ TUS ARCHIVOS │────▶│ EMBEDDING │────▶│ CHROMADB │
│ (TXT, PDF, etc)│ │ MODEL │ │ BASE DE DATOS │
│ │ │ Convierte texto │ │ Almacena los │
│ │ │ en n煤meros │ │ embeddings │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ PREGUNTA DEL │────▶│ EMBEDDING │────▶│ B脷SQUEDA │
│ USUARIO │ │ DE LA │ │ SEM脕NTICA │
│ "¿Qu茅 es...?" │ │ PREGUNTA │ │ Encuentra los │
│ │ │ │ │ textos m谩s │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ RESPUESTA │◀────│ IA GENERA │◀────│ CONTEXTO │
│ PRECISA │ │ RESPUESTA │ │ RELEVANTE │
│ │ │ usando el │ │ extra铆do de │
│ │ │ contexto │ │ ChromaDB │
└─────────────────┘ └─────────────────┘ └─────────────────┘Ejemplo Paso a Paso:
# 1. Tienes un documento: documento = "Laravel es un framework de PHP" # 2. Se convierte a embedding: embedding_documento = [0.12, 0.45, -0.23, ...] # 512 n煤meros # 3. Se guarda en ChromaDB: chromadb.add( texto="Laravel es un framework de PHP", embedding=[0.12, 0.45, -0.23, ...], metadata={"tipo": "framework", "lenguaje": "PHP"} ) # 4. Usuario pregunta: pregunta = "¿Qu茅 es Laravel?" # 5. ChromaDB busca textos similares: resultados = chromadb.query( query_embedding=[0.11, 0.44, -0.22, ...], # Embedding de la pregunta n_results=3 # Los 3 textos m谩s relevantes ) # 6. IA responde usando esos textos
馃捇 Parte 4: Preparando Nuestro Entorno
Instalaci贸n de Herramientas Necesarias:
Paso 1: Instalar Git
Windows: Descarga de git-scm.com
Mac:
brew install giten TerminalLinux:
sudo apt install git
Paso 2: Instalar Python (si no lo tienes)
Descarga de python.org
Verifica instalaci贸n:
python --versionopython3 --version
Paso 3: Crear Cuenta en GitHub
Ve a github.com
Reg铆strate (es gratis)
Confirma tu email
Verificaci贸n de Instalaci贸n:
# Abre tu terminal/consola y escribe: git --version # Deber铆a mostrar: git version 2.xx.x python --version # Deber铆a mostrar: Python 3.x.x python3 --version # (Alternativa para algunos sistemas)
馃搧 Parte 5: Subiendo C贸digo a GitHub
Gu铆a Visual de los Comandos Git:
┌─────────────────────────────────────────────────────┐ │ PROCESO CON GIT │ ├─────────────────────────────────────────────────────┤ │ │ │ 1. git init │ │ (Inicia repositorio en tu carpeta) │ │ │ │ 2. git add . │ │ (Prepara TODOS los archivos para subir) │ │ │ │ 3. git commit -m "Mensaje descriptivo" │ │ (Crea un "paquete" con los cambios) │ │ │ │ 4. git remote add origin [URL-de-GitHub] │ │ (Conecta con tu repositorio en GitHub) │ │ │ │ 5. git push origin main │ │ (Env铆a todo a la nube - GitHub) │ │ │ └─────────────────────────────────────────────────────┘
Ejemplo Paso a Paso para Principiantes:
1. Crea repositorio en GitHub:
Ve a github.com
Haz clic en "+" → "New repository"
N贸mbralo:
python-chromadb-chatbotMarca "Public"
Crea
2. Copia los comandos que GitHub te da:
echo "# python-chromadb-chatbot" >> README.md git init git add README.md git commit -m "Primer commit" git branch -M main git remote add origin https://github.com/tu-usuario/python-chromadb-chatbot.git git push -u origin main
3. Sube tu proyecto existente:
# Si ya tienes archivos en tu carpeta: git add . # Agrega TODO git commit -m "Agregando chatbot b谩sico" git push origin main # Sube a GitHub
Errores Comunes y Soluciones:
# Error: "fatal: not a git repository" # Soluci贸n: Ejecuta primero 'git init' # Error: "fatal: remote origin already exists" # Soluci贸n: Usa 'git remote set-url origin [nueva-url]' # Error: "failed to push some refs" # Soluci贸n: Haz 'git pull origin main' primero, luego 'git push'
馃И Parte 6: ¿Por qu茅 Este Cambio es Importante?
Comparaci贸n: TXT vs ChromaDB:
| Caracter铆stica | Archivos TXT | ChromaDB |
|---|---|---|
| Capacidad | Limitada (~8000 chars) | Ilimitada (millones de docs) |
| B煤squeda | Lineal (lee todo) | Sem谩ntica (encuentra significado) |
| Velocidad | Lenta con muchos datos | R谩pida incluso con grandes datos |
| Flexibilidad | Texto plano | Texto + metadatos + embeddings |
| Escalabilidad | Dif铆cil de escalar | F谩cilmente escalable |
| Uso con IA | Manual (prompt engineering) | Autom谩tico (similaridad sem谩ntica) |
Ejemplo Real de Mejora:
# CON TXT (antes): "Busca 'cursos de Laravel' en 500 p谩ginas de texto" # ⏱️ Tiempo: 2-3 segundos # 馃幆 Precisi贸n: Media/Baja # CON CHROMADB (ahora): "Encuentra documentos similares a 'cursos de Laravel'" # ⏱️ Tiempo: 0.1-0.5 segundos # 馃幆 Precisi贸n: Alta (encuentra significados)
馃摑 Cuestionario de Repaso
Pregunta 1: ¿Qu茅 es un embedding en IA?
a) Un archivo de texto normal
b) Una representaci贸n num茅rica que captura el significado
c) Un tipo de base de datos SQL
Respuesta correcta: b
Pregunta 2: ¿Qu茅 ventaja principal tiene ChromaDB sobre archivos TXT?
a) Tiene mejores colores
b) Permite b煤squeda sem谩ntica (por significado)
c) Es m谩s f谩cil de instalar
Respuesta correcta: b
Pregunta 3: ¿Qu茅 comando de Git se usa para preparar archivos antes de subirlos?
a) git commit
b) git push
c) git add
Respuesta correcta: c
Pregunta 4: ¿Qu茅 hace el comando git commit -m "mensaje"?
a) Sube los archivos a GitHub
b) Crea un paquete con cambios y un mensaje descriptivo
c) Descarga archivos de GitHub
Respuesta correcta: b
Pregunta 5: ¿Por qu茅 es 煤til subir c贸digo a GitHub?
a) Para hacer respaldo en la nube y compartir c贸digo
b) Para hacer m谩s r谩pido el programa
c) Para convertir TXT a PDF
Respuesta correcta: a
馃挕 Consejos para Principiantes:
No te asustes por los embeddings: Piensa en ellos como "c贸digos secretos" que la IA entiende
Git parece complicado al inicio: Con pr谩ctica, los 5 comandos b谩sicos ser谩n autom谩ticos
Empieza peque帽o: Prueba con un documento peque帽o antes de subir todo tu conocimiento
Haz commits frecuentes: Cada vez que agregues algo nuevo, haz
git add .ygit commitLos errores son normales: Todos los programadores tienen problemas con Git al principio
馃殌 Lo Que Viene en la Pr贸xima Clase:
¡Prep谩rate! En la siguiente clase vamos a:
Instalar ChromaDB y dependencias
Convertir nuestros TXT a embeddings
Almacenarlos en la base de datos vectorial
Hacer b煤squedas sem谩nticas reales
馃搨 Estructura del Proyecto Actual:
python-chromadb-chatbot/ ├── app.py # Nuestra aplicaci贸n Flask ├── cursos.txt # Archivo 1 de conocimiento ├── servicios.txt # Archivo 2 de conocimiento ├── contacto.txt # Archivo 3 de conocimiento ├── requirements.txt # Dependencias de Python ├── README.md # Descripci贸n del proyecto └── .gitignore # Archivos que NO subir a GitHub
requirements.txt (agrega esto):
flask>=2.3.0 requests>=2.31.0
.gitignore (agrega esto):
# Python __pycache__/ *.py[cod] *$py.class *.so .Python env/ venv/ .venv/ # ChromaDB (lo agregaremos despu茅s) chromadb_data/ # Sistema .DS_Store Thumbs.db
馃帀 Resumen de lo Aprendido Hoy:
✅ Embeddings: N煤meros m谩gicos que representan significado
✅ ChromaDB: Base de datos especial para IA y embeddings
✅ Git: Sistema de control de versiones
✅ GitHub: Plataforma para guardar y compartir c贸digo
✅ Proceso de subida: init → add → commit → push
¡Felicidades muchachos! Has dado el primer paso hacia sistemas de IA m谩s avanzados. En la pr贸xima clase construiremos juntos esta tecnolog铆a emocionante. 馃殌
Recuerda: La tecnolog铆a que estamos aprendiendo es la misma que usan empresas como Google, Microsoft y OpenAI en sus productos
Comentarios
Publicar un comentario