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:

text
┌─────────────────────────────────────────┐
│  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:

python
# 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"

text
           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:

text
┌──────────────────────┐         ┌──────────────────────┐
│  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:

  1. 馃攳 B煤squeda sem谩ntica: Encuentra significados, no solo palabras

  2. 馃殌 M谩s eficiente: Busca en millones de documentos r谩pidamente

  3. 馃З Escalable: Maneja grandes vol煤menes de informaci贸n

  4. 馃 Compatible con IA: Dise帽ada espec铆ficamente para LLMs


馃攧 Parte 3: El Proceso Completo con Embeddings

Diagrama del Flujo de Trabajo:

text
┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│   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:

python
# 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 git en Terminal

  • Linux: sudo apt install git

Paso 2: Instalar Python (si no lo tienes)

  • Descarga de python.org

  • Verifica instalaci贸n: python --version o python3 --version

Paso 3: Crear Cuenta en GitHub

  • Ve a github.com

  • Reg铆strate (es gratis)

  • Confirma tu email

Verificaci贸n de Instalaci贸n:

bash
# 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:

text
┌─────────────────────────────────────────────────────┐
│                 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-chatbot

  • Marca "Public"

  • Crea

2. Copia los comandos que GitHub te da:

bash
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:

bash
# 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:

bash
# 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铆sticaArchivos TXTChromaDB
CapacidadLimitada (~8000 chars)Ilimitada (millones de docs)
B煤squedaLineal (lee todo)Sem谩ntica (encuentra significado)
VelocidadLenta con muchos datosR谩pida incluso con grandes datos
FlexibilidadTexto planoTexto + metadatos + embeddings
EscalabilidadDif铆cil de escalarF谩cilmente escalable
Uso con IAManual (prompt engineering)Autom谩tico (similaridad sem谩ntica)

Ejemplo Real de Mejora:

python
# 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:

  1. No te asustes por los embeddings: Piensa en ellos como "c贸digos secretos" que la IA entiende

  2. Git parece complicado al inicio: Con pr谩ctica, los 5 comandos b谩sicos ser谩n autom谩ticos

  3. Empieza peque帽o: Prueba con un documento peque帽o antes de subir todo tu conocimiento

  4. Haz commits frecuentes: Cada vez que agregues algo nuevo, haz git add . y git commit

  5. Los 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:

  1. Instalar ChromaDB y dependencias

  2. Convertir nuestros TXT a embeddings

  3. Almacenarlos en la base de datos vectorial

  4. Hacer b煤squedas sem谩nticas reales


馃搨 Estructura del Proyecto Actual:

text
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):

txt
flask>=2.3.0
requests>=2.31.0

.gitignore (agrega esto):

gitignore
# 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

Entradas m谩s populares de este blog

1-Instalaci贸n y Primeros Pasos con Ollama

3- Creando tu Primer Entorno Virtual Python con Flask

2- C贸mo Usar Ollama con Postman (APIs y Comunicaci贸n)