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.
Guía de modelosPrincipio: 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 fallosLa 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ón | Mejor opción | Por qué |
|---|---|---|
| Un documento que hay que entender entero (un contrato, un informe) | Contexto largo | Las relaciones entre secciones importan. |
| Pocas consultas sobre un documento | Contexto largo con Prompt caching | Sencillo; la caché abarata las consultas repetidas. |
| Muchos documentos, cada pregunta toca pocos | RAG con Chunking | Solo entra lo relevante: menos coste y menos ruido. |
| Corpus que cambia a menudo | RAG | Reindexas lo nuevo; no reenvías todo. |
| Resumir algo más largo que la ventana | Trocear y resumir por partes, luego combinar | No 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
- Ingeniería de contexto: el orden del contexto en general.
- RAG: cuándo y cómo recuperar.
- RAG a fondo: el curso completo de recuperación.