Empezar aquí
Guía 07 · guía de modelos

Trabajar con documentos largos

Dónde colocar los documentos en el prompt, cómo pedir citas, por qué extraer antes de razonar y cuándo trocear frente a usar contexto largo.

Publicado 3 min de lectura

Principio: pon los documentos al principio, la pregunta al final, y pide al modelo que localice las citas relevantes antes de responder.

Por qué funciona

Con documentos largos, el reto es que el modelo encuentre y use la parte que importa. Tres hechos explican las técnicas de esta página:

  • La posición importa. Liu et al. (2023), en Lost in the Middle, mostraron que los modelos aprovechan mejor la información al principio y al final del contexto que la situada en medio. Los modelos han mejorado, pero el efecto de la posición sigue siendo una buena razón para ordenar bien.
  • La pregunta al final ayuda. Con la consulta detrás de los documentos, el modelo los lee sabiendo ya qué contienen y responde con todo a la vista justo antes de generar.
  • Extraer antes de razonar reduce el ruido. Si el modelo primero copia los fragmentos relevantes, razona sobre un texto corto en lugar de sobre cien páginas.

Ubicación y estructura

Envuelve cada documento en etiquetas con sus metadatos y coloca todos arriba:

Responde a la pregunta del cliente sobre su contrato.
Pregunta: ¿puedo cancelar sin penalización en el primer año?
Contrato: [40 páginas]
Anexo de tarifas: [10 páginas]
<documentos>
<documento id="contrato">
<fuente>Contrato de servicio, versión 2026-03</fuente>
<contenido>[40 páginas]</contenido>
</documento>
<documento id="anexo">
<fuente>Anexo de tarifas</fuente>
<contenido>[10 páginas]</contenido>
</documento>
</documentos>

Primero, copia en <citas> los fragmentos literales de los documentos que traten sobre
cancelación o penalizaciones, cada uno como <cita doc="id">texto literal</cita>.
Después, responde en <respuesta> usando solo esas citas. Si no bastan, dilo.

Pregunta del cliente: ¿puedo cancelar sin penalización en el primer año?

Los identificadores permiten citar y comprobar. Las etiquetas <citas> y <respuesta> separan la extracción de la respuesta, y te dejan mostrar solo la segunda al usuario.

Citas verificables

Pedir citas literales tiene una ventaja que va más allá de la calidad: puedes comprobarlas con código. Si la cita no aparece tal cual en el documento, el modelo se la ha inventado.

import re

def citas_no_encontradas(salida: str, documentos: dict[str, str]) -> list[str]:
    bloque = re.search(r"<citas>(.*?)</citas>", salida, re.S)
    if not bloque:
        return ["No hay bloque <citas>"]
    fallos = []
    for doc_id, cita in re.findall(r'<cita doc="([^"]+)">(.*?)</cita>', bloque.group(1), re.S):
        texto = documentos.get(doc_id, "")
        if " ".join(cita.split()) not in " ".join(texto.split()):  # normaliza espacios
            fallos.append(f"{doc_id}: {cita[:60]}…")
    return fallos

La función espera el formato <cita doc="id">…</cita> que pide el prompt de arriba. La API también ofrece una función de citas nativa para documentos; consulta cómo activarla en la documentación oficial. La lección Responder con citas verificables y el sistema RAG con citas verificables desarrollan el flujo completo.

Trocear o usar contexto largo

Las ventanas de contexto actuales admiten documentos muy largos. Que quepan no significa que meterlos enteros sea siempre lo mejor.

SituaciónMejor opciónPor qué
Un documento que hay que entender entero (un contrato, un informe)Contexto largoLas relaciones entre secciones importan.
Pocas consultas sobre un documentoContexto largo con Prompt cachingSencillo; la caché abarata las consultas repetidas.
Muchos documentos, cada pregunta toca pocosRAG con ChunkingSolo entra lo relevante: menos coste y menos ruido.
Corpus que cambia a menudoRAGReindexas lo nuevo; no reenvías todo.
Resumir algo más largo que la ventanaTrocear y resumir por partes, luego combinarNo hay otra forma.

La entrada del radar Ventanas de contexto enormes: no sustituyen a la recuperación explica por qué las ventanas grandes no hacen innecesaria la recuperación.

Preguntas sobre varios documentos

Cuando la tarea compara o combina documentos, pide que los trate por separado antes de cruzarlos:

Para cada documento de <documentos>, extrae en <hallazgos id="..."> lo que dice sobre plazos de entrega.
Después, en <comparacion>, señala dónde coinciden y dónde se contradicen.

Así evitas que el modelo mezcle lo que dice un documento con lo que dice otro.

Cuándo no aplica

  • Documentos cortos: con una página, el orden importa poco y extraer citas antes es un paso de más.
  • Respuestas creativas inspiradas en un texto, donde no buscas fidelidad literal.
  • Latencia crítica: la extracción previa añade tokens de salida. Valora si basta con pedir la respuesta directa con referencias al documento.

Para seguir