[{"data":1,"prerenderedAt":1841},["ShallowReactive",2],{"blog-article-/fr-fr/blog/foxycape-pdf-obsidian":3,"blog-list-fr-fr":270},{"id":4,"title":5,"body":6,"config":254,"date":255,"description":256,"draft":257,"extension":258,"image":254,"meta":259,"navigation":260,"path":261,"seo":262,"stem":263,"tags":264,"toolbar":254,"translationKey":268,"updated":255,"__hash__":269},"blog/fr-fr/blog/foxycape-pdf-obsidian.md","Foxycape PDF — Un lecteur PDF pour Obsidian qui reste connecté à vos notes",{"type":7,"value":8,"toc":237},"minimark",[9,17,23,26,31,34,53,56,60,65,68,74,78,81,86,90,93,121,126,130,133,138,143,147,159,164,168,171,176,180,183,188,192,199,204,208,211,216,221,225,232],[10,11,12],"p",{},[13,14],"img",{"alt":15,"src":16},"Foxycape PDF","https://cdn.linghuxiong.com/resources/obsidian/introduce/logo-64x64.png",[18,19,20],"blockquote",{},[10,21,22],{},"Un lecteur PDF pour Obsidian qui reste connecté à vos notes — surlignages, citations et liens profonds qui vous ramènent à la source.",[24,25],"hr",{},[27,28,30],"h2",{"id":29},"pourquoi","Pourquoi",[10,32,33],{},"Lire des PDF dans Obsidian casse souvent la boucle de prise de notes :",[35,36,37,41,44,47,50],"ul",{},[38,39,40],"li",{},"Les surlignages restent dans le PDF ; vos notes du vault restent ailleurs.",[38,42,43],{},"Capturer une figure signifie généralement une capture d’écran floue.",[38,45,46],{},"Les citations et images collées pointent rarement vers la page ou la région exacte.",[38,48,49],{},"Les pages PDF claires paraissent agressives dans un thème de vault sombre.",[38,51,52],{},"Changer de lecteur peut casser les liens de page/sélection que vous utilisez déjà.",[10,54,55],{},"Foxycape PDF comble ces lacunes sans vous demander de quitter Obsidian.",[27,57,59],{"id":58},"fonctionnalités","Fonctionnalités",[61,62,64],"h3",{"id":63},"surlignage-synchronisation-avec-les-notes","Surlignage → synchronisation avec les notes",[10,66,67],{},"Au lieu de laisser les surlignages isolés dans le PDF, chaque nouveau surlignage peut créer ou mettre à jour une note Markdown du même nom, ajouter l’extrait avec un lien retour, et éventuellement ouvrir cette note dans un volet partagé. Désactivable à tout moment dans les paramètres.",[10,69,70],{},[13,71],{"alt":72,"src":73},"","https://cdn.linghuxiong.com/resources/obsidian/introduce/highlight-notes.gif",[61,75,77],{"id":76},"extraire-les-images-intégrées","Extraire les images intégrées",[10,79,80],{},"Oubliez les captures d’écran floues. Survolez une image intégrée (ou utilisez le contrôle tactile sur mobile) pour prévisualiser, copier ou télécharger l’actif original.",[10,82,83],{},[13,84],{"alt":72,"src":85},"https://cdn.linghuxiong.com/resources/obsidian/introduce/embed-images.gif",[61,87,89],{"id":88},"citer-texte-et-images-puis-revenir","Citer texte et images, puis revenir",[10,91,92],{},"Les citations restent liées à la source, pour revenir au PDF depuis la note plus tard :",[35,94,95,110,113],{},[38,96,97,98,102,103,102,106,109],{},"Copier une citation textuelle en Markdown avec un lien profond (",[99,100,101],"code",{},"#page="," / ",[99,104,105],{},"#selection=",[99,107,108],{},"#markId=",").",[38,111,112],{},"Copier une citation d’image ; coller dans Markdown pour enregistrer un PNG à côté du PDF et insérer un lien cliquable.",[38,114,115,116,120],{},"Clic droit sur l’image dans la note → ",[117,118,119],"strong",{},"Ouvrir dans Foxycape"," pour revenir à la page et surligner la région d’origine.",[10,122,123],{},[13,124],{"alt":72,"src":125},"https://cdn.linghuxiong.com/resources/obsidian/introduce/cite-and-back.gif",[61,127,129],{"id":128},"pages-pdf-adaptées-au-thème","Pages PDF adaptées au thème",[10,131,132],{},"Les pages PDF claires peuvent heurter un vault sombre. Remappez optionnellement les couleurs vectorielles en niveaux de gris vers l’avant-plan/arrière-plan de votre thème (BETA) — pour tous les thèmes, sombre uniquement ou clair uniquement. Les illustrations en couleur restent inchangées.",[10,134,135],{},[13,136],{"alt":72,"src":137},"https://cdn.linghuxiong.com/resources/obsidian/introduce/theme-adapt.gif",[10,139,140],{},[13,141],{"alt":72,"src":142},"https://cdn.linghuxiong.com/resources/obsidian/introduce/theme-adapt-dark.gif",[61,144,146],{"id":145},"compatible-avec-les-liens-pdf-intégrés-dobsidian","Compatible avec les liens PDF intégrés d’Obsidian",[10,148,149,150,152,153,155,156,158],{},"Changer de lecteur ne devrait pas casser vos liens existants. Foxycape comprend les liens de style Obsidian ",[99,151,101],{}," et ",[99,154,105],{},", peut devenir le lecteur PDF par défaut, réutilise un onglet ouvert quand c’est possible, et ajoute ",[99,157,108],{}," pour des sauts précis vers les surlignages.",[10,160,161],{},[13,162],{"alt":72,"src":163},"https://cdn.linghuxiong.com/resources/obsidian/introduce/compat-links.gif",[61,165,167],{"id":166},"surlignages-et-liste-des-surlignages","Surlignages et liste des surlignages",[10,169,170],{},"Surligneur, soulignement ondulé et soulignement droit avec couleurs personnalisées. Parcourez les surlignages dans une liste — filtrez, triez, accédez ou supprimez.",[10,172,173],{},[13,174],{"alt":72,"src":175},"https://cdn.linghuxiong.com/resources/obsidian/introduce/annotations.gif",[61,177,179],{"id":178},"copie-intelligente-supprimer-les-retours-à-la-ligne-souples","Copie intelligente — supprimer les retours à la ligne souples",[10,181,182],{},"Les lignes PDF insèrent souvent des coupures dures au milieu d’une phrase. Sélectionnez et copiez comme d’habitude : Foxycape supprime ces retours souples pour que le collage se lise comme un texte continu, tout en conservant les vrais sauts de paragraphe.",[10,184,185],{},[13,186],{"alt":72,"src":187},"https://cdn.linghuxiong.com/resources/obsidian/introduce/smart-copy.gif",[61,189,191],{"id":190},"navigation-et-recherche","Navigation et recherche",[10,193,194,195,198],{},"Plan (table des matières), vignettes de pages, sélecteur de page et recherche dans le document (",[99,196,197],{},"Mod+F",") avec options casse / diacritiques / mot entier. La recherche utilise la couche texte du PDF (pas d’OCR).",[10,200,201],{},[13,202],{"alt":72,"src":203},"https://cdn.linghuxiong.com/resources/obsidian/introduce/navigate-search.gif",[61,205,207],{"id":206},"mise-en-page-de-lecture","Mise en page de lecture",[10,209,210],{},"Zoom (auto / largeur de page / pourcentages), défilement vertical ou horizontal, mise en page simple / double / livre, rotation de page, PDF protégés par mot de passe. Fonctionne sur bureau et mobile.",[10,212,213],{},[13,214],{"alt":72,"src":215},"https://cdn.linghuxiong.com/resources/obsidian/introduce/layout.gif",[10,217,218],{},[13,219],{"alt":72,"src":220},"https://cdn.linghuxiong.com/resources/obsidian/introduce/layout-1.gif",[61,222,224],{"id":223},"définir-comme-lecteur-pdf-par-défaut","Définir comme lecteur PDF par défaut",[10,226,227,228,231],{},"Pour l’expérience la plus fluide — liens profonds, surlignages et pages adaptées au thème — activez ",[117,229,230],{},"Utiliser comme lecteur PDF par défaut"," dans les paramètres Foxycape pour qu’Obsidian ouvre les PDF avec Foxycape par défaut.",[10,233,234],{},[13,235],{"alt":72,"src":236},"https://cdn.linghuxiong.com/resources/obsidian/introduce/set-default.gif",{"title":72,"searchDepth":238,"depth":238,"links":239},2,[240,241],{"id":29,"depth":238,"text":30},{"id":58,"depth":238,"text":59,"children":242},[243,245,246,247,248,249,250,251,252,253],{"id":63,"depth":244,"text":64},3,{"id":76,"depth":244,"text":77},{"id":88,"depth":244,"text":89},{"id":128,"depth":244,"text":129},{"id":145,"depth":244,"text":146},{"id":166,"depth":244,"text":167},{"id":178,"depth":244,"text":179},{"id":190,"depth":244,"text":191},{"id":206,"depth":244,"text":207},{"id":223,"depth":244,"text":224},null,"2026-08-11","Surlignages, citations et liens profonds qui vous ramènent à la source — Foxycape PDF maintient lecture et prise de notes dans Obsidian dans une boucle unique.",false,"md",{},true,"/fr-fr/blog/foxycape-pdf-obsidian",{"title":5,"description":256},"fr-fr/blog/foxycape-pdf-obsidian",[265,266,267],"Obsidian","PDF","Foxycape","foxycape-pdf-obsidian","K_Hv2rvMZvhRK25KqrkLaTqUKDm1VhaCCSAAlQnqqYI",[271,436],{"id":4,"title":5,"body":272,"config":254,"date":255,"description":256,"draft":257,"extension":258,"image":254,"meta":433,"navigation":260,"path":261,"seo":434,"stem":263,"tags":435,"toolbar":254,"translationKey":268,"updated":255,"__hash__":269},{"type":7,"value":273,"toc":418},[274,278,282,284,286,288,300,302,304,306,308,312,314,316,320,322,324,340,344,346,348,352,356,358,366,370,372,374,378,380,382,386,388,392,396,398,400,404,408,410,414],[10,275,276],{},[13,277],{"alt":15,"src":16},[18,279,280],{},[10,281,22],{},[24,283],{},[27,285,30],{"id":29},[10,287,33],{},[35,289,290,292,294,296,298],{},[38,291,40],{},[38,293,43],{},[38,295,46],{},[38,297,49],{},[38,299,52],{},[10,301,55],{},[27,303,59],{"id":58},[61,305,64],{"id":63},[10,307,67],{},[10,309,310],{},[13,311],{"alt":72,"src":73},[61,313,77],{"id":76},[10,315,80],{},[10,317,318],{},[13,319],{"alt":72,"src":85},[61,321,89],{"id":88},[10,323,92],{},[35,325,326,334,336],{},[38,327,97,328,102,330,102,332,109],{},[99,329,101],{},[99,331,105],{},[99,333,108],{},[38,335,112],{},[38,337,115,338,120],{},[117,339,119],{},[10,341,342],{},[13,343],{"alt":72,"src":125},[61,345,129],{"id":128},[10,347,132],{},[10,349,350],{},[13,351],{"alt":72,"src":137},[10,353,354],{},[13,355],{"alt":72,"src":142},[61,357,146],{"id":145},[10,359,149,360,152,362,155,364,158],{},[99,361,101],{},[99,363,105],{},[99,365,108],{},[10,367,368],{},[13,369],{"alt":72,"src":163},[61,371,167],{"id":166},[10,373,170],{},[10,375,376],{},[13,377],{"alt":72,"src":175},[61,379,179],{"id":178},[10,381,182],{},[10,383,384],{},[13,385],{"alt":72,"src":187},[61,387,191],{"id":190},[10,389,194,390,198],{},[99,391,197],{},[10,393,394],{},[13,395],{"alt":72,"src":203},[61,397,207],{"id":206},[10,399,210],{},[10,401,402],{},[13,403],{"alt":72,"src":215},[10,405,406],{},[13,407],{"alt":72,"src":220},[61,409,224],{"id":223},[10,411,227,412,231],{},[117,413,230],{},[10,415,416],{},[13,417],{"alt":72,"src":236},{"title":72,"searchDepth":238,"depth":238,"links":419},[420,421],{"id":29,"depth":238,"text":30},{"id":58,"depth":238,"text":59,"children":422},[423,424,425,426,427,428,429,430,431,432],{"id":63,"depth":244,"text":64},{"id":76,"depth":244,"text":77},{"id":88,"depth":244,"text":89},{"id":128,"depth":244,"text":129},{"id":145,"depth":244,"text":146},{"id":166,"depth":244,"text":167},{"id":178,"depth":244,"text":179},{"id":190,"depth":244,"text":191},{"id":206,"depth":244,"text":207},{"id":223,"depth":244,"text":224},{},{"title":5,"description":256},[265,266,267],{"id":437,"title":438,"body":439,"config":254,"date":1829,"description":1830,"draft":257,"extension":258,"image":254,"meta":1831,"navigation":260,"path":1832,"seo":1833,"stem":1834,"tags":1835,"toolbar":254,"translationKey":1839,"updated":1829,"__hash__":1840},"blog/fr-fr/blog/zero-hallucination-qa.md","Comment j'ai implémenté le Q&R sans hallucination dans notre lecteur",{"type":7,"value":440,"toc":1795},[441,447,460,462,466,473,478,482,500,505,516,521,555,558,562,579,586,590,605,610,647,654,658,671,696,701,818,836,842,844,848,855,870,877,897,903,905,909,912,918,920,924,947,956,1016,1019,1030,1039,1046,1048,1052,1063,1069,1076,1080,1087,1095,1102,1106,1116,1159,1170,1176,1178,1182,1197,1205,1211,1214,1249,1259,1267,1273,1280,1284,1292,1298,1309,1311,1315,1321,1325,1332,1336,1359,1366,1368,1372,1378,1436,1442,1444,1448,1455,1474,1478,1498,1509,1511,1515,1526,1529,1552,1563,1569,1571,1575,1590,1601,1603,1607,1628,1639,1641,1645,1664,1670,1672,1676,1763,1770,1781],[10,442,443],{},[13,444],{"alt":445,"src":446},"Couverture : Q&R sans hallucination","https://cdn.linghuxiong.com/resources/snapshots/ai-chat-cover.png",[18,448,449],{},[10,450,451,452,455,456,459],{},"Cet article décrit l'implémentation technique du ",[117,453,454],{},"Q&R sans hallucination"," dans notre lecteur IA : les réponses s'appuient strictement sur le texte du livre ouvert, et les affirmations clés peuvent être ",[117,457,458],{},"retrouvées en un clic"," jusqu'au passage exact. Si vous développez la lecture IA, le Q&A documentaire ou des applications de type RAG, nous espérons que trois itérations et l'architecture finale vous seront utiles.",[24,461],{},[27,463,465],{"id":464},"i-évolution-en-trois-étapes","I. Évolution en trois étapes",[10,467,468,469,472],{},"Le Q&R sans hallucination n'a pas été conçu parfaitement dès le départ. Il a évolué sous la tension entre ",[117,470,471],{},"coût, latence et précision",". Voici les trois étapes dans l'ordre chronologique—pour comprendre pourquoi l'architecture actuelle a cette forme.",[474,475],"mermaid",{":config":476,"code":477},"config","flowchart%20LR%0A%20%20%20%20P1%5B%C3%89tape%201%20%3A%20Texte%20int%C3%A9gral%5D%20--%3E%20P2%5B%C3%89tape%202%20%3A%20LLM%20phrases%20cl%C3%A9s%5D%0A%20%20%20%20P2%20--%3E%20P3%5B%C3%89tape%203%20%3A%20Index%20segments%20%2B%20Tool%5D%0A%20%20%20%20P1%20-.-%3E%7CLent%2C%20co%C3%BBteux%2C%20impr%C3%A9cis%20sur%20longs%20ouvrages%7C%20X1%5BAbandonn%C3%A9%5D%0A%20%20%20%20P2%20-.-%3E%7CPerte%20de%20d%C3%A9tail%2C%20encore%20lent%7C%20X2%5BAbandonn%C3%A9%5D%0A%20%20%20%20P3%20--%3E%7CActuel%7C%20OK%5BZ%C3%A9ro%20hallucination%20%2B%20tra%C3%A7able%5D",[61,479,481],{"id":480},"étape-1-injecter-tout-le-livre-dans-le-contexte-le-plus-simpleet-le-premier-à-craquer","Étape 1 : Injecter tout le livre dans le contexte (le plus simple—et le premier à craquer)",[10,483,484,487,488,491,492,495,496,499],{},[117,485,486],{},"Approche :"," Quand l'utilisateur ouvre un livre et pose une question, placer ",[117,489,490],{},"tout le corps de texte extrait"," dans le system prompt ou le message utilisateur, puis laisser le modèle de dialogue répondre. Si le livre dépasse environ ",[117,493,494],{},"400 000 caractères",", ",[117,497,498],{},"troncature brutale","—seul le début est conservé ; les chapitres suivants sont invisibles pour le modèle.",[10,501,502],{},[117,503,504],{},"Avantages :",[35,506,507,510,513],{},[38,508,509],{},"Coût d'implémentation très faible, presque pas de prétraitement ;",[38,511,512],{},"Résultats corrects sur les livres courts et documents simples—le modèle a vraiment « vu tout le livre » ;",[38,514,515],{},"UX simple : poser une question, obtenir une réponse, sans état « veuillez patienter pendant l'analyse ».",[10,517,518],{},[117,519,520],{},"Inconvénients (rapidement inacceptables) :",[35,522,523,529,535,545],{},[38,524,525,528],{},[117,526,527],{},"Réponses lentes :"," Chaque question renvoie une charge énorme ; le délai jusqu'au premier token et la latence totale augmentent avec la longueur du livre ;",[38,530,531,534],{},[117,532,533],{},"Coût token élevé :"," Vous payez l'intégralité du livre en entrée à chaque question ;",[38,536,537,540,541,544],{},[117,538,539],{},"Longs ouvrages fortement déformés :"," Au-delà de 400k caractères, la seconde moitié, les annexes et les conclusions n'existent pratiquement plus—et l'UI ",[117,542,543],{},"n'indique souvent pas clairement"," la troncature ;",[38,546,547,550,551,554],{},[117,548,549],{},"Granularité de recherche nulle :"," Le modèle doit « trouver une aiguille dans une botte de foin » sur des centaines de milliers de caractères—risque de manquer des détails et de produire des ",[117,552,553],{},"résumés plausibles sans fondement","—exactement ce qu'il faut éviter en lecture.",[10,556,557],{},"L'étape 1 convient à un MVP, pas à une solution produit.",[61,559,561],{"id":560},"étape-2-un-llm-léger-extrait-des-phrases-clés-compresser-le-contextetrop-agressivement","Étape 2 : Un LLM léger extrait des phrases clés (compresser le contexte—trop agressivement)",[10,563,564,566,567,570,571,574,575,578],{},[117,565,486],{}," Avant le Q&R (ou à la première ouverture), faire tourner un ",[117,568,569],{},"modèle moins cher"," sur le corps : découpage par chapitre spine (ou par blocs), extraction de ",[117,572,573],{},"phrases clés",", conservation des tags de position comme ",[99,576,577],{},"[fFichier-début-fin]",", puis concaténation en un contexte plus court pour le Q&R ultérieur.",[10,580,581,582,585],{},"Pipeline typique : ",[117,583,584],{},"Extract → Cache → Chat",". Extraire une fois (hors ligne ou à la demande), stocker un « paquet de phrases clés », le réutiliser à chaque question—comme beaucoup de prototypes document Q&A : compresser d'abord, répondre ensuite.",[10,587,588],{},[117,589,504],{},[35,591,592,599,602],{},[38,593,594,595,598],{},"Chaque question envoie ",[117,596,597],{},"beaucoup moins de texte"," ; la consommation de tokens par requête baisse par rapport à l'étape 1 ;",[38,600,601],{},"Le prétraitement peut être mis en cache ; pas de ré-extraction par question sur le même livre ;",[38,603,604],{},"Les tags de position posent les bases des citations.",[10,606,607],{},[117,608,609],{},"Inconvénients (encore insuffisant sur les longs ouvrages) :",[35,611,612,618,628,637],{},[38,613,614,617],{},[117,615,616],{},"Perte importante de détails :"," Les « phrases clés » sont choisies par le modèle ; qualificateurs, contre-exemples et chaînes d'argumentation disparaissent souvent—réponses « correctes mais unilatérales » ;",[38,619,620,623,624,627],{},[117,621,622],{},"Contexte encore volumineux sur les gros ouvrages :"," Même les paquets de phrases clés restent conséquents—latence et coût ",[117,625,626],{},"atténués, pas résolus"," ;",[38,629,630,633,634,627],{},[117,631,632],{},"Double erreur LLM :"," L'extraction peut omettre ; le Q&R peut mal lire les extraits—les erreurs ",[117,635,636],{},"s'accumulent",[38,638,639,642,643,646],{},[117,640,641],{},"Contexte statique :"," Que la question porte sur un chapitre ou la structure globale, le modèle reçoit toujours ",[117,644,645],{},"le même blob pré-extrait","—pas de rétrécissement dynamique selon la question.",[10,648,649,650,653],{},"La leçon : le problème n'est pas « de compresser ou non », mais ",[117,651,652],{},"« si la compression est à la demande et si l'on peut revenir au texte source »",".",[61,655,657],{"id":656},"étape-3-index-de-segments-tool-à-la-demande-retour-du-texte-source-actuel","Étape 3 : Index de segments + Tool à la demande + retour du texte source (actuel)",[10,659,660,662,663,670],{},[117,661,486],{}," Inspiré de ",[664,665,669],"a",{"href":666,"rel":667},"https://github.com/VectifyAI/PageIndex",[668],"nofollow","PageIndex",". Par rapport à l'étape 2, trois changements majeurs :",[672,673,674,680,690],"ol",{},[38,675,676,679],{},[117,677,678],{},"Le prétraitement produit un index structuré"," (résumés au niveau TOC + spans de caractères exacts), pas des extraits utilisés directement comme contexte Q&R ;",[38,681,682,685,686,689],{},[117,683,684],{},"Chaque question utilise le Tool Calling pour chercher à la demande",", puis ",[117,687,688],{},"récupère le texte source avec tags de position"," pour répondre ;",[38,691,692,695],{},[117,693,694],{},"System prompt + frontend"," imposent le format de citation et permettent clic → saut → surlignage dans le lecteur.",[10,697,698],{},[117,699,700],{},"Comparaison des trois étapes :",[702,703,704,723],"table",{},[705,706,707],"thead",{},[708,709,710,714,717,720],"tr",{},[711,712,713],"th",{},"Dimension",[711,715,716],{},"Étape 1 (texte intégral)",[711,718,719],{},"Étape 2 (phrases clés)",[711,721,722],{},"Étape 3 (actuel)",[724,725,726,745,759,773,787,804],"tbody",{},[708,727,728,732,735,738],{},[729,730,731],"td",{},"Contexte par question",[729,733,734],{},"Livre entier (ou première moitié tronquée)",[729,736,737],{},"Phrases clés pré-extraites",[729,739,740,741,744],{},"Uniquement extraits de ",[117,742,743],{},"source"," pertinents",[708,746,747,750,753,756],{},[729,748,749],{},"Précision sur longs ouvrages",[729,751,752],{},"Effondrement au-delà de ~400k",[729,754,755],{},"Dépend de l'extraction ; perte de détail",[729,757,758],{},"Recherche par TOC/span ; pas de troncature brutale du livre entier",[708,760,761,764,767,770],{},[729,762,763],{},"Vitesse de réponse",[729,765,766],{},"Lente",[729,768,769],{},"Un peu mieux ; longs ouvrages encore lents",[729,771,772],{},"Recherche + contexte court—nettement plus rapide",[708,774,775,778,781,784],{},[729,776,777],{},"Coût token",[729,779,780],{},"Très élevé",[729,782,783],{},"Moyen-élevé",[729,785,786],{},"Prétraitement amorti + paiement à la demande",[708,788,789,792,795,798],{},[729,790,791],{},"Traçabilité",[729,793,794],{},"Faible (citations difficiles)",[729,796,797],{},"Tags présents mais contenu filtré",[729,799,800,801],{},"Notes de bas de page → ",[117,802,803],{},"vrais spans source",[708,805,806,809,812,815],{},[729,807,808],{},"Complexité technique",[729,810,811],{},"Faible",[729,813,814],{},"Moyenne",[729,816,817],{},"Élevée",[10,819,820,823,824,827,828,831,832,835],{},[117,821,822],{},"Pourquoi nous nous sommes arrêtés à l'étape 3 :"," En lecture, zéro hallucination ne signifie pas « montrer au modèle le plus de texte possible », mais ",[117,825,826],{},"« avant de répondre, obtenir des preuves source pour la question »",". Les étapes 1–2 luttaient sur la ",[117,829,830],{},"taille du contexte"," ; l'étape 3 découpe le pipeline en ",[117,833,834],{},"index (prétraitement) → recherche (Tool) → preuve (source) → réponse (génération contrainte)","—équilibre précision, coût et traçabilité.",[10,837,838,839,653],{},"Ci-dessous le détail de ",[117,840,841],{},"l'étape 3",[24,843],{},[27,845,847],{"id":846},"ii-définition-du-problème-en-qr-livre-lhallucination-coûte-plus-cher-que-dans-un-chat-générique","II. Définition du problème : En Q&R livre, l'hallucination coûte plus cher que dans un chat générique",[10,849,850,851,854],{},"Les utilisateurs tolèrent parfois des erreurs dans un chatbot général. En ",[117,852,853],{},"Q&R livre",", le prix est plus élevé :",[35,856,857,864,867],{},[38,858,859,860,863],{},"Ils demandent ce que ",[117,861,862],{},"ce livre"," dit—not ce qui vit dans la mémoire paramétrique du modèle ;",[38,865,866],{},"Une « opinion du livre » plausible peut induire en erreur notes, citations et partages ;",[38,868,869],{},"Sans sources, pas de vérification—la confiance est difficile à établir.",[10,871,872,873,876],{},"« Zéro hallucination » devient donc trois règles ",[117,874,875],{},"applicables"," :",[672,878,879,885,891],{},[38,880,881,884],{},[117,882,883],{},"Les questions livre doivent d'abord interroger le livre :"," Tout ce qui peut concerner le livre ouvert passe par la recherche (Tool) avant la réponse ;",[38,886,887,890],{},[117,888,889],{},"Les réponses doivent être traçables :"," Les affirmations clés portent des tags de position que l'UI peut parser et atteindre ;",[38,892,893,896],{},[117,894,895],{},"Dire quand on ne trouve pas :"," Si le livre ne contient pas l'information, le dire—ne pas habiller des connaissances générales en « ce que dit le livre ».",[10,898,899,900,902],{},"La suite suit le flux de données de ",[117,901,841],{}," et la mise en œuvre de ces règles.",[24,904],{},[27,906,908],{"id":907},"iii-architecture-prétraitement-tool-génération-contrainte-citations-cliquables","III. Architecture : Prétraitement → Tool → Génération contrainte → Citations cliquables",[474,910],{":config":476,"code":911},"flowchart%20TB%0A%20%20%20%20subgraph%20prep%20%5BHors%20ligne%20%2F%20premier%20pr%C3%A9traitement%5D%0A%20%20%20%20%20%20%20%20A%5BD%C3%A9couper%20le%20livre%20par%20TOC%20ou%20longueur%5D%20--%3E%20B%5BR%C3%A9sum%C3%A9s%20de%20segments%20LLM%5D%0A%20%20%20%20%20%20%20%20B%20--%3E%20C%5BPersister%20le%20cache%20Segment%20localement%5D%0A%20%20%20%20end%0A%0A%20%20%20%20subgraph%20ask%20%5BQuestion%20utilisateur%5D%0A%20%20%20%20%20%20%20%20D%5BSaisie%20utilisateur%5D%20--%3E%20E%7BCache%20Segment%20existant%20%3F%7D%0A%20%20%20%20%20%20%20%20E%20--%3E%7CNon%7C%20F%5BExtraire%20texte%20int%C3%A9gral%20%2F%20proposer%20pr%C3%A9traitement%5D%0A%20%20%20%20%20%20%20%20F%20--%3E%20prep%0A%20%20%20%20%20%20%20%20E%20--%3E%7COui%7C%20G%5BEnregistrer%20Tool%20Calling%5D%0A%20%20%20%20end%0A%0A%20%20%20%20subgraph%20retrieve%20%5BRecherche%20Tool%5D%0A%20%20%20%20%20%20%20%20G%20--%3E%20H%7BType%20de%20question%7D%0A%20%20%20%20%20%20%20%20H%20--%3E%7CVue%20d'ensemble%20%2F%20critique%7C%20I%5Bget_full_book_segment_summaries%5D%0A%20%20%20%20%20%20%20%20H%20--%3E%7CFaits%20%2F%20personnes%20%2F%20chapitre%7C%20J%5Bget_related_segment_summaries%5D%0A%20%20%20%20%20%20%20%20J%20--%3E%20K%5BLLM%20choisit%20les%20ID%20de%20segments%20dans%20le%20catalogue%5D%0A%20%20%20%20%20%20%20%20K%20--%3E%20L%5BR%C3%A9cup%C3%A9rer%20source%20par%20span%20%2B%20tags%20de%20position%5D%0A%20%20%20%20%20%20%20%20I%20--%3E%20M%5BConcat%C3%A9ner%20tous%20les%20r%C3%A9sum%C3%A9s%20de%20segments%5D%0A%20%20%20%20end%0A%0A%20%20%20%20subgraph%20answer%20%5BG%C3%A9n%C3%A9rer%20et%20afficher%5D%0A%20%20%20%20%20%20%20%20L%20--%3E%20N%5BR%C3%A9sultats%20Tool%20vers%20le%20mod%C3%A8le%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%5BR%C3%A8gles%20de%20citation%20du%20system%20prompt%5D%0A%20%20%20%20%20%20%20%20O%20--%3E%20P%5BR%C3%A9ponse%20en%20flux%20%2B%20notes%20de%20position%5D%0A%20%20%20%20%20%20%20%20P%20--%3E%20Q%5BAfficher%20notes%20cliquables%5D%0A%20%20%20%20%20%20%20%20Q%20--%3E%20R%5BClic%20%E2%86%92%20aper%C3%A7u%20%E2%86%92%20saut%20et%20surlignage%5D%0A%20%20%20%20end",[10,913,914,915],{},"Idée centrale : ",[117,916,917],{},"ne pas laisser le modèle « répondre de mémoire »—l'obliger à « rassembler des preuves, répondre, marquer les sources ».",[24,919],{},[27,921,923],{"id":922},"iv-prétraitement-transformer-le-livre-en-index-de-segments-consultable","IV. Prétraitement : Transformer le livre en index de segments consultable",[10,925,926,927,930,931,934,935,938,939,942,943,946],{},"Si chaque question utilisait encore le contexte ",[117,928,929],{},"étape 1"," du livre entier, les longs ouvrages explosent le budget token et la recherche est trop grossière. Étape 3 : au premier chat IA sur un livre, lancer en arrière-plan un ",[117,932,933],{},"job de résumé de segments","—découpage par ",[117,936,937],{},"TOC"," ou ",[117,940,941],{},"longueur de texte"," en ",[99,944,945],{},"Segment","s, résumé de chacun, persistance en IndexedDB locale.",[10,948,949,950,952,953,876],{},"Chaque ",[99,951,945],{}," contient le résumé plus la ",[117,954,955],{},"position physique dans le corps",[702,957,958,968],{},[705,959,960],{},[708,961,962,965],{},[711,963,964],{},"Champ",[711,966,967],{},"Signification",[724,969,970,983,996,1006],{},[708,971,972,980],{},[729,973,974,102,977],{},[99,975,976],{},"startFileIndex",[99,978,979],{},"endFileIndex",[729,981,982],{},"Index de fichier spine (PDF : un fichier par page)",[708,984,985,993],{},[729,986,987,102,990],{},[99,988,989],{},"startOffset",[99,991,992],{},"endOffset",[729,994,995],{},"Début/fin en caractères",[708,997,998,1003],{},[729,999,1000],{},[99,1001,1002],{},"sequence",[729,1004,1005],{},"Ordre de lecture linéaire",[708,1007,1008,1013],{},[729,1009,1010],{},[99,1011,1012],{},"title",[729,1014,1015],{},"Titre TOC",[10,1017,1018],{},"Le découpage équilibre précision et coût : nœud TOC sous ~20 Ko → résumer ce nœud seul ; nœuds frères fusionnés en lots (15–20 Ko) avant appel LLM ; blocs longs non structurés en plages ~30–40k caractères.",[10,1020,1021,1022,1025,1026,1029],{},"Le system prompt de résumé exige de ",[117,1023,1024],{},"conserver les tags de position inline"," (",[99,1027,1028],{},"[fNombre-Nombre-Nombre]",") pour que la source récupérée par Tool s'aligne sur les offsets spine. Contrainte centrale :",[1031,1032,1037],"pre",{"className":1033,"code":1035,"language":1036,"meta":72},[1034],"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",[99,1038,1035],{"__ignoreMap":72},[10,1040,1041,1042,1045],{},"Après prétraitement, le Q&R dépend d'un ",[117,1043,1044],{},"index de segments structuré",", pas du contexte livre entier—prérequis technique du zéro hallucination sur longs ouvrages.",[24,1047],{},[27,1049,1051],{"id":1050},"v-système-de-tags-de-position-encoder-le-doù-dans-le-texte","V. Système de tags de position : Encoder le « d'où » dans le texte",[10,1053,1054,1055,1058,1059,1062],{},"Le zéro hallucination exige du contenu source ",[117,1056,1057],{},"et"," une ",[117,1060,1061],{},"provenance"," analysable par machine et atteignable dans l'UI. Nous utilisons des tags inline :",[1031,1064,1067],{"className":1065,"code":1066,"language":1036},[1034],"[f{fileIndex}-{startChar}-{endChar}]\n",[99,1068,1066],{"__ignoreMap":72},[10,1070,1071,1072,1075],{},"Exemple : ",[99,1073,1074],{},"[f5-123-165]"," = fichier spine 5 (base 0), caractères 123–165.",[61,1077,1079],{"id":1078},"_51-comment-les-tags-sont-écrits-dans-le-corps","5.1 Comment les tags sont écrits dans le corps",[10,1081,1082,1083,1086],{},"La couche d'extraction ajoute ",[99,1084,1085],{},"[f{fileIndex}-{start}-{end}]"," en fin de segment :",[1031,1088,1093],{"className":1089,"code":1091,"language":1092,"meta":72},[1090],"language-typescript","const position = `[f${fileIndex}-${absOffset}-${absOffset + segment.length}]`;\nfileLines.push(segment.text.trim() + position);\n","typescript",[99,1094,1091],{"__ignoreMap":72},[10,1096,1097,1098,1101],{},"Résumés de prétraitement ou extraits Tool : les positions s'alignent sur les ",[117,1099,1100],{},"offsets caractères spine","—pas des numéros de page estimés par le modèle.",[61,1103,1105],{"id":1104},"_52-contraintes-sur-la-sortie-du-modèle","5.2 Contraintes sur la sortie du modèle",[10,1107,1108,1109,1115],{},"Le system prompt inclut ",[117,1110,1111],{},[1112,1113,1114],"span",{},"Position Citation Rules","—cinq points essentiels :",[672,1117,1118,1128,1138,1144,1153],{},[38,1119,1120,1123,1124,1127],{},[117,1121,1122],{},"Format standard :"," Doit utiliser ",[99,1125,1126],{},"[f_fileIndex-startChar-endChar]"," ; les trois parties numériques obligatoires ;",[38,1129,1130,1133,1134,1137],{},[117,1131,1132],{},"Copier uniquement depuis les sources actuelles :"," Notes ",[117,1135,1136],{},"verbatim"," des messages system/user ou retours Tool de ce tour ;",[38,1139,1140,1143],{},[117,1141,1142],{},"Pas de fabrication :"," Ne pas calculer, modifier ou inventer des positions ;",[38,1145,1146,1149,1150,627],{},[117,1147,1148],{},"Préférer l'omission :"," Pas de tag valide dans le contexte → répondre normalement—",[117,1151,1152],{},"ne pas émettre de tags de position",[38,1154,1155,1158],{},[117,1156,1157],{},"Inline avec les affirmations :"," Tags après la phrase concernée ; pas de listes de citations en fin de réponse.",[10,1160,1161,1162,1165,1166,1169],{},"L'UI filtre aussi les tags ",[117,1163,1164],{},"bipartites"," invalides occasionnels (ex. ",[99,1167,1168],{},"[f1-293]",") avant rendu.",[10,1171,1172],{},[13,1173],{"alt":1174,"src":1175},"Popup de traçage des citations","https://cdn.linghuxiong.com/resources/snapshots/ai-chat.png",[24,1177],{},[27,1179,1181],{"id":1180},"vi-tool-calling-dabord-chercher-ensuite-répondre","VI. Tool Calling : D'abord chercher, ensuite répondre",[10,1183,1184,1185,1188,1189,1192,1193,1196],{},"Quand le chat est lié à un livre (",[99,1186,1187],{},"resourceId"," présent, ",[99,1190,1191],{},"chatType === 'chat'","), nous enregistrons deux Tools avec executors avant chaque génération—boucle ",[117,1194,1195],{},"function calling"," compatible OpenAI.",[61,1198,1200,1201,1204],{"id":1199},"_61-get_related_segment_summaries-recherche-ciblée-de-segments","6.1 ",[99,1202,1203],{},"get_related_segment_summaries"," — Recherche ciblée de segments",[10,1206,1207,1208,653],{},"Pour : concepts, personnages, intrigue, détails de chapitre—",[117,1209,1210],{},"intention de recherche claire",[10,1212,1213],{},"Flux :",[672,1215,1216,1223,1229,1232,1242],{},[38,1217,1218,1219,1222],{},"Le modèle reformule la question en ",[117,1220,1221],{},"termes susceptibles d'apparaître dans le livre"," (« Optimize Search Queries » dans le system prompt) ;",[38,1224,1225,1226,627],{},"Appel Tool avec ",[99,1227,1228],{},"question",[38,1230,1231],{},"Grouper toutes les résumés de segments par budget token (~30k tokens par lot, max 5 lots) ;",[38,1233,1234,1235,1238,1239,627],{},"Par lot : requête LLM séparée choisit les ID pertinents (max 5) dans ",[99,1236,1237],{},"{ id, title, summary }",", JSON du type ",[99,1240,1241],{},"{\"Thinking\":\"...\",\"answer\":[\"1\",\"3\"]}",[38,1243,1244,1245,1248],{},"Pour les segments choisis, tirer le ",[117,1246,1247],{},"texte source tagué"," du spine—not les résumés—comme résultat Tool.",[10,1250,1251,1254,1255,1258],{},[117,1252,1253],{},"Design clé : le Tool renvoie la source, pas les résumés."," Le modèle répond à partir de vrais paragraphes avec ",[99,1256,1257],{},"[f…]"," inline, évitant la dérive « résumé → re-résumé ».",[61,1260,1262,1263,1266],{"id":1261},"_62-get_full_book_segment_summaries-vue-densemble-du-livre","6.2 ",[99,1264,1265],{},"get_full_book_segment_summaries"," — Vue d'ensemble du livre",[10,1268,1269,1270,653],{},"Pour : « résumer le livre », « critiquer ce livre », « structure/thèmes globaux »—",[117,1271,1272],{},"vue globale",[10,1274,1275,1276,1279],{},"Concaténer tous les champs ",[99,1277,1278],{},"summary"," des segments dans l'ordre de lecture—éviter de manquer des chapitres clés par pertinence par morceau seule.",[61,1281,1283],{"id":1282},"_63-system-prompt-livre-dabord-outils-dabord","6.3 System prompt : Livre d'abord, outils d'abord",[10,1285,1286,1287,876],{},"Avec un livre lié, s'applique ",[117,1288,1289],{},[1112,1290,1291],{},"Core Principles for Reading Assistant",[1031,1293,1296],{"className":1294,"code":1295,"language":1036},[1034],"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",[99,1297,1295],{"__ignoreMap":72},[10,1299,1300,1301,1304,1305,1308],{},"La génération exécute la boucle Tool : ",[99,1302,1303],{},"tool_calls"," → exécuter → ajouter ",[99,1306,1307],{},"role: tool"," → continuer jusqu'au texte final. Avec tools activés, le canal thinking est coupé pour éviter les conflits de protocole.",[24,1310],{},[27,1312,1314],{"id":1313},"vii-traçabilité-frontend-de-la-note-de-bas-de-page-au-surlignage","VII. Traçabilité frontend : De la note de bas de page au surlignage",[10,1316,1317,1318,1320],{},"La sortie ",[99,1319,1074],{}," du modèle n'est pas affichée brute ; la couche de rendu en fait des citations cliquables.",[61,1322,1324],{"id":1323},"_71-rendu-des-notes","7.1 Rendu des notes",[10,1326,1327,1328,1331],{},"Normaliser les tags en liens Markdown comme ",[99,1329,1330],{},"[1]([f5-123-165])",", afficher en notes numérotées ; dédupliquer la même position.",[61,1333,1335],{"id":1334},"_72-interaction-au-clic","7.2 Interaction au clic",[672,1337,1338,1347,1353],{},[38,1339,1340,1343,1344,1346],{},[117,1341,1342],{},"Premier clic :"," Parser ",[99,1345,1257],{}," → fileIndex + offsets → extraire texte spine → aperçu (titre TOC optionnel) ;",[38,1348,1349,1352],{},[117,1350,1351],{},"Même note à nouveau :"," Fermer l'aperçu ;",[38,1354,1355,1358],{},[117,1356,1357],{},"Confirmer le saut :"," Ouvrir la vue lecture, surligner la plage de caractères.",[10,1360,1361,1362,1365],{},"Du tag copié du modèle au texte source visible par l'utilisateur, la chaîne ",[117,1363,1364],{},"ne repasse jamais par un autre appel LLM","—déterministe et reproductible.",[24,1367],{},[27,1369,1371],{"id":1370},"viii-cas-limites-et-dégradation-honnête","VIII. Cas limites et dégradation honnête",[10,1373,1374,1375,876],{},"Zéro hallucination ≠ « toujours une réponse »—c'est ",[117,1376,1377],{},"pas de preuve, pas d'invention",[702,1379,1380,1390],{},[705,1381,1382],{},[708,1383,1384,1387],{},[711,1385,1386],{},"Scénario",[711,1388,1389],{},"Comportement",[724,1391,1392,1400,1412,1420,1428],{},[708,1393,1394,1397],{},[729,1395,1396],{},"Résumés de segments pas prêts",[729,1398,1399],{},"Extraire d'abord le texte intégral et résumer",[708,1401,1402,1405],{},[729,1403,1404],{},"Tool ne trouve rien",[729,1406,1407,1408,1411],{},"Retourner ",[99,1409,1410],{},"(No relevant segment excerpts found…)"," ; le modèle doit dire « pas dans le livre »",[708,1413,1414,1417],{},[729,1415,1416],{},"Tags bipartites invalides du modèle",[729,1418,1419],{},"Filtrage frontend ; pas de notes cassées",[708,1421,1422,1425],{},[729,1423,1424],{},"Discussion informelle",[729,1426,1427],{},"Le system prompt autorise les connaissances générales hors livre",[708,1429,1430,1433],{},[729,1431,1432],{},"Exporter le chat",[729,1434,1435],{},"Les notes peuvent devenir des deep links lecteur pour partage/archivage",[10,1437,1438],{},[13,1439],{"alt":1440,"src":1441},"Export de conversation","https://cdn.linghuxiong.com/resources/snapshots/ai-chat-export.png",[24,1443],{},[27,1445,1447],{"id":1446},"ix-compromis-de-conception-pourquoi-pas-le-rag-vectoriel","IX. Compromis de conception : Pourquoi pas le « RAG vectoriel » ?",[10,1449,1450,1451,1454],{},"Les pairs en Q&A documentaire demandent souvent : si vous faites de la génération augmentée par recherche, pourquoi pas ",[117,1452,1453],{},"Embedding + base vectorielle Top-K"," ?",[10,1456,1457,1458,1461,1462,1465,1466,1469,1470,1473],{},"Nous ",[117,1459,1460],{},"faisons du RAG","—chercher avant de générer. La différence : « RAG » dans le discours commun implique souvent la ",[117,1463,1464],{},"similarité vectorielle"," ; notre étape 3 est ",[117,1467,1468],{},"index de segments + Tool avec source à la demande","—",[117,1471,1472],{},"pas de couche vectorielle par choix",". Ci-dessous : raisons architecturales, sans nier la valeur du RAG vectoriel.",[61,1475,1477],{"id":1476},"périmètre-pas-pas-de-recherche-mais-pas-de-recherche-vectorielle","Périmètre : pas « pas de recherche », mais « pas de recherche vectorielle »",[35,1479,1480,1489],{},[38,1481,1482,1485,1486,627],{},[117,1483,1484],{},"RAG au sens large :"," chercher → générer → ",[117,1487,1488],{},"nous le faisons",[38,1490,1491,1494,1495,653],{},[117,1492,1493],{},"RAG vectoriel :"," rappel par similarité d'embedding → ",[117,1496,1497],{},"pas dans cette version",[10,1499,1500,1501,1504,1505,1508],{},"Le prétraitement construit un ",[117,1502,1503],{},"index de résumés de segments"," ; le modèle choisit des segments via Tools et reçoit le ",[117,1506,1507],{},"texte source",". La recherche existe sans modèle d'embedding séparé ni maintenance d'index vectoriel.",[24,1510],{},[61,1512,1514],{"id":1513},"raison-1-fournisseurs-llm-personnaliséssurface-dintégration-réduite","Raison 1 : Fournisseurs LLM personnalisés—surface d'intégration réduite",[10,1516,1517,1518,1521,1522,1525],{},"Les utilisateurs peuvent brancher ",[117,1519,1520],{},"leurs propres clés API",", des base URL personnalisées ou ",[117,1523,1524],{},"Ollama local","—le modèle de chat est leur choix ; coût et chemin de données restent maîtrisés.",[10,1527,1528],{},"Le RAG vectoriel typique élargit l'intégration :",[35,1530,1531,1542,1545],{},[38,1532,1533,1534,1537,1538,1541],{},"Outre le ",[117,1535,1536],{},"modèle de chat",", il faut en général un ",[117,1539,1540],{},"modèle d'embedding"," (autre nom, parfois autre endpoint) ;",[38,1543,1544],{},"Ollama local nécessite un modèle d'embedding séparé plus compatibilité dimension/API ;",[38,1546,1547,1548,1551],{},"Plus de modes de défaillance : chat OK mais ",[117,1549,1550],{},"recherche vide","—embedding, index ou dimension ; debug plus difficile qu'un seul fournisseur de bout en bout.",[10,1553,1554,1555,1558,1559,1562],{},"Ici, ",[117,1556,1557],{},"choix de segments et réponse partagent une config fournisseur","—pas de « chat sur A, index sur B ». Pour des apps ",[117,1560,1561],{},"LLM branchables",", cela compte souvent plus que quelques points de rappel.",[10,1564,1565],{},[13,1566],{"alt":1567,"src":1568},"Fournisseurs IA personnalisés","https://cdn.linghuxiong.com/resources/snapshots/ai-customize-providers.png",[24,1570],{},[61,1572,1574],{"id":1573},"raison-2-les-embeddings-lient-lindexchanger-de-fournisseur-coûte-cher","Raison 2 : Les embeddings lient l'index—changer de fournisseur coûte cher",[10,1576,1577,1578,1581,1582,1585,1586,1589],{},"En RAG vectoriel, ",[117,1579,1580],{},"les vecteurs ne sont pas un format intermédiaire universel","—ce sont des coordonnées sous un modèle d'embedding. Index avec A, requête avec B : la similarité est en général ",[117,1583,1584],{},"incomparable","—souvent ",[117,1587,1588],{},"ré-embedding complet",", et les dimensions (768 / 1024 / 1536 …) verrouillent le schéma de stockage.",[10,1591,1592,1593,1596,1597,1600],{},"L'étape 3 persiste ",[117,1594,1595],{},"résumés structurés + spans de caractères",", pas de vecteurs ; changer de modèle de chat ",[117,1598,1599],{},"ne reconstruit pas l'index"," ; la chaîne de preuve (positions source) reste—aligné avec « tester différents LLM à tout moment ».",[24,1602],{},[61,1604,1606],{"id":1605},"raison-3-le-routage-structuré-suffit-souvent-pour-les-longs-documents-avec-toc","Raison 3 : Le routage structuré suffit souvent pour les longs documents avec TOC",[10,1608,1609,1610,1613,1614,1617,1618,1621,1622,1627],{},"E-books et PDF ont en général une ",[117,1611,1612],{},"structure de chapitres"," ; le prétraitement fournit ",[117,1615,1616],{},"titres de segment + résumés",". Pour « que dit le chapitre X » ou « comment le livre définit Y », choisir des segments dans le catalogue puis ",[117,1619,1620],{},"tirer la source"," fonctionne bien en pratique ; le Tool renvoie la ",[117,1623,1624,1625],{},"source avec ",[99,1626,1257],{},", le zéro hallucination reste ancré sur les spans de caractères.",[10,1629,1630,1631,1634,1635,1638],{},"Les vecteurs aident pour la sémantique floue, le multilingue, les correspondances littérales longues ; pour des lecteurs ",[117,1632,1633],{},"TOC + prétraitement + forte traçabilité",", investir dans ",[117,1636,1637],{},"Tool + retour source + règles de citation"," a souvent un meilleur ROI.",[24,1640],{},[61,1642,1644],{"id":1643},"avenir-rappel-hybride-pas-une-refonte","Avenir : Rappel hybride, pas une refonte",[10,1646,1647,1648,1651,1652,1655,1656,1659,1660,1663],{},"Nous pourrions ajouter un ",[117,1649,1650],{},"rappel vectoriel grossier"," (embedding uniquement pour Top-N chapitres candidats), en terminant toujours par ",[117,1653,1654],{},"choix de segment → source → trace cliquable","—règles zéro hallucination inchangées. Si ajouté : embedding ",[117,1657,1658],{},"optionnel",", invites explicites de ",[117,1661,1662],{},"ré-indexation"," au changement de modèle—éviter un mauvais rappel silencieux.",[10,1665,1666,1667],{},"D'ici là : ",[117,1668,1669],{},"toute API chat compatible OpenAI fonctionne ; changer de modèle de chat ne reconstruit pas l'index local.",[24,1671],{},[27,1673,1675],{"id":1674},"x-synthèse","X. Synthèse",[702,1677,1678,1691],{},[705,1679,1680],{},[708,1681,1682,1685,1688],{},[711,1683,1684],{},"Étape",[711,1686,1687],{},"Méthode",[711,1689,1690],{},"Rôle",[724,1692,1693,1704,1717,1730,1741,1752],{},[708,1694,1695,1698,1701],{},[729,1696,1697],{},"Prétraitement",[729,1699,1700],{},"Découpage TOC/longueur + cache de segments",[729,1702,1703],{},"Longs ouvrages consultables et localisables",[708,1705,1706,1709,1714],{},[729,1707,1708],{},"Tags de position",[729,1710,1711,1713],{},[99,1712,577],{}," dans la source",[729,1715,1716],{},"Provenance analysable par machine",[708,1718,1719,1722,1727],{},[729,1720,1721],{},"Tool",[729,1723,1724,1725],{},"Segments / résumés livre entier par question, retour ",[117,1726,743],{},[729,1728,1729],{},"Forcer les preuves avant réponse",[708,1731,1732,1735,1738],{},[729,1733,1734],{},"System prompt",[729,1736,1737],{},"Livre d'abord, pas de faux tags, dire quand absent",[729,1739,1740],{},"Contraindre la génération",[708,1742,1743,1746,1749],{},[729,1744,1745],{},"Frontend",[729,1747,1748],{},"Note → aperçu → saut et surlignage",[729,1750,1751],{},"L'utilisateur vérifie les preuves",[708,1753,1754,1757,1760],{},[729,1755,1756],{},"Pas de recherche vectorielle",[729,1758,1759],{},"Un fournisseur ; changer de modèle chat sans ré-index",[729,1761,1762],{},"Coût d'intégration et migration réduit",[10,1764,1765,1766,1769],{},"« Zéro hallucination » ne signifie pas que le modèle ne se trompe jamais—c'est que ",[117,1767,1768],{},"l'ingénierie verrouille la sortie sur une chaîne de preuves"," : pas de recherche → ne pas feindre du contenu livre ; avec recherche → positions source vérifiables.",[10,1771,1772,1773,1776,1777,1780],{},"Si vous développez la lecture IA ou le Q&A documentaire, nous espérons que le chemin ",[117,1774,1775],{},"texte intégral → phrases clés → Tool-first à la demande",", plus ",[117,1778,1779],{},"tags de position inline + retour source",", soit une implémentation de référence utile.",[18,1782,1783],{},[10,1784,1785,1786,1790,1791,653],{},"Ce sont des retours d'expérience du lecteur IA ",[664,1787,267],{"href":1788,"rel":1789},"https://reader.linghuxiong.com",[668],"—à titre indicatif uniquement. Essayez le lecteur sur la ",[664,1792,1794],{"href":1793},"/fr-fr#download","page de téléchargement",{"title":72,"searchDepth":238,"depth":238,"links":1796},[1797,1802,1803,1804,1805,1809,1816,1820,1821,1828],{"id":464,"depth":238,"text":465,"children":1798},[1799,1800,1801],{"id":480,"depth":244,"text":481},{"id":560,"depth":244,"text":561},{"id":656,"depth":244,"text":657},{"id":846,"depth":238,"text":847},{"id":907,"depth":238,"text":908},{"id":922,"depth":238,"text":923},{"id":1050,"depth":238,"text":1051,"children":1806},[1807,1808],{"id":1078,"depth":244,"text":1079},{"id":1104,"depth":244,"text":1105},{"id":1180,"depth":238,"text":1181,"children":1810},[1811,1813,1815],{"id":1199,"depth":244,"text":1812},"6.1 get_related_segment_summaries — Recherche ciblée de segments",{"id":1261,"depth":244,"text":1814},"6.2 get_full_book_segment_summaries — Vue d'ensemble du livre",{"id":1282,"depth":244,"text":1283},{"id":1313,"depth":238,"text":1314,"children":1817},[1818,1819],{"id":1323,"depth":244,"text":1324},{"id":1334,"depth":244,"text":1335},{"id":1370,"depth":238,"text":1371},{"id":1446,"depth":238,"text":1447,"children":1822},[1823,1824,1825,1826,1827],{"id":1476,"depth":244,"text":1477},{"id":1513,"depth":244,"text":1514},{"id":1573,"depth":244,"text":1574},{"id":1605,"depth":244,"text":1606},{"id":1643,"depth":244,"text":1644},{"id":1674,"depth":238,"text":1675},"2026-06-03","Notes d'ingénierie sur le Q&R sans hallucination dans un lecteur IA—réponses ancrées dans le livre ouvert, avec citations en un clic vers les passages exacts.",{},"/fr-fr/blog/zero-hallucination-qa",{"title":438,"description":1830},"fr-fr/blog/zero-hallucination-qa",[1836,1837,1838],"lecteur","IA","ingénierie","zero-hallucination-qa","gsgsYarvWXVdqLHduv9kAQG_s3pGvEdA7JdLzzVfdek",1786513819813]