0Pricing
Learn AI with Python · Lección

Carga, división y embedding de documentos

PyPDFLoader, RecursiveCharacterTextSplitter, OpenAIEmbeddings y estrategias de embedding.

Carga, división y embedding de documentos es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.

La pipeline de ingesta de RAG

Antes de que un LLM pueda responder a partir de sus documentos, debe cargarlos, dividirlos y generar sus embeddings. Esta lección cubre esa pipeline de ingesta, la base de todo sistema de Retrieval-Augmented Generation.

pip install langchain-community pypdf langchain-openai

Cargar un PDF

PyPDFLoader lee un PDF y devuelve una lista de objetos Document, uno por página. Cada Document tiene page_content (el texto) y metadata (la fuente y el número de página).

from langchain_community.document_loaders import PyPDFLoader

loader = PyPDFLoader("handbook.pdf")
docs = loader.load()
print(len(docs), "pages")

¿Por qué dividir los documentos?

Las páginas completas suelen ser demasiado grandes para generar sus embeddings o para incluirlas en un prompt. La división separa el texto en fragmentos más pequeños que se pueden convertir en embeddings correctamente y permite que la recuperación devuelva solo el pasaje relevante, no una página entera.

RecursiveCharacterTextSplitter

El splitter recomendado es RecursiveCharacterTextSplitter. Intenta dividir primero por párrafos, después por oraciones y finalmente por palabras, manteniendo la coherencia semántica de los fragmentos en lugar de cortar una palabra por la mitad.

from langchain_text_splitters import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter(
    chunk_size=1000,
    chunk_overlap=200
)

chunk_size y chunk_overlap

chunk_size establece el máximo de caracteres por fragmento; chunk_overlap repite parte del texto entre fragmentos contiguos para no perder contexto en los límites. Una división 1000/200 es un punto de partida habitual.

chunks = splitter.split_documents(docs)
print(len(chunks), "chunks")
print(chunks[0].page_content[:120])

Ajustar el tamaño de los fragmentos

Los fragmentos pequeños permiten una recuperación precisa, pero pueden omitir el contexto circundante. Los fragmentos grandes conservan el contexto, pero diluyen la relevancia y consumen más tokens. Una superposición del 10-20 % del tamaño del fragmento es un buen valor predeterminado para conectar los límites.

¿Qué son los embeddings?

Un embedding convierte el texto en un vector de números de longitud fija que captura su significado. Los textos similares producen vectores cercanos. Esto permite buscar por similitud semántica en lugar de hacerlo por palabras clave.

OpenAIEmbeddings

Cree embeddings con OpenAIEmbeddings. El modelo text-embedding-3-small es económico y eficaz. embed_query genera el embedding de una cadena; embed_documents genera los embeddings de una lista.

from langchain_openai import OpenAIEmbeddings

embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vector = embeddings.embed_query("How do I reset my password?")
print(len(vector))  # 1536

Generar embeddings por lotes

Genere los embeddings de todos sus fragmentos de una vez. Cada fragmento se convierte en un vector que más adelante almacenará en una base de datos vectorial para realizar búsquedas rápidas por similitud.

texts = [c.page_content for c in chunks]
vectors = embeddings.embed_documents(texts)
print(len(vectors), "vectors of dim", len(vectors[0]))

Estimar el coste de los embeddings

Los embeddings se facturan por token. Estime el total de tokens de todos los fragmentos y multiplíquelo por el precio por cada 1000 tokens. Contarlos antes de generar los embeddings evita facturas inesperadas en corpus grandes.

import tiktoken
enc = tiktoken.get_encoding("cl100k_base")
total = sum(len(enc.encode(c.page_content)) for c in chunks)
price_per_1k = 0.00002
print("tokens:", total, "cost $:", total / 1000 * price_per_1k)

Resumen de la pipeline

El flujo de ingesta es: cargar los documentos, dividirlos en fragmentos superpuestos, generar el embedding de cada fragmento para convertirlo en un vector y, en la siguiente lección, almacenarlos. Una buena división en fragmentos y el control de costes determinan la calidad y el precio de todo el sistema RAG.

Comprobación rápida

Compruebe sus conocimientos sobre ingesta.

Repaso: carga, división y embeddings

Usó PyPDFLoader para cargar documentos, RecursiveCharacterTextSplitter con chunk_size y chunk_overlap para dividirlos en fragmentos, y OpenAIEmbeddings para convertir esos fragmentos en vectores. También aprendió a estimar el coste de los embeddings por token antes de procesar un corpus grande.

Preguntas frecuentes

¿La lección «Carga, división y embedding de documentos» es gratis?

Sí — el texto completo de «Carga, división y embedding de documentos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.

¿Qué aprenderé en «Carga, división y embedding de documentos»?

PyPDFLoader, RecursiveCharacterTextSplitter, OpenAIEmbeddings y estrategias de embedding. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Learn AI with Python?

No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Carga, división y embedding de documentos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?

Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Arquitectura de LangChain y LCEL
  2. Carga, división y embedding de documentos
  3. Almacenes vectoriales: Chroma y FAISS
  4. Construcción integral de un sistema de preguntas y respuestas RAG
← Volver a Learn AI with Python