¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Dar los datos correctos al modelo (RAG)

Después de esta lección: Puedo explicar cómo una aplicación da a un modelo de lenguaje los datos correctos.

Lección de 45 minSin comandos

El asistente que se inventó la tarifa

Una comercializadora eléctrica pone un asistente en su web. Un cliente pregunta qué día llega su factura.

El asistente responde con seguridad: el día 15. Es falso, llega el día 5.

El modelo nunca había leído el manual de la empresa. Hoy ves cómo una aplicación le da los datos correctos antes de que responda.

Al final de esta lección

Nota

Puedo explicar cómo una aplicación da a un modelo de lenguaje los datos correctos.

Palabras clave

PalabraQué significaEjemplo
Modelo de lenguajeuna red que escribe texto a partir de un texto
Instrucciónel texto que la aplicación envía al modeloel prompt
Fragmentoun trozo corto de un documento
Recuperaciónbuscar los fragmentos útiles antes de preguntar
Vectoruna lista de números que resume un texto
Invenciónuna respuesta segura pero falsa

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

El modelo solo sabe lo que leyó

Un modelo de lenguaje es una red neuronal muy grande. Aprendió a escribir leyendo muchísimo texto público.

No ha leído los documentos internos de tu empresa. Tampoco sabe lo que cambió después de su entrenamiento.

Si le preguntas por ellos, suele responder igual de seguro. A veces se inventa la respuesta. Eso es una invención, y en atención al cliente sale cara.

Primero buscar, después preguntar

La solución habitual se llama recuperación, o RAG por sus siglas en inglés.

La aplicación guarda el manual partido en fragmentos. Cuando llega una pregunta, busca los fragmentos que más se parecen.

Después escribe la instrucción para el modelo: estos fragmentos, la pregunta y una orden. Por ejemplo: responde solo con este texto. Así el modelo responde con los datos de la empresa.

Busca el fragmento y monta la instrucción

Código: python
# Fragmentos del manual de atención al cliente de una eléctrica.
docs = [
    "La tarifa por horas es más barata de 0 a 8 de la mañana.",
    "Para cambiar el titular del contrato hace falta el DNI de los dos.",
    "La factura llega cada mes por correo electrónico el día 5.",
]
question = "¿Qué día llega la factura?"

def words(text):
    clean = text.lower().replace("¿", "").replace("?", "").replace(".", "")
    return clean.split()

def score(q, doc):
    # Cuenta las palabras de la pregunta que aparecen en el fragmento.
    shared = 0
    for w in words(q):
        if w in words(doc):
            shared = shared + 1
    return shared

best = docs[0]
for doc in docs:
    if score(question, doc) > score(question, best):
        best = doc

prompt = "Responde solo con este texto: " + best + "\nPregunta: " + question
print(prompt)

Buscar por significado con vectores

Contar palabras en común falla pronto. ¿Cuándo me cobráis? y fecha de la factura no comparten ninguna palabra.

Por eso las aplicaciones reales convierten cada fragmento en un vector, una lista de números. Textos que significan lo mismo dan listas parecidas.

La pregunta también se convierte en vector. La búsqueda elige los fragmentos con los números más cercanos.

Un error frecuente

Advertencia

Mucha gente cree que, para que el modelo conozca tus datos, hay que volver a entrenarlo. Casi nunca hace falta: basta con darle los fragmentos correctos en la instrucción. Es más barato, y cuando cambia el manual solo cambias los fragmentos.

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.