Contenido del curso

Introducción a LangChain

Chats y memoria con LangChain

Embeddings con OpenAI y LangChain

Resumen

Convertir texto en números es el paso que conecta tus documentos con la inteligencia de un modelo de lenguaje. Aquí aprendes a generar embeddings con OpenAI usando LangChain, entender su tamaño, y diferenciar cuándo usar embed_documents o embed_query para que tu pipeline de búsqueda semántica funcione bien desde el inicio.

¿Qué proveedores de embeddings puedes usar con LangChain?

LangChain no te casa con un solo proveedor. Esa flexibilidad es justo lo que lo vuelve útil cuando estás explorando opciones.

  • Hugging Face Hub, con modelos open source de la comunidad.
  • Cohere, con embeddings comerciales optimizados para búsqueda.
  • OpenAI, el que usamos en este flujo con el modelo text-embedding-ada-002.

Puedes cambiar de proveedor sin reescribir tu pipeline completo, solo intercambiando la clase de embedding.

¿Cómo cargar el modelo de embeddings de OpenAI?

Primero necesitas tu API key de OpenAI, que encuentras en la plataforma para desarrolladores. Luego importas la clase y eliges el modelo.

python from langchain.embeddings import OpenAIEmbeddings

embedding_openai = OpenAIEmbeddings(model="text-embedding-ada-002")

Al llamar el objeto directamente verás todos los parámetros precargados, lo cual es útil para auditar la configuración antes de procesar documentos grandes [1:20].

¿Qué es text embedding ada 002? Es el modelo de embeddings más avanzado de OpenAI al momento de esta clase. Convierte texto en vectores de 1536 dimensiones que capturan el significado semántico.

¿Cuál es la diferencia entre embed_documents y embed_query?

Aquí está la parte que confunde a muchos al inicio. OpenAI te da dos métodos y cada uno tiene un propósito específico.

¿Cuándo usar embed_documents?

Lo usas cuando tienes una lista de varios textos que quieres convertir a vectores al mismo tiempo. Antes necesitas instalar tiktoken, la librería open source de tokenización de OpenAI.

python documentos = ["Hola, parce", "Uy, hola, ¿cómo te llamas?"] incrustaciones = embedding_openai.embed_documents(documentos)

Si revisas el resultado, encuentras una lista de listas. Cada elemento interno tiene exactamente 1536 números flotantes, sin importar el largo del texto original [2:30].

¿Cuándo usar embed_query?

Lo usas cuando solo tienes un texto, típicamente la pregunta del usuario que quieres comparar contra tus documentos ya indexados.

python consulta_incrustada = embedding_openai.embed_query(documentos[0])

El resultado ya no es una lista de listas, es directamente una lista de floats. Esa diferencia importa cuando alimentas una base vectorial.

¿Por qué los embeddings tienen 1536 dimensiones? Porque ese es el tamaño fijo que produce el modelo text-embedding-ada-002 de OpenAI. Otros proveedores generan vectores de tamaños distintos.

¿Por qué los embeddings forman una base de datos cuadrada?

Cuando pasas siete documentos por embed_documents, obtienes siete vectores de 1536 números cada uno. Todos del mismo tamaño, sin importar si el texto original era una frase corta o un párrafo largo.

Esa homogeneidad es lo que se llama base de datos cuadrada. Imagina una matriz perfecta: filas que representan documentos, columnas que representan dimensiones, y todas las celdas pobladas con números [3:45].

¿Por qué importa? Porque los modelos de búsqueda por similitud necesitan vectores comparables. Si un documento tuviera 800 dimensiones y otro 1536, no podrías calcular distancias entre ellos.

¿Qué pasos sigue tu pipeline de embeddings?

El flujo completo, desde texto crudo hasta vectores listos para consulta, se ve así:

  1. Partir los documentos en fragmentos que respeten el límite de tokens del modelo.
  2. Cargar el modelo de embeddings con tu API key.
  3. Convertir cada fragmento en un vector usando embed_documents.
  4. Convertir la pregunta del usuario con embed_query cuando llegue una consulta.
  5. Comparar vectores para encontrar qué textos se parecen más entre sí.

Con esos vectores ya puedes alimentar modelos que detecten similitud semántica y respondan preguntas basándose en tus propios documentos.

¿Ya probaste cambiar a un embedding de Hugging Face para comparar resultados? Cuéntame en los comentarios qué diferencias notas en tamaño y velocidad.