[{"data":1,"prerenderedAt":2341},["ShallowReactive",2],{"blog-article-/es-es/blog/zero-hallucination-qa":3,"blog-list-es-es":1429},{"id":4,"title":5,"body":6,"config":1411,"date":1411,"description":1412,"draft":1413,"extension":1414,"image":1411,"meta":1415,"navigation":1416,"path":1417,"seo":1418,"stem":1427,"tags":1411,"toolbar":1411,"translationKey":1411,"updated":1411,"__hash__":1428},"blog/es-es/blog/zero-hallucination-qa.md","Cómo implementé preguntas y respuestas sin alucinaciones en nuestro lector",{"type":7,"value":8,"toc":1375},"minimark",[9,17,32,35,40,47,52,57,75,80,93,98,132,135,139,157,164,168,183,188,225,232,236,249,274,279,396,414,420,422,426,433,448,455,475,481,483,487,490,496,498,502,525,534,595,598,609,619,626,628,632,643,649,656,660,667,675,682,686,696,739,750,756,758,762,777,785,791,794,829,839,847,853,860,864,872,878,889,891,895,901,905,912,916,939,946,948,952,958,1016,1022,1024,1028,1035,1053,1057,1077,1088,1090,1094,1105,1108,1131,1142,1148,1150,1154,1169,1180,1182,1186,1207,1218,1220,1224,1243,1249,1251,1255,1342,1349,1360],[10,11,12],"p",{},[13,14],"img",{"alt":15,"src":16},"Portada: Q&A sin alucinaciones","https://cdn.linghuxiong.com/resources/snapshots/ai-chat-cover.png",[18,19,20],"blockquote",{},[10,21,22,23,27,28,31],{},"Este artículo comparte la implementación técnica de ",[24,25,26],"strong",{},"Q&A sin alucinaciones"," en nuestro lector con IA: las respuestas se basan estrictamente en el texto del libro abierto y las afirmaciones clave pueden ",[24,29,30],{},"rastrearse con un clic"," hasta el pasaje exacto. Si desarrollas lectura con IA, Q&A documental o aplicaciones tipo RAG, esperamos que tres iteraciones y la arquitectura final te resulten útiles.",[33,34],"hr",{},[36,37,39],"h2",{"id":38},"i-evolución-en-tres-etapas","I. Evolución en tres etapas",[10,41,42,43,46],{},"El Q&A sin alucinaciones no se diseñó perfecto desde el primer día. Evolucionó bajo la tensión entre ",[24,44,45],{},"coste, latencia y precisión",". A continuación, las tres etapas en orden cronológico—contexto para entender por qué la arquitectura actual tiene esta forma.",[48,49],"mermaid",{":config":50,"code":51},"config","flowchart%20LR%0A%20%20%20%20P1%5BEtapa%201%3A%20Texto%20completo%5D%20--%3E%20P2%5BEtapa%202%3A%20LLM%20frases%20clave%5D%0A%20%20%20%20P2%20--%3E%20P3%5BEtapa%203%3A%20%C3%8Dndice%20segmentos%20%2B%20Tool%5D%0A%20%20%20%20P1%20-.-%3E%7CLento%2C%20caro%2C%20impreciso%20en%20libros%20largos%7C%20X1%5BDescartado%5D%0A%20%20%20%20P2%20-.-%3E%7CP%C3%A9rdida%20de%20detalle%2C%20a%C3%BAn%20lento%7C%20X2%5BDescartado%5D%0A%20%20%20%20P3%20--%3E%7CActual%7C%20OK%5BCero%20alucinaciones%20%2B%20trazable%5D",[53,54,56],"h3",{"id":55},"etapa-1-volcar-todo-el-libro-en-el-contexto-lo-más-simpley-lo-primero-que-falla","Etapa 1: Volcar todo el libro en el contexto (lo más simple—y lo primero que falla)",[10,58,59,62,63,66,67,70,71,74],{},[24,60,61],{},"Enfoque:"," Cuando el usuario abre un libro y pregunta, meter ",[24,64,65],{},"todo el cuerpo de texto extraído"," en el system prompt o el mensaje de usuario y dejar que el modelo de chat responda. Si el libro supera unos ",[24,68,69],{},"400.000 caracteres",", ",[24,72,73],{},"truncado duro","—solo queda el inicio; los capítulos posteriores son invisibles para el modelo.",[10,76,77],{},[24,78,79],{},"Ventajas:",[81,82,83,87,90],"ul",{},[84,85,86],"li",{},"Coste de implementación muy bajo, casi sin preprocesado;",[84,88,89],{},"Funciona razonablemente en libros cortos y documentos simples—el modelo realmente «vio todo el libro»;",[84,91,92],{},"UX simple: preguntar y obtener respuesta, sin estado «espere mientras analizamos».",[10,94,95],{},[24,96,97],{},"Inconvenientes (pronto inaceptables):",[81,99,100,106,112,122],{},[84,101,102,105],{},[24,103,104],{},"Respuestas lentas:"," Cada pregunta reenvía una carga enorme; el tiempo hasta el primer token y la latencia total crecen con la longitud del libro;",[84,107,108,111],{},[24,109,110],{},"Coste de tokens alto:"," Se paga la entrada del libro completo en cada pregunta;",[84,113,114,117,118,121],{},[24,115,116],{},"Libros largos muy distorsionados:"," Tras 400k caracteres, la segunda mitad, anexos y conclusiones casi no existen—y la UI ",[24,119,120],{},"no suele indicar claramente"," el truncado;",[84,123,124,127,128,131],{},[24,125,126],{},"Granularidad de búsqueda cero:"," El modelo debe «encontrar una aguja en un pajar» entre cientos de miles de caracteres—fácil omitir detalles y producir ",[24,129,130],{},"resúmenes plausibles sin base","—exactamente lo que las apps de lectura deben evitar.",[10,133,134],{},"La etapa 1 sirve para un MVP, no para una solución de producto.",[53,136,138],{"id":137},"etapa-2-un-llm-ligero-extrae-frases-clave-comprimir-contextodemasiado-agresivo","Etapa 2: Un LLM ligero extrae frases clave (comprimir contexto—demasiado agresivo)",[10,140,141,143,144,147,148,151,152,156],{},[24,142,61],{}," Antes del Q&A (o al abrir por primera vez), ejecutar un ",[24,145,146],{},"modelo más barato"," sobre el cuerpo: dividir por capítulo spine (o trocear el libro), extraer ",[24,149,150],{},"frases clave",", conservar etiquetas de posición como ",[153,154,155],"code",{},"[fArchivo-inicio-fin]",", luego concatenar extractos en un contexto más corto para el Q&A posterior.",[10,158,159,160,163],{},"Pipeline típico: ",[24,161,162],{},"Extract → Cache → Chat",". Extraer una vez (offline o bajo demanda), guardar un «paquete de frases clave», reutilizarlo en cada pregunta—como muchos prototipos de Q&A documental: comprimir primero, responder después.",[10,165,166],{},[24,167,79],{},[81,169,170,177,180],{},[84,171,172,173,176],{},"Cada pregunta envía ",[24,174,175],{},"mucho menos texto","; el consumo de tokens por petición baja respecto a la etapa 1;",[84,178,179],{},"El preprocesado puede cachearse; sin reextracción por pregunta en el mismo libro;",[84,181,182],{},"Las etiquetas de posición sientan las bases de las citas.",[10,184,185],{},[24,186,187],{},"Inconvenientes (siguen fallando en libros largos):",[81,189,190,196,206,215],{},[84,191,192,195],{},[24,193,194],{},"Pérdida fuerte de detalle:"," Las «frases clave» las elige el modelo; calificadores, contraejemplos y cadenas argumentales se pierden a menudo—respuestas «correctas pero parciales»;",[84,197,198,201,202,205],{},[24,199,200],{},"Contexto aún grande en obras largas:"," Incluso los paquetes de frases clave son considerables—latencia y coste ",[24,203,204],{},"se alivian, no se resuelven",";",[84,207,208,211,212,205],{},[24,209,210],{},"Doble error de LLM:"," La extracción puede omitir; el Q&A puede leer mal los extractos—los errores ",[24,213,214],{},"se acumulan",[84,216,217,220,221,224],{},[24,218,219],{},"Contexto estático:"," Pregunte el usuario por un capítulo o la estructura global, el modelo recibe siempre ",[24,222,223],{},"el mismo blob preextraído","—sin estrechamiento dinámico según la pregunta.",[10,226,227,228,231],{},"La lección: el problema no es «si comprimimos», sino ",[24,229,230],{},"«si la compresión es bajo demanda y si podemos volver al texto fuente»",".",[53,233,235],{"id":234},"etapa-3-índice-de-segmentos-tool-bajo-demanda-devolución-del-texto-fuente-actual","Etapa 3: Índice de segmentos + Tool bajo demanda + devolución del texto fuente (actual)",[10,237,238,240,241,248],{},[24,239,61],{}," Inspirado en ",[242,243,247],"a",{"href":244,"rel":245},"https://github.com/VectifyAI/PageIndex",[246],"nofollow","PageIndex",". Frente a la etapa 2, tres cambios centrales:",[250,251,252,258,268],"ol",{},[84,253,254,257],{},[24,255,256],{},"El preprocesado produce un índice estructurado"," (resúmenes a nivel TOC + spans de caracteres exactos), no extractos usados directamente como contexto Q&A;",[84,259,260,263,264,267],{},[24,261,262],{},"Cada pregunta usa Tool Calling para buscar bajo demanda",", luego ",[24,265,266],{},"obtiene texto fuente con etiquetas de posición"," para responder;",[84,269,270,273],{},[24,271,272],{},"System prompt + frontend"," imponen el formato de cita y permiten clic → salto → resaltado en el lector.",[10,275,276],{},[24,277,278],{},"Comparación de las tres etapas:",[280,281,282,301],"table",{},[283,284,285],"thead",{},[286,287,288,292,295,298],"tr",{},[289,290,291],"th",{},"Dimensión",[289,293,294],{},"Etapa 1 (texto completo)",[289,296,297],{},"Etapa 2 (frases clave)",[289,299,300],{},"Etapa 3 (actual)",[302,303,304,323,337,351,365,382],"tbody",{},[286,305,306,310,313,316],{},[307,308,309],"td",{},"Contexto por pregunta",[307,311,312],{},"Libro entero (o primera mitad truncada)",[307,314,315],{},"Frases clave preextraídas",[307,317,318,319,322],{},"Solo fragmentos de ",[24,320,321],{},"fuente"," relevantes",[286,324,325,328,331,334],{},[307,326,327],{},"Precisión en libros largos",[307,329,330],{},"Colapso tras ~400k caracteres",[307,332,333],{},"Depende de la extracción; pierde detalle",[307,335,336],{},"Búsqueda por TOC/span; sin truncado duro del libro entero",[286,338,339,342,345,348],{},[307,340,341],{},"Velocidad de respuesta",[307,343,344],{},"Lenta",[307,346,347],{},"Algo mejor; libros largos aún lentos",[307,349,350],{},"Búsqueda + contexto corto—notablemente más rápido",[286,352,353,356,359,362],{},[307,354,355],{},"Coste de tokens",[307,357,358],{},"Muy alto",[307,360,361],{},"Medio-alto",[307,363,364],{},"Preprocesado amortizado + pago bajo demanda",[286,366,367,370,373,376],{},[307,368,369],{},"Trazabilidad",[307,371,372],{},"Débil (citas difíciles)",[307,374,375],{},"Hay etiquetas pero contenido filtrado",[307,377,378,379],{},"Notas al pie → ",[24,380,381],{},"spans fuente reales",[286,383,384,387,390,393],{},[307,385,386],{},"Complejidad técnica",[307,388,389],{},"Baja",[307,391,392],{},"Media",[307,394,395],{},"Alta",[10,397,398,401,402,405,406,409,410,413],{},[24,399,400],{},"Por qué nos quedamos en la etapa 3:"," En lectura, cero alucinaciones no es «mostrar al modelo el máximo texto», sino ",[24,403,404],{},"«antes de responder, obtener pruebas fuente para la pregunta»",". Las etapas 1–2 luchaban con el ",[24,407,408],{},"tamaño del contexto","; la etapa 3 divide el pipeline en ",[24,411,412],{},"índice (preprocesado) → búsqueda (Tool) → prueba (fuente) → respuesta (generación restringida)","—equilibrio entre precisión, coste y trazabilidad.",[10,415,416,417,231],{},"A continuación el detalle de ",[24,418,419],{},"la etapa 3",[33,421],{},[36,423,425],{"id":424},"ii-definición-del-problema-en-qa-de-libros-la-alucinación-duele-más-que-en-un-chat-genérico","II. Definición del problema: En Q&A de libros, la alucinación duele más que en un chat genérico",[10,427,428,429,432],{},"Los usuarios perdonan errores ocasionales en un chatbot general. En ",[24,430,431],{},"Q&A de libros",", el coste es mayor:",[81,434,435,442,445],{},[84,436,437,438,441],{},"Preguntan qué dice ",[24,439,440],{},"este libro","—no lo que vive en la memoria paramétrica del modelo;",[84,443,444],{},"Una «opinión del libro» plausible puede inducir a error en notas, citas y reenvíos;",[84,446,447],{},"Sin fuentes, no hay verificación—la confianza cuesta de construir.",[10,449,450,451,454],{},"«Cero alucinaciones» se traduce en tres reglas ",[24,452,453],{},"exigibles",":",[250,456,457,463,469],{},[84,458,459,462],{},[24,460,461],{},"Las preguntas sobre el libro deben consultar el libro primero:"," Todo lo que pueda concernir al libro abierto pasa por la búsqueda (Tool) antes de responder;",[84,464,465,468],{},[24,466,467],{},"Las respuestas deben ser trazables:"," Las afirmaciones clave llevan etiquetas de posición que la UI puede parsear y saltar;",[84,470,471,474],{},[24,472,473],{},"Decir cuando no se encuentra:"," Si el libro no lo contiene, decirlo—no disfrazar conocimiento general como «lo que dice el libro».",[10,476,477,478,480],{},"El resto sigue el flujo de datos de ",[24,479,419],{}," y cómo se aplican estas reglas.",[33,482],{},[36,484,486],{"id":485},"iii-arquitectura-preprocesado-tool-generación-restringida-citas-clicables","III. Arquitectura: Preprocesado → Tool → Generación restringida → Citas clicables",[48,488],{":config":50,"code":489},"flowchart%20TB%0A%20%20%20%20subgraph%20prep%20%5BOffline%20%2F%20primer%20preprocesado%5D%0A%20%20%20%20%20%20%20%20A%5BDividir%20libro%20por%20TOC%20o%20longitud%5D%20--%3E%20B%5BRes%C3%BAmenes%20de%20segmentos%20LLM%5D%0A%20%20%20%20%20%20%20%20B%20--%3E%20C%5BPersistir%20cach%C3%A9%20Segment%20localmente%5D%0A%20%20%20%20end%0A%0A%20%20%20%20subgraph%20ask%20%5BPregunta%20del%20usuario%5D%0A%20%20%20%20%20%20%20%20D%5BEntrada%20del%20usuario%5D%20--%3E%20E%7B%C2%BFExiste%20cach%C3%A9%20Segment%3F%7D%0A%20%20%20%20%20%20%20%20E%20--%3E%7CNo%7C%20F%5BExtraer%20texto%20completo%20%2F%20ofrecer%20preprocesado%5D%0A%20%20%20%20%20%20%20%20F%20--%3E%20prep%0A%20%20%20%20%20%20%20%20E%20--%3E%7CS%C3%AD%7C%20G%5BRegistrar%20Tool%20Calling%5D%0A%20%20%20%20end%0A%0A%20%20%20%20subgraph%20retrieve%20%5BB%C3%BAsqueda%20Tool%5D%0A%20%20%20%20%20%20%20%20G%20--%3E%20H%7BTipo%20de%20pregunta%7D%0A%20%20%20%20%20%20%20%20H%20--%3E%7CVisi%C3%B3n%20global%20%2F%20rese%C3%B1a%7C%20I%5Bget_full_book_segment_summaries%5D%0A%20%20%20%20%20%20%20%20H%20--%3E%7CHechos%20%2F%20personas%20%2F%20cap%C3%ADtulo%7C%20J%5Bget_related_segment_summaries%5D%0A%20%20%20%20%20%20%20%20J%20--%3E%20K%5BLLM%20elige%20IDs%20de%20segmento%20del%20cat%C3%A1logo%5D%0A%20%20%20%20%20%20%20%20K%20--%3E%20L%5BObtener%20fuente%20por%20span%20%2B%20etiquetas%20de%20posici%C3%B3n%5D%0A%20%20%20%20%20%20%20%20I%20--%3E%20M%5BConcatenar%20todos%20los%20res%C3%BAmenes%20de%20segmentos%5D%0A%20%20%20%20end%0A%0A%20%20%20%20subgraph%20answer%20%5BGenerar%20y%20mostrar%5D%0A%20%20%20%20%20%20%20%20L%20--%3E%20N%5BResultados%20Tool%20al%20modelo%5D%0A%20%20%20%20%20%20%20%20M%20--%3E%20N%0A%20%20%20%20%20%20%20%20N%20--%3E%20O%5BReglas%20de%20cita%20del%20system%20prompt%5D%0A%20%20%20%20%20%20%20%20O%20--%3E%20P%5BRespuesta%20en%20streaming%20%2B%20notas%20de%20posici%C3%B3n%5D%0A%20%20%20%20%20%20%20%20P%20--%3E%20Q%5BRenderizar%20notas%20clicables%5D%0A%20%20%20%20%20%20%20%20Q%20--%3E%20R%5BClic%20%E2%86%92%20vista%20previa%20%E2%86%92%20salto%20y%20resaltado%5D%0A%20%20%20%20end",[10,491,492,493],{},"Idea central: ",[24,494,495],{},"no dejar que el modelo «responda de memoria»—obligarlo a «reunir pruebas, responder y marcar fuentes».",[33,497],{},[36,499,501],{"id":500},"iv-preprocesado-convertir-el-libro-en-un-índice-de-segmentos-buscable","IV. Preprocesado: Convertir el libro en un índice de segmentos buscable",[10,503,504,505,508,509,512,513,516,517,520,521,524],{},"Si cada pregunta siguiera usando el contexto ",[24,506,507],{},"etapa 1"," del libro entero, los libros largos revientan el presupuesto de tokens y la búsqueda es demasiado gruesa. Etapa 3: en el primer chat IA de un libro, ejecutar en segundo plano un ",[24,510,511],{},"job de resumen de segmentos","—división por ",[24,514,515],{},"TOC"," o ",[24,518,519],{},"longitud de texto"," en ",[153,522,523],{},"Segment","s, resumir cada uno, persistir en IndexedDB local.",[10,526,527,528,530,531,454],{},"Cada ",[153,529,523],{}," contiene resumen más ",[24,532,533],{},"posición física en el cuerpo",[280,535,536,546],{},[283,537,538],{},[286,539,540,543],{},[289,541,542],{},"Campo",[289,544,545],{},"Significado",[302,547,548,562,575,585],{},[286,549,550,559],{},[307,551,552,555,556],{},[153,553,554],{},"startFileIndex"," / ",[153,557,558],{},"endFileIndex",[307,560,561],{},"Índice de archivo spine (PDF: un archivo por página)",[286,563,564,572],{},[307,565,566,555,569],{},[153,567,568],{},"startOffset",[153,570,571],{},"endOffset",[307,573,574],{},"Inicio/fin en caracteres",[286,576,577,582],{},[307,578,579],{},[153,580,581],{},"sequence",[307,583,584],{},"Orden de lectura lineal",[286,586,587,592],{},[307,588,589],{},[153,590,591],{},"title",[307,593,594],{},"Título TOC",[10,596,597],{},"La división equilibra precisión y coste: nodo TOC bajo ~20 KB → resumir solo ese nodo; nodos hermanos fusionados en lotes (15–20 KB) antes del LLM; bloques largos no estructurados en rangos ~30–40k caracteres.",[10,599,600,601,604,605,608],{},"El system prompt de resumen exige ",[24,602,603],{},"conservar etiquetas de posición inline"," (",[153,606,607],{},"[fNúmero-Número-Número]",") para que la fuente obtenida por Tool se alinee con offsets spine. Restricción central:",[610,611,617],"pre",{"className":612,"code":614,"language":615,"meta":616},[613],"language-text","If summary content relates to a passage, keep the trailing position tag [fNumber-Number-Number] (e.g. [f1-90-109]).\nTags are atomic—do not alter, merge, or omit any character or digit.\n","text","",[153,618,614],{"__ignoreMap":616},[10,620,621,622,625],{},"Tras el preprocesado, el Q&A depende de un ",[24,623,624],{},"índice de segmentos estructurado",", no del contexto del libro entero—requisito técnico del cero alucinaciones en libros largos.",[33,627],{},[36,629,631],{"id":630},"v-sistema-de-etiquetas-de-posición-codificar-el-de-dónde-en-el-texto","V. Sistema de etiquetas de posición: Codificar el «de dónde» en el texto",[10,633,634,635,638,639,642],{},"Cero alucinaciones exige contenido de la fuente ",[24,636,637],{},"y"," ",[24,640,641],{},"procedencia"," analizable por máquina y alcanzable en la UI. Usamos etiquetas inline:",[610,644,647],{"className":645,"code":646,"language":615},[613],"[f{fileIndex}-{startChar}-{endChar}]\n",[153,648,646],{"__ignoreMap":616},[10,650,651,652,655],{},"Ejemplo: ",[153,653,654],{},"[f5-123-165]"," = archivo spine 5 (base 0), caracteres 123–165.",[53,657,659],{"id":658},"_51-cómo-se-escriben-las-etiquetas-en-el-cuerpo","5.1 Cómo se escriben las etiquetas en el cuerpo",[10,661,662,663,666],{},"La capa de extracción añade ",[153,664,665],{},"[f{fileIndex}-{start}-{end}]"," al final de cada segmento:",[610,668,673],{"className":669,"code":671,"language":672,"meta":616},[670],"language-typescript","const position = `[f${fileIndex}-${absOffset}-${absOffset + segment.length}]`;\nfileLines.push(segment.text.trim() + position);\n","typescript",[153,674,671],{"__ignoreMap":616},[10,676,677,678,681],{},"Resúmenes de preprocesado o extractos Tool: las posiciones se alinean con ",[24,679,680],{},"offsets de caracteres spine","—no números de página estimados por el modelo.",[53,683,685],{"id":684},"_52-restricciones-sobre-la-salida-del-modelo","5.2 Restricciones sobre la salida del modelo",[10,687,688,689,695],{},"El system prompt incluye ",[24,690,691],{},[692,693,694],"span",{},"Position Citation Rules","—cinco puntos esenciales:",[250,697,698,708,718,724,733],{},[84,699,700,703,704,707],{},[24,701,702],{},"Formato estándar:"," Debe usar ",[153,705,706],{},"[f_fileIndex-startChar-endChar]","; las tres partes numéricas obligatorias;",[84,709,710,713,714,717],{},[24,711,712],{},"Copiar solo de fuentes actuales:"," Notas ",[24,715,716],{},"verbatim"," de mensajes system/user o retornos Tool de esta ronda;",[84,719,720,723],{},[24,721,722],{},"Sin fabricación:"," No calcular, editar ni inventar posiciones;",[84,725,726,729,730,205],{},[24,727,728],{},"Preferir omisión:"," Sin etiqueta válida en el contexto → responder con normalidad—",[24,731,732],{},"no emitir etiquetas de posición",[84,734,735,738],{},[24,736,737],{},"Inline con las afirmaciones:"," Etiquetas tras la frase relevante; sin listas de citas al final.",[10,740,741,742,745,746,749],{},"La UI también filtra etiquetas ",[24,743,744],{},"bipartitas"," inválidas ocasionales (p. ej. ",[153,747,748],{},"[f1-293]",") antes del render.",[10,751,752],{},[13,753],{"alt":754,"src":755},"Ventana de trazado de citas","https://cdn.linghuxiong.com/resources/snapshots/ai-chat.png",[33,757],{},[36,759,761],{"id":760},"vi-tool-calling-primero-buscar-luego-responder","VI. Tool Calling: Primero buscar, luego responder",[10,763,764,765,768,769,772,773,776],{},"Cuando el chat está vinculado a un libro (",[153,766,767],{},"resourceId"," presente, ",[153,770,771],{},"chatType === 'chat'","), registramos dos Tools con executors antes de cada generación—bucle ",[24,774,775],{},"function calling"," compatible con OpenAI.",[53,778,780,781,784],{"id":779},"_61-get_related_segment_summaries-búsqueda-dirigida-de-segmentos","6.1 ",[153,782,783],{},"get_related_segment_summaries"," — Búsqueda dirigida de segmentos",[10,786,787,788,231],{},"Para: conceptos, personajes, trama, detalles de capítulo—",[24,789,790],{},"intención de búsqueda clara",[10,792,793],{},"Flujo:",[250,795,796,803,809,812,822],{},[84,797,798,799,802],{},"El modelo reformula la pregunta en ",[24,800,801],{},"términos probables en el libro"," («Optimize Search Queries» en el system prompt);",[84,804,805,806,205],{},"Llamada Tool con ",[153,807,808],{},"question",[84,810,811],{},"Agrupar todos los resúmenes de segmentos por presupuesto de tokens (~30k tokens por lote, máx. 5 lotes);",[84,813,814,815,818,819,205],{},"Por lote: petición LLM separada elige IDs relevantes (máx. 5) de ",[153,816,817],{},"{ id, title, summary }",", JSON como ",[153,820,821],{},"{\"Thinking\":\"...\",\"answer\":[\"1\",\"3\"]}",[84,823,824,825,828],{},"Para segmentos elegidos, extraer ",[24,826,827],{},"texto fuente etiquetado"," del spine—not resúmenes—como resultado Tool.",[10,830,831,834,835,838],{},[24,832,833],{},"Diseño clave: el Tool devuelve fuente, no resúmenes."," El modelo responde desde párrafos reales con ",[153,836,837],{},"[f…]"," inline, evitando la deriva «resumen → re-resumen».",[53,840,842,843,846],{"id":841},"_62-get_full_book_segment_summaries-visión-global-del-libro","6.2 ",[153,844,845],{},"get_full_book_segment_summaries"," — Visión global del libro",[10,848,849,850,231],{},"Para: «resumir el libro», «reseñar este libro», «estructura/temas globales»—",[24,851,852],{},"vista global",[10,854,855,856,859],{},"Concatenar todos los campos ",[153,857,858],{},"summary"," de segmentos en orden de lectura—evitar perder capítulos clave solo por relevancia por trozo.",[53,861,863],{"id":862},"_63-system-prompt-libro-primero-herramientas-primero","6.3 System prompt: Libro primero, herramientas primero",[10,865,866,867,454],{},"Con libro vinculado, aplica ",[24,868,869],{},[692,870,871],{},"Core Principles for Reading Assistant",[610,873,876],{"className":874,"code":875,"language":615},[613],"1. Book First, Tool First\n   - Any question possibly about the book must call tools first;\n   - Answers must rely mainly on retrieval—never invent “book content” without retrieval.\n\n2. General Knowledge as Fallback Only\n   - Only for: casual chat / user explicitly skips the book / tools return nothing;\n   - If the book lacks it, say “not mentioned in this book” before general knowledge.\n\n3. Direct Style\n   - Get to the point—avoid “based on the provided materials…” and similar filler.\n",[153,877,875],{"__ignoreMap":616},[10,879,880,881,884,885,888],{},"La generación ejecuta el bucle Tool: ",[153,882,883],{},"tool_calls"," → ejecutar → añadir ",[153,886,887],{},"role: tool"," → continuar hasta el texto final. Con tools activos, el canal thinking está desactivado para evitar conflictos de protocolo.",[33,890],{},[36,892,894],{"id":893},"vii-trazabilidad-en-frontend-de-la-nota-al-resaltado","VII. Trazabilidad en frontend: De la nota al resaltado",[10,896,897,898,900],{},"La salida ",[153,899,654],{}," del modelo no se muestra en bruto; la capa de render convierte etiquetas en citas clicables.",[53,902,904],{"id":903},"_71-render-de-notas","7.1 Render de notas",[10,906,907,908,911],{},"Normalizar etiquetas a enlaces Markdown como ",[153,909,910],{},"[1]([f5-123-165])",", mostrar como notas numeradas; deduplicar la misma posición.",[53,913,915],{"id":914},"_72-interacción-al-clic","7.2 Interacción al clic",[250,917,918,927,933],{},[84,919,920,923,924,926],{},[24,921,922],{},"Primer clic:"," Parsear ",[153,925,837],{}," → fileIndex + offsets → extraer texto spine → vista previa (título TOC opcional);",[84,928,929,932],{},[24,930,931],{},"Misma nota otra vez:"," Cerrar vista previa;",[84,934,935,938],{},[24,936,937],{},"Confirmar salto:"," Abrir vista de lectura, resaltar rango de caracteres.",[10,940,941,942,945],{},"Del etiqueta copiada del modelo al texto fuente visible para el usuario, la cadena ",[24,943,944],{},"nunca pasa por otra llamada LLM","—determinista y reproducible.",[33,947],{},[36,949,951],{"id":950},"viii-casos-límite-y-degradación-honesta","VIII. Casos límite y degradación honesta",[10,953,954,955,454],{},"Cero alucinaciones ≠ «siempre hay respuesta»—es ",[24,956,957],{},"sin prueba, sin invención",[280,959,960,970],{},[283,961,962],{},[286,963,964,967],{},[289,965,966],{},"Escenario",[289,968,969],{},"Comportamiento",[302,971,972,980,992,1000,1008],{},[286,973,974,977],{},[307,975,976],{},"Resúmenes de segmentos no listos",[307,978,979],{},"Extraer primero texto completo y resumir",[286,981,982,985],{},[307,983,984],{},"Tool no encuentra nada",[307,986,987,988,991],{},"Devolver ",[153,989,990],{},"(No relevant segment excerpts found…)","; el modelo debe decir «no está en el libro»",[286,993,994,997],{},[307,995,996],{},"Etiquetas bipartitas inválidas del modelo",[307,998,999],{},"Filtrado en frontend; sin notas rotas",[286,1001,1002,1005],{},[307,1003,1004],{},"Charla informal",[307,1006,1007],{},"El system prompt permite conocimiento general fuera del libro",[286,1009,1010,1013],{},[307,1011,1012],{},"Exportar chat",[307,1014,1015],{},"Las notas pueden ser deep links del lector para compartir/archivar",[10,1017,1018],{},[13,1019],{"alt":1020,"src":1021},"Exportación de chat","https://cdn.linghuxiong.com/resources/snapshots/ai-chat-export.png",[33,1023],{},[36,1025,1027],{"id":1026},"ix-compromiso-de-diseño-por-qué-no-rag-vectorial","IX. Compromiso de diseño: ¿Por qué no «RAG vectorial»?",[10,1029,1030,1031,1034],{},"Colegas en Q&A documental suelen preguntar: si haces generación aumentada por recuperación, ¿por qué no ",[24,1032,1033],{},"Embedding + base vectorial Top-K","?",[10,1036,1037,1040,1041,1044,1045,1048,1049,1052],{},[24,1038,1039],{},"Sí hacemos RAG","—buscar antes de generar. La diferencia: «RAG» en el discurso comunitario suele implicar ",[24,1042,1043],{},"similaridad vectorial","; nuestra etapa 3 es ",[24,1046,1047],{},"índice de segmentos + Tool con fuente bajo demanda","—",[24,1050,1051],{},"sin capa vectorial por diseño",". Abajo: razones arquitectónicas, sin negar el valor del RAG vectorial.",[53,1054,1056],{"id":1055},"alcance-no-sin-búsqueda-sino-sin-búsqueda-vectorial","Alcance: no «sin búsqueda», sino «sin búsqueda vectorial»",[81,1058,1059,1068],{},[84,1060,1061,1064,1065,205],{},[24,1062,1063],{},"RAG amplio:"," buscar → generar → ",[24,1066,1067],{},"lo hacemos",[84,1069,1070,1073,1074,231],{},[24,1071,1072],{},"RAG vectorial:"," recuperación por similitud de embedding → ",[24,1075,1076],{},"no en esta versión",[10,1078,1079,1080,1083,1084,1087],{},"El preprocesado construye un ",[24,1081,1082],{},"índice de resúmenes de segmentos","; el modelo elige segmentos vía Tools y obtiene ",[24,1085,1086],{},"texto fuente",". Hay búsqueda sin modelo de embedding separado ni mantenimiento de índice vectorial.",[33,1089],{},[53,1091,1093],{"id":1092},"razón-1-proveedores-llm-personalizadossuperficie-de-integración-pequeña","Razón 1: Proveedores LLM personalizados—superficie de integración pequeña",[10,1095,1096,1097,1100,1101,1104],{},"Los usuarios pueden conectar ",[24,1098,1099],{},"sus propias API keys",", base URL personalizadas u ",[24,1102,1103],{},"Ollama local","—el modelo de chat es su elección; coste y ruta de datos bajo control.",[10,1106,1107],{},"El RAG vectorial típico amplía la integración:",[81,1109,1110,1121,1124],{},[84,1111,1112,1113,1116,1117,1120],{},"Además del ",[24,1114,1115],{},"modelo de chat",", suele hacer falta un ",[24,1118,1119],{},"modelo de embedding"," (otro nombre, a veces otro endpoint);",[84,1122,1123],{},"Ollama local necesita modelo de embedding aparte más compatibilidad de dimensión/API;",[84,1125,1126,1127,1130],{},"Más modos de fallo: chat OK pero ",[24,1128,1129],{},"búsqueda vacía","—embedding, índice o dimensión; más difícil depurar que un proveedor de extremo a extremo.",[10,1132,1133,1134,1137,1138,1141],{},"Aquí, ",[24,1135,1136],{},"elección de segmentos y respuesta comparten una config de proveedor","—no «chat en A, índice en B». Para apps ",[24,1139,1140],{},"LLM enchufables",", eso suele pesar más que unos puntos de recall.",[10,1143,1144],{},[13,1145],{"alt":1146,"src":1147},"Proveedores de IA personalizados","https://cdn.linghuxiong.com/resources/snapshots/ai-customize-providers.png",[33,1149],{},[53,1151,1153],{"id":1152},"razón-2-los-embeddings-atan-el-índicecambiar-de-proveedor-cuesta-caro","Razón 2: Los embeddings atan el índice—cambiar de proveedor cuesta caro",[10,1155,1156,1157,1160,1161,1164,1165,1168],{},"En RAG vectorial, ",[24,1158,1159],{},"los vectores no son un formato intermedio universal","—son coordenadas bajo un modelo de embedding. Índice con A, consulta con B: la similitud suele ser ",[24,1162,1163],{},"incomparable","—a menudo ",[24,1166,1167],{},"re-embedding completo",", y dimensiones (768 / 1024 / 1536 …) fijan el esquema de almacenamiento.",[10,1170,1171,1172,1175,1176,1179],{},"La etapa 3 persiste ",[24,1173,1174],{},"resúmenes estructurados + spans de caracteres",", no vectores; cambiar modelo de chat ",[24,1177,1178],{},"no reconstruye el índice","; la cadena de prueba (posiciones fuente) se mantiene—alineado con «probar distintos LLM en cualquier momento».",[33,1181],{},[53,1183,1185],{"id":1184},"razón-3-el-enrutamiento-estructurado-suele-bastar-en-documentos-largos-con-toc","Razón 3: El enrutamiento estructurado suele bastar en documentos largos con TOC",[10,1187,1188,1189,1192,1193,1196,1197,1200,1201,1206],{},"E-books y PDF suelen tener ",[24,1190,1191],{},"estructura de capítulos","; el preprocesado da ",[24,1194,1195],{},"títulos de segmento + resúmenes",". Para «qué dice el capítulo X» o «cómo define el libro Y», elegir segmentos del catálogo y ",[24,1198,1199],{},"tirar de la fuente"," funciona bien en la práctica; el Tool devuelve ",[24,1202,1203,1204],{},"fuente con ",[153,1205,837],{},", el cero alucinaciones sigue anclado en spans de caracteres.",[10,1208,1209,1210,1213,1214,1217],{},"Los vectores ayudan en semántica difusa, multilingüe, coincidencia literal larga; en lectores ",[24,1211,1212],{},"TOC + preprocesado + trazabilidad fuerte",", invertir en ",[24,1215,1216],{},"Tool + devolución de fuente + reglas de cita"," suele tener mejor ROI.",[33,1219],{},[53,1221,1223],{"id":1222},"futuro-recuperación-híbrida-no-reescritura","Futuro: Recuperación híbrida, no reescritura",[10,1225,1226,1227,1230,1231,1234,1235,1238,1239,1242],{},"Podríamos añadir ",[24,1228,1229],{},"recuperación vectorial gruesa"," (embedding solo para Top-N capítulos candidatos), terminando siempre en ",[24,1232,1233],{},"elegir segmento → fuente → traza clicable","—reglas de cero alucinaciones sin cambio. Si se añade: embedding ",[24,1236,1237],{},"opcional",", avisos explícitos de ",[24,1240,1241],{},"reindexar"," al cambiar modelo—evitar recuperación errónea silenciosa.",[10,1244,1245,1246],{},"Hasta entonces: ",[24,1247,1248],{},"cualquier API chat compatible OpenAI funciona; cambiar modelo de chat no reconstruye el índice local.",[33,1250],{},[36,1252,1254],{"id":1253},"x-resumen","X. Resumen",[280,1256,1257,1270],{},[283,1258,1259],{},[286,1260,1261,1264,1267],{},[289,1262,1263],{},"Paso",[289,1265,1266],{},"Método",[289,1268,1269],{},"Rol",[302,1271,1272,1283,1296,1309,1320,1331],{},[286,1273,1274,1277,1280],{},[307,1275,1276],{},"Preprocesado",[307,1278,1279],{},"División TOC/longitud + caché de segmentos",[307,1281,1282],{},"Libros largos buscables y localizables",[286,1284,1285,1288,1293],{},[307,1286,1287],{},"Etiquetas de posición",[307,1289,1290,1292],{},[153,1291,155],{}," en la fuente",[307,1294,1295],{},"Procedencia analizable por máquina",[286,1297,1298,1301,1306],{},[307,1299,1300],{},"Tool",[307,1302,1303,1304],{},"Segmentos / resúmenes de libro por pregunta, devolver ",[24,1305,321],{},[307,1307,1308],{},"Forzar pruebas antes de responder",[286,1310,1311,1314,1317],{},[307,1312,1313],{},"System prompt",[307,1315,1316],{},"Libro primero, sin etiquetas falsas, decir cuando falta",[307,1318,1319],{},"Restringir generación",[286,1321,1322,1325,1328],{},[307,1323,1324],{},"Frontend",[307,1326,1327],{},"Nota → vista previa → salto y resaltado",[307,1329,1330],{},"El usuario verifica pruebas",[286,1332,1333,1336,1339],{},[307,1334,1335],{},"Sin búsqueda vectorial",[307,1337,1338],{},"Un proveedor; cambiar modelo chat sin reindexar",[307,1340,1341],{},"Menor coste de integración y migración",[10,1343,1344,1345,1348],{},"«Cero alucinaciones» no significa que el modelo nunca se equivoque—significa que ",[24,1346,1347],{},"la ingeniería ata la salida a una cadena de pruebas",": sin búsqueda → no fingir contenido del libro; con búsqueda → posiciones fuente verificables.",[10,1350,1351,1352,1355,1356,1359],{},"Si desarrollas lectura con IA o Q&A documental, esperamos que el camino ",[24,1353,1354],{},"texto completo → frases clave → Tool-first bajo demanda",", más ",[24,1357,1358],{},"etiquetas de posición inline + devolución de fuente",", sea una implementación de referencia útil.",[18,1361,1362],{},[10,1363,1364,1365,1370,1371,231],{},"Estas son lecciones del lector IA ",[242,1366,1369],{"href":1367,"rel":1368},"https://reader.linghuxiong.com",[246],"Foxycape","—solo como referencia. Prueba el lector en la ",[242,1372,1374],{"href":1373},"/es-es#download","página de descarga",{"title":616,"searchDepth":1376,"depth":1376,"links":1377},2,[1378,1384,1385,1386,1387,1391,1398,1402,1403,1410],{"id":38,"depth":1376,"text":39,"children":1379},[1380,1382,1383],{"id":55,"depth":1381,"text":56},3,{"id":137,"depth":1381,"text":138},{"id":234,"depth":1381,"text":235},{"id":424,"depth":1376,"text":425},{"id":485,"depth":1376,"text":486},{"id":500,"depth":1376,"text":501},{"id":630,"depth":1376,"text":631,"children":1388},[1389,1390],{"id":658,"depth":1381,"text":659},{"id":684,"depth":1381,"text":685},{"id":760,"depth":1376,"text":761,"children":1392},[1393,1395,1397],{"id":779,"depth":1381,"text":1394},"6.1 get_related_segment_summaries — Búsqueda dirigida de segmentos",{"id":841,"depth":1381,"text":1396},"6.2 get_full_book_segment_summaries — Visión global del libro",{"id":862,"depth":1381,"text":863},{"id":893,"depth":1376,"text":894,"children":1399},[1400,1401],{"id":903,"depth":1381,"text":904},{"id":914,"depth":1381,"text":915},{"id":950,"depth":1376,"text":951},{"id":1026,"depth":1376,"text":1027,"children":1404},[1405,1406,1407,1408,1409],{"id":1055,"depth":1381,"text":1056},{"id":1092,"depth":1381,"text":1093},{"id":1152,"depth":1381,"text":1153},{"id":1184,"depth":1381,"text":1185},{"id":1222,"depth":1381,"text":1223},{"id":1253,"depth":1376,"text":1254},null,"[object Object]",false,"md",{},true,"/es-es/blog/zero-hallucination-qa",{"title":5,"description":1419},{"Notas de ingeniería sobre Q&A sin alucinaciones en un lector con IA":1420,"date":1421,"updated":1421,"translationKey":1422,"tags":1423,"draft":1413},"respuestas ancladas en el libro abierto, con citas en un clic al pasaje exacto.","2026-06-03","zero-hallucination-qa",[1424,1425,1426],"lector","IA","ingeniería","es-es/blog/zero-hallucination-qa","-XkeW6Vl93GVQKL7wH7-be5dAy1leU1SJApBgfNxkEQ",[1430],{"id":4,"title":5,"body":1431,"config":1411,"date":1411,"description":1412,"draft":1413,"extension":1414,"image":1411,"meta":2337,"navigation":1416,"path":1417,"seo":2338,"stem":1427,"tags":1411,"toolbar":1411,"translationKey":1411,"updated":1411,"__hash__":1428},{"type":7,"value":1432,"toc":2305},[1433,1437,1445,1447,1449,1453,1455,1457,1467,1471,1479,1483,1505,1507,1509,1519,1523,1527,1537,1541,1565,1569,1571,1578,1594,1598,1678,1688,1692,1694,1696,1700,1710,1714,1728,1732,1734,1736,1738,1742,1744,1746,1758,1764,1812,1814,1820,1825,1829,1831,1833,1839,1844,1848,1850,1854,1859,1863,1865,1871,1899,1905,1909,1911,1913,1921,1925,1929,1931,1953,1959,1963,1967,1971,1973,1979,1984,1990,1992,1994,1998,2000,2004,2006,2022,2026,2028,2030,2034,2078,2082,2084,2086,2090,2100,2102,2116,2122,2124,2126,2132,2134,2148,2154,2158,2160,2162,2170,2176,2178,2180,2192,2198,2200,2202,2212,2216,2218,2220,2286,2290,2296],[10,1434,1435],{},[13,1436],{"alt":15,"src":16},[18,1438,1439],{},[10,1440,22,1441,27,1443,31],{},[24,1442,26],{},[24,1444,30],{},[33,1446],{},[36,1448,39],{"id":38},[10,1450,42,1451,46],{},[24,1452,45],{},[48,1454],{":config":50,"code":51},[53,1456,56],{"id":55},[10,1458,1459,62,1461,66,1463,70,1465,74],{},[24,1460,61],{},[24,1462,65],{},[24,1464,69],{},[24,1466,73],{},[10,1468,1469],{},[24,1470,79],{},[81,1472,1473,1475,1477],{},[84,1474,86],{},[84,1476,89],{},[84,1478,92],{},[10,1480,1481],{},[24,1482,97],{},[81,1484,1485,1489,1493,1499],{},[84,1486,1487,105],{},[24,1488,104],{},[84,1490,1491,111],{},[24,1492,110],{},[84,1494,1495,117,1497,121],{},[24,1496,116],{},[24,1498,120],{},[84,1500,1501,127,1503,131],{},[24,1502,126],{},[24,1504,130],{},[10,1506,134],{},[53,1508,138],{"id":137},[10,1510,1511,143,1513,147,1515,151,1517,156],{},[24,1512,61],{},[24,1514,146],{},[24,1516,150],{},[153,1518,155],{},[10,1520,159,1521,163],{},[24,1522,162],{},[10,1524,1525],{},[24,1526,79],{},[81,1528,1529,1533,1535],{},[84,1530,172,1531,176],{},[24,1532,175],{},[84,1534,179],{},[84,1536,182],{},[10,1538,1539],{},[24,1540,187],{},[81,1542,1543,1547,1553,1559],{},[84,1544,1545,195],{},[24,1546,194],{},[84,1548,1549,201,1551,205],{},[24,1550,200],{},[24,1552,204],{},[84,1554,1555,211,1557,205],{},[24,1556,210],{},[24,1558,214],{},[84,1560,1561,220,1563,224],{},[24,1562,219],{},[24,1564,223],{},[10,1566,227,1567,231],{},[24,1568,230],{},[53,1570,235],{"id":234},[10,1572,1573,240,1575,248],{},[24,1574,61],{},[242,1576,247],{"href":244,"rel":1577},[246],[250,1579,1580,1584,1590],{},[84,1581,1582,257],{},[24,1583,256],{},[84,1585,1586,263,1588,267],{},[24,1587,262],{},[24,1589,266],{},[84,1591,1592,273],{},[24,1593,272],{},[10,1595,1596],{},[24,1597,278],{},[280,1599,1600,1612],{},[283,1601,1602],{},[286,1603,1604,1606,1608,1610],{},[289,1605,291],{},[289,1607,294],{},[289,1609,297],{},[289,1611,300],{},[302,1613,1614,1626,1636,1646,1656,1668],{},[286,1615,1616,1618,1620,1622],{},[307,1617,309],{},[307,1619,312],{},[307,1621,315],{},[307,1623,318,1624,322],{},[24,1625,321],{},[286,1627,1628,1630,1632,1634],{},[307,1629,327],{},[307,1631,330],{},[307,1633,333],{},[307,1635,336],{},[286,1637,1638,1640,1642,1644],{},[307,1639,341],{},[307,1641,344],{},[307,1643,347],{},[307,1645,350],{},[286,1647,1648,1650,1652,1654],{},[307,1649,355],{},[307,1651,358],{},[307,1653,361],{},[307,1655,364],{},[286,1657,1658,1660,1662,1664],{},[307,1659,369],{},[307,1661,372],{},[307,1663,375],{},[307,1665,378,1666],{},[24,1667,381],{},[286,1669,1670,1672,1674,1676],{},[307,1671,386],{},[307,1673,389],{},[307,1675,392],{},[307,1677,395],{},[10,1679,1680,401,1682,405,1684,409,1686,413],{},[24,1681,400],{},[24,1683,404],{},[24,1685,408],{},[24,1687,412],{},[10,1689,416,1690,231],{},[24,1691,419],{},[33,1693],{},[36,1695,425],{"id":424},[10,1697,428,1698,432],{},[24,1699,431],{},[81,1701,1702,1706,1708],{},[84,1703,437,1704,441],{},[24,1705,440],{},[84,1707,444],{},[84,1709,447],{},[10,1711,450,1712,454],{},[24,1713,453],{},[250,1715,1716,1720,1724],{},[84,1717,1718,462],{},[24,1719,461],{},[84,1721,1722,468],{},[24,1723,467],{},[84,1725,1726,474],{},[24,1727,473],{},[10,1729,477,1730,480],{},[24,1731,419],{},[33,1733],{},[36,1735,486],{"id":485},[48,1737],{":config":50,"code":489},[10,1739,492,1740],{},[24,1741,495],{},[33,1743],{},[36,1745,501],{"id":500},[10,1747,504,1748,508,1750,512,1752,516,1754,520,1756,524],{},[24,1749,507],{},[24,1751,511],{},[24,1753,515],{},[24,1755,519],{},[153,1757,523],{},[10,1759,527,1760,530,1762,454],{},[153,1761,523],{},[24,1763,533],{},[280,1765,1766,1774],{},[283,1767,1768],{},[286,1769,1770,1772],{},[289,1771,542],{},[289,1773,545],{},[302,1775,1776,1786,1796,1804],{},[286,1777,1778,1784],{},[307,1779,1780,555,1782],{},[153,1781,554],{},[153,1783,558],{},[307,1785,561],{},[286,1787,1788,1794],{},[307,1789,1790,555,1792],{},[153,1791,568],{},[153,1793,571],{},[307,1795,574],{},[286,1797,1798,1802],{},[307,1799,1800],{},[153,1801,581],{},[307,1803,584],{},[286,1805,1806,1810],{},[307,1807,1808],{},[153,1809,591],{},[307,1811,594],{},[10,1813,597],{},[10,1815,600,1816,604,1818,608],{},[24,1817,603],{},[153,1819,607],{},[610,1821,1823],{"className":1822,"code":614,"language":615,"meta":616},[613],[153,1824,614],{"__ignoreMap":616},[10,1826,621,1827,625],{},[24,1828,624],{},[33,1830],{},[36,1832,631],{"id":630},[10,1834,634,1835,638,1837,642],{},[24,1836,637],{},[24,1838,641],{},[610,1840,1842],{"className":1841,"code":646,"language":615},[613],[153,1843,646],{"__ignoreMap":616},[10,1845,651,1846,655],{},[153,1847,654],{},[53,1849,659],{"id":658},[10,1851,662,1852,666],{},[153,1853,665],{},[610,1855,1857],{"className":1856,"code":671,"language":672,"meta":616},[670],[153,1858,671],{"__ignoreMap":616},[10,1860,677,1861,681],{},[24,1862,680],{},[53,1864,685],{"id":684},[10,1866,688,1867,695],{},[24,1868,1869],{},[692,1870,694],{},[250,1872,1873,1879,1885,1889,1895],{},[84,1874,1875,703,1877,707],{},[24,1876,702],{},[153,1878,706],{},[84,1880,1881,713,1883,717],{},[24,1882,712],{},[24,1884,716],{},[84,1886,1887,723],{},[24,1888,722],{},[84,1890,1891,729,1893,205],{},[24,1892,728],{},[24,1894,732],{},[84,1896,1897,738],{},[24,1898,737],{},[10,1900,741,1901,745,1903,749],{},[24,1902,744],{},[153,1904,748],{},[10,1906,1907],{},[13,1908],{"alt":754,"src":755},[33,1910],{},[36,1912,761],{"id":760},[10,1914,764,1915,768,1917,772,1919,776],{},[153,1916,767],{},[153,1918,771],{},[24,1920,775],{},[53,1922,780,1923,784],{"id":779},[153,1924,783],{},[10,1926,787,1927,231],{},[24,1928,790],{},[10,1930,793],{},[250,1932,1933,1937,1941,1943,1949],{},[84,1934,798,1935,802],{},[24,1936,801],{},[84,1938,805,1939,205],{},[153,1940,808],{},[84,1942,811],{},[84,1944,814,1945,818,1947,205],{},[153,1946,817],{},[153,1948,821],{},[84,1950,824,1951,828],{},[24,1952,827],{},[10,1954,1955,834,1957,838],{},[24,1956,833],{},[153,1958,837],{},[53,1960,842,1961,846],{"id":841},[153,1962,845],{},[10,1964,849,1965,231],{},[24,1966,852],{},[10,1968,855,1969,859],{},[153,1970,858],{},[53,1972,863],{"id":862},[10,1974,866,1975,454],{},[24,1976,1977],{},[692,1978,871],{},[610,1980,1982],{"className":1981,"code":875,"language":615},[613],[153,1983,875],{"__ignoreMap":616},[10,1985,880,1986,884,1988,888],{},[153,1987,883],{},[153,1989,887],{},[33,1991],{},[36,1993,894],{"id":893},[10,1995,897,1996,900],{},[153,1997,654],{},[53,1999,904],{"id":903},[10,2001,907,2002,911],{},[153,2003,910],{},[53,2005,915],{"id":914},[250,2007,2008,2014,2018],{},[84,2009,2010,923,2012,926],{},[24,2011,922],{},[153,2013,837],{},[84,2015,2016,932],{},[24,2017,931],{},[84,2019,2020,938],{},[24,2021,937],{},[10,2023,941,2024,945],{},[24,2025,944],{},[33,2027],{},[36,2029,951],{"id":950},[10,2031,954,2032,454],{},[24,2033,957],{},[280,2035,2036,2044],{},[283,2037,2038],{},[286,2039,2040,2042],{},[289,2041,966],{},[289,2043,969],{},[302,2045,2046,2052,2060,2066,2072],{},[286,2047,2048,2050],{},[307,2049,976],{},[307,2051,979],{},[286,2053,2054,2056],{},[307,2055,984],{},[307,2057,987,2058,991],{},[153,2059,990],{},[286,2061,2062,2064],{},[307,2063,996],{},[307,2065,999],{},[286,2067,2068,2070],{},[307,2069,1004],{},[307,2071,1007],{},[286,2073,2074,2076],{},[307,2075,1012],{},[307,2077,1015],{},[10,2079,2080],{},[13,2081],{"alt":1020,"src":1021},[33,2083],{},[36,2085,1027],{"id":1026},[10,2087,1030,2088,1034],{},[24,2089,1033],{},[10,2091,2092,1040,2094,1044,2096,1048,2098,1052],{},[24,2093,1039],{},[24,2095,1043],{},[24,2097,1047],{},[24,2099,1051],{},[53,2101,1056],{"id":1055},[81,2103,2104,2110],{},[84,2105,2106,1064,2108,205],{},[24,2107,1063],{},[24,2109,1067],{},[84,2111,2112,1073,2114,231],{},[24,2113,1072],{},[24,2115,1076],{},[10,2117,1079,2118,1083,2120,1087],{},[24,2119,1082],{},[24,2121,1086],{},[33,2123],{},[53,2125,1093],{"id":1092},[10,2127,1096,2128,1100,2130,1104],{},[24,2129,1099],{},[24,2131,1103],{},[10,2133,1107],{},[81,2135,2136,2142,2144],{},[84,2137,1112,2138,1116,2140,1120],{},[24,2139,1115],{},[24,2141,1119],{},[84,2143,1123],{},[84,2145,1126,2146,1130],{},[24,2147,1129],{},[10,2149,1133,2150,1137,2152,1141],{},[24,2151,1136],{},[24,2153,1140],{},[10,2155,2156],{},[13,2157],{"alt":1146,"src":1147},[33,2159],{},[53,2161,1153],{"id":1152},[10,2163,1156,2164,1160,2166,1164,2168,1168],{},[24,2165,1159],{},[24,2167,1163],{},[24,2169,1167],{},[10,2171,1171,2172,1175,2174,1179],{},[24,2173,1174],{},[24,2175,1178],{},[33,2177],{},[53,2179,1185],{"id":1184},[10,2181,1188,2182,1192,2184,1196,2186,1200,2188,1206],{},[24,2183,1191],{},[24,2185,1195],{},[24,2187,1199],{},[24,2189,1203,2190],{},[153,2191,837],{},[10,2193,1209,2194,1213,2196,1217],{},[24,2195,1212],{},[24,2197,1216],{},[33,2199],{},[53,2201,1223],{"id":1222},[10,2203,1226,2204,1230,2206,1234,2208,1238,2210,1242],{},[24,2205,1229],{},[24,2207,1233],{},[24,2209,1237],{},[24,2211,1241],{},[10,2213,1245,2214],{},[24,2215,1248],{},[33,2217],{},[36,2219,1254],{"id":1253},[280,2221,2222,2232],{},[283,2223,2224],{},[286,2225,2226,2228,2230],{},[289,2227,1263],{},[289,2229,1266],{},[289,2231,1269],{},[302,2233,2234,2242,2252,2262,2270,2278],{},[286,2235,2236,2238,2240],{},[307,2237,1276],{},[307,2239,1279],{},[307,2241,1282],{},[286,2243,2244,2246,2250],{},[307,2245,1287],{},[307,2247,2248,1292],{},[153,2249,155],{},[307,2251,1295],{},[286,2253,2254,2256,2260],{},[307,2255,1300],{},[307,2257,1303,2258],{},[24,2259,321],{},[307,2261,1308],{},[286,2263,2264,2266,2268],{},[307,2265,1313],{},[307,2267,1316],{},[307,2269,1319],{},[286,2271,2272,2274,2276],{},[307,2273,1324],{},[307,2275,1327],{},[307,2277,1330],{},[286,2279,2280,2282,2284],{},[307,2281,1335],{},[307,2283,1338],{},[307,2285,1341],{},[10,2287,1344,2288,1348],{},[24,2289,1347],{},[10,2291,1351,2292,1355,2294,1359],{},[24,2293,1354],{},[24,2295,1358],{},[18,2297,2298],{},[10,2299,1364,2300,1370,2303,231],{},[242,2301,1369],{"href":1367,"rel":2302},[246],[242,2304,1374],{"href":1373},{"title":616,"searchDepth":1376,"depth":1376,"links":2306},[2307,2312,2313,2314,2315,2319,2324,2328,2329,2336],{"id":38,"depth":1376,"text":39,"children":2308},[2309,2310,2311],{"id":55,"depth":1381,"text":56},{"id":137,"depth":1381,"text":138},{"id":234,"depth":1381,"text":235},{"id":424,"depth":1376,"text":425},{"id":485,"depth":1376,"text":486},{"id":500,"depth":1376,"text":501},{"id":630,"depth":1376,"text":631,"children":2316},[2317,2318],{"id":658,"depth":1381,"text":659},{"id":684,"depth":1381,"text":685},{"id":760,"depth":1376,"text":761,"children":2320},[2321,2322,2323],{"id":779,"depth":1381,"text":1394},{"id":841,"depth":1381,"text":1396},{"id":862,"depth":1381,"text":863},{"id":893,"depth":1376,"text":894,"children":2325},[2326,2327],{"id":903,"depth":1381,"text":904},{"id":914,"depth":1381,"text":915},{"id":950,"depth":1376,"text":951},{"id":1026,"depth":1376,"text":1027,"children":2330},[2331,2332,2333,2334,2335],{"id":1055,"depth":1381,"text":1056},{"id":1092,"depth":1381,"text":1093},{"id":1152,"depth":1381,"text":1153},{"id":1184,"depth":1381,"text":1185},{"id":1222,"depth":1381,"text":1223},{"id":1253,"depth":1376,"text":1254},{},{"title":5,"description":2339},{"Notas de ingeniería sobre Q&A sin alucinaciones en un lector con IA":1420,"date":1421,"updated":1421,"translationKey":1422,"tags":2340,"draft":1413},[1424,1425,1426],1780489852875]