[{"data":1,"prerenderedAt":2346},["ShallowReactive",2],{"blog-article-/de-de/blog/zero-hallucination-qa":3,"blog-list-de-de":1433},{"id":4,"title":5,"body":6,"config":1417,"date":1418,"description":1419,"draft":1420,"extension":1421,"image":1417,"meta":1422,"navigation":1423,"path":1424,"seo":1425,"stem":1426,"tags":1427,"toolbar":1417,"translationKey":1431,"updated":1418,"__hash__":1432},"blog/de-de/blog/zero-hallucination-qa.md","Wie ich Zero-Hallucination-Q&A in unserem Reader umgesetzt habe",{"type":7,"value":8,"toc":1381},"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,535,596,599,610,620,627,629,633,644,650,657,661,668,676,683,687,697,741,752,758,760,764,778,786,792,795,834,844,852,858,865,869,877,883,894,896,900,906,910,917,921,944,951,953,957,963,1020,1026,1028,1032,1039,1058,1062,1082,1092,1094,1098,1109,1112,1135,1146,1152,1154,1158,1173,1184,1186,1190,1211,1222,1224,1228,1247,1253,1255,1259,1348,1355,1366],[10,11,12],"p",{},[13,14],"img",{"alt":15,"src":16},"Cover: Zero-Hallucination-Q&A","https://cdn.linghuxiong.com/resources/snapshots/ai-chat-cover.png",[18,19,20],"blockquote",{},[10,21,22,23,27,28,31],{},"Dieser Beitrag beschreibt die technische Umsetzung von ",[24,25,26],"strong",{},"Zero-Hallucination-Q&A"," in unserem AI-Reader: Antworten basieren strikt auf dem Text des geöffneten Buches, zentrale Aussagen lassen sich per ",[24,29,30],{},"Ein-Klick"," zur exakten Passage zurückverfolgen. Wenn Sie AI-Reading, Dokumenten-Q&A oder RAG-ähnliche Apps bauen, hoffen wir, dass drei Iterationen und die finale Architektur als Referenz dienen.",[33,34],"hr",{},[36,37,39],"h2",{"id":38},"i-entwicklung-in-drei-phasen","I. Entwicklung in drei Phasen",[10,41,42,43,46],{},"Zero-Hallucination-Q&A war von Anfang an nicht perfekt geplant, sondern entstand im Spannungsfeld von ",[24,44,45],{},"Kosten, Latenz und Genauigkeit",". Im Folgenden die drei Phasen in zeitlicher Reihenfolge—als Kontext, warum die aktuelle Architektur so aussieht.",[48,49],"mermaid",{":config":50,"code":51},"config","flowchart%20LR%0A%20%20%20%20P1%5BPhase%201%3A%20Volltext%20einf%C3%BCgen%5D%20--%3E%20P2%5BPhase%202%3A%20LLM%20Schl%C3%BCssels%C3%A4tze%5D%0A%20%20%20%20P2%20--%3E%20P3%5BPhase%203%3A%20Segment-Index%20%2B%20Tool-Abruf%5D%0A%20%20%20%20P1%20-.-%3E%7CLangsam%2C%20teuer%2C%20ungenau%20bei%20langen%20B%C3%BCchern%7C%20X1%5BVerworfen%5D%0A%20%20%20%20P2%20-.-%3E%7CDetailverlust%2C%20weiterhin%20langsam%7C%20X2%5BVerworfen%5D%0A%20%20%20%20P3%20--%3E%7CAktuell%7C%20OK%5BZero%20Hallucination%20%2B%20nachvollziehbar%5D",[53,54,56],"h3",{"id":55},"phase-1-gesamten-buchtext-in-den-context-legen-einfachste-varianteund-die-erste-die-bricht","Phase 1: Gesamten Buchtext in den Context legen (einfachste Variante—und die erste, die bricht)",[10,58,59,62,63,66,67,70,71,74],{},[24,60,61],{},"Vorgehen:"," Beim Öffnen eines Buches und einer Nutzerfrage den ",[24,64,65],{},"gesamten extrahierten Fließtext"," in System Prompt oder User-Nachricht packen und vom Chat-Modell beantworten lassen. Überschreitet das Buch etwa ",[24,68,69],{},"400.000 Zeichen",", erfolgt eine ",[24,72,73],{},"harte Kürzung","—nur der Anfang bleibt; spätere Kapitel sind für das Modell unsichtbar.",[10,76,77],{},[24,78,79],{},"Vorteile:",[81,82,83,87,90],"ul",{},[84,85,86],"li",{},"Sehr geringer Implementierungsaufwand, kaum Vorverarbeitung;",[84,88,89],{},"Bei kurzen Büchern und einfachen Dokumenten oft brauchbar—das Modell hat das Buch tatsächlich „gesehen“;",[84,91,92],{},"Einfache UX: Fragen stellen, Antwort erhalten—kein „Bitte warten Sie auf die Analyse“.",[10,94,95],{},[24,96,97],{},"Nachteile (schnell inakzeptabel):",[81,99,100,106,112,122],{},[84,101,102,105],{},[24,103,104],{},"Langsame Antworten:"," Jede Frage sendet erneut eine riesige Payload; Time-to-First-Token und Gesamtlatenz wachsen mit der Buchlänge;",[84,107,108,111],{},[24,109,110],{},"Hohe Token-Kosten:"," Der volle Buch-Input wird bei jeder Frage erneut bezahlt;",[84,113,114,117,118,121],{},[24,115,116],{},"Lange Bücher verzerren stark:"," Nach 400k Zeichen existieren zweite Hälfte, Anhänge und Schlusskapitel faktisch nicht—und die UI ",[24,119,120],{},"weist selten klar darauf hin",", dass gekürzt wurde;",[84,123,124,127,128,131],{},[24,125,126],{},"Keine Abrufgranularität:"," Das Modell muss in Hunderttausenden Zeichen „die Nadel im Heuhaufen“ finden—Details gehen leicht verloren, ",[24,129,130],{},"plausibel klingende, aber unbelegte"," Zusammenfassungen entstehen leichter—genau das, was Lese-Apps vermeiden müssen.",[10,133,134],{},"Phase 1 eignet sich für ein MVP, nicht für eine produktionsreife Lösung.",[53,136,138],{"id":137},"phase-2-leichteres-llm-extrahiert-schlüsselsätze-context-komprimierenaber-zu-aggressiv","Phase 2: Leichteres LLM extrahiert Schlüsselsätze (Context komprimieren—aber zu aggressiv)",[10,140,141,143,144,147,148,151,152,156],{},[24,142,61],{}," Vor dem Q&A (oder beim ersten Öffnen) ein ",[24,145,146],{},"günstigeres Modell"," über den Fließtext: Aufteilung nach Spine-Kapitel (oder Buch in Blöcke), Extraktion von ",[24,149,150],{},"Schlüsselsätzen",", Beibehaltung von Positions-Tags wie ",[153,154,155],"code",{},"[fDatei-Start-Ende]",", dann Zusammenfügen der Auszüge zu kürzerem Context für späteres Q&A.",[10,158,159,160,163],{},"Typische Pipeline: ",[24,161,162],{},"Extract → Cache → Chat",". Einmal extrahieren (offline oder on demand), „Schlüsselsatz-Bündel“ speichern, bei jeder Frage wiederverwenden—wie viele Dokumenten-Q&A-Prototypen: erst komprimieren, dann antworten.",[10,165,166],{},[24,167,79],{},[81,169,170,177,180],{},[84,171,172,173,176],{},"Pro Frage ",[24,174,175],{},"deutlich weniger Text","; Token-Verbrauch pro Request sinkt gegenüber Phase 1;",[84,178,179],{},"Vorverarbeitung cachebar; kein Re-Extract pro Frage beim gleichen Buch;",[84,181,182],{},"Positions-Tags legen die Basis für Zitate.",[10,184,185],{},[24,186,187],{},"Nachteile (bei langen Büchern weiterhin unzureichend):",[81,189,190,196,206,215],{},[84,191,192,195],{},[24,193,194],{},"Starker Detailverlust:"," „Schlüsselsätze“ werden vom Modell gewählt; Einschränkungen, Gegenbeispiele und Argumentketten gehen oft verloren—Antworten werden „richtig, aber einseitig“;",[84,197,198,201,202,205],{},[24,199,200],{},"Context bei Langwerken weiter groß:"," Selbst Schlüsselsatz-Bündel sind umfangreich—Latenz und Kosten werden ",[24,203,204],{},"gelindert, nicht gelöst",";",[84,207,208,211,212,205],{},[24,209,210],{},"Doppelter LLM-Fehler:"," Extraktion kann übersehen; Q&A kann Auszüge falsch lesen—Fehler ",[24,213,214],{},"stapeln sich",[84,216,217,220,221,224],{},[24,218,219],{},"Statischer Context:"," Ob die Frage ein Kapitel oder die Gesamtstruktur betrifft—das Modell erhält immer ",[24,222,223],{},"dieselbe vorab extrahierte Masse",", keine dynamische Eingrenzung nach Frage.",[10,226,227,228,231],{},"Die Lehre: Das Problem ist nicht „ob wir komprimieren“, sondern ",[24,229,230],{},"„ob die Kompression bedarfsgesteuert ist und ob wir zum Quelltext zurückkehren können“",".",[53,233,235],{"id":234},"phase-3-segment-index-tool-abruf-on-demand-quelltext-rückgabe-aktuell","Phase 3: Segment-Index + Tool-Abruf on demand + Quelltext-Rückgabe (aktuell)",[10,237,238,240,241,248],{},[24,239,61],{}," Angelehnt an ",[242,243,247],"a",{"href":244,"rel":245},"https://github.com/VectifyAI/PageIndex",[246],"nofollow","PageIndex",". Gegenüber Phase 2 drei Kernverschiebungen:",[250,251,252,258,268],"ol",{},[84,253,254,257],{},[24,255,256],{},"Vorverarbeitung erzeugt einen strukturierten Index"," (Inhaltsverzeichnis-Zusammenfassungen + exakte Zeichen-Spannen), keine Auszüge als direkter Q&A-Context;",[84,259,260,263,264,267],{},[24,261,262],{},"Jede Frage nutzt Tool Calling zur bedarfsgesteuerten Suche",", dann ",[24,265,266],{},"Abruf von Quelltext mit Positions-Tags"," zur Antwort;",[84,269,270,273],{},[24,271,272],{},"System Prompt + Frontend"," erzwingen Zitierformat und unterstützen Klick → Sprung → Hervorhebung im Reader.",[10,275,276],{},[24,277,278],{},"Vergleich der drei Phasen:",[280,281,282,301],"table",{},[283,284,285],"thead",{},[286,287,288,292,295,298],"tr",{},[289,290,291],"th",{},"Dimension",[289,293,294],{},"Phase 1 (Volltext)",[289,296,297],{},"Phase 2 (Schlüsselsätze)",[289,299,300],{},"Phase 3 (aktuell)",[302,303,304,323,337,351,365,382],"tbody",{},[286,305,306,310,313,316],{},[307,308,309],"td",{},"Context pro Frage",[307,311,312],{},"Ganzes Buch (oder gekürzte erste Hälfte)",[307,314,315],{},"Vorab extrahierte Schlüsselsätze",[307,317,318,319,322],{},"Nur ",[24,320,321],{},"Quelltext","-Ausschnitte zur Frage",[286,324,325,328,331,334],{},[307,326,327],{},"Genauigkeit bei langen Büchern",[307,329,330],{},"Ab ~400k Zeichen stark eingebrochen",[307,332,333],{},"Abhängig von Extraktion; Detailverlust",[307,335,336],{},"Abruf per TOC/Span; kein hartes Vollbuch-Truncate",[286,338,339,342,345,348],{},[307,340,341],{},"Antwortgeschwindigkeit",[307,343,344],{},"Langsam",[307,346,347],{},"Etwas besser; lange Bücher weiter langsam",[307,349,350],{},"Abruf + kurzer Context—deutlich schneller",[286,352,353,356,359,362],{},[307,354,355],{},"Token-Kosten",[307,357,358],{},"Sehr hoch",[307,360,361],{},"Mittelhoch",[307,363,364],{},"Vorverarbeitung amortisiert + zahlen nach Bedarf",[286,366,367,370,373,376],{},[307,368,369],{},"Nachvollziehbarkeit",[307,371,372],{},"Schwach (Zitate schwer)",[307,374,375],{},"Tags vorhanden, Inhalt aber gefiltert",[307,377,378,379],{},"Fußnoten → ",[24,380,381],{},"echte Quell-Spannen",[286,383,384,387,390,393],{},[307,385,386],{},"Engineering-Aufwand",[307,388,389],{},"Niedrig",[307,391,392],{},"Mittel",[307,394,395],{},"Hoch",[10,397,398,401,402,405,406,409,410,413],{},[24,399,400],{},"Warum wir bei Phase 3 bleiben:"," Beim Lesen geht es bei Zero Hallucination nicht darum, „dem Modell möglichst viel Text zu zeigen“, sondern ",[24,403,404],{},"„vor der Antwort Belege aus dem Buch zur Frage zu holen“",". Phase 1–2 kämpften mit der ",[24,407,408],{},"Context-Größe","; Phase 3 teilt die Pipeline in ",[24,411,412],{},"Index (Vorverarbeitung) → Abruf (Tool) → Beleg (Quelle) → Antwort (kontrollierte Generierung)","—Genauigkeit, Kosten und Nachvollziehbarkeit zusammen.",[10,415,416,417,231],{},"Im Folgenden die Details von ",[24,418,419],{},"Phase 3",[33,421],{},[36,423,425],{"id":424},"ii-problemstellung-bei-buch-qa-ist-halluzination-schlimmer-als-im-allgemeinen-chat","II. Problemstellung: Bei Buch-Q&A ist Halluzination schlimmer als im allgemeinen Chat",[10,427,428,429,432],{},"Gelegentliche Fehler in einem allgemeinen Chatbot verzeihen Nutzer oft. Bei ",[24,430,431],{},"Buch-Q&A"," ist der Preis höher:",[81,434,435,442,445],{},[84,436,437,438,441],{},"Nutzer fragen, was ",[24,439,440],{},"dieses Buch"," sagt—not was im parametrischen Gedächtnis des Modells liegt;",[84,443,444],{},"Eine plausibel klingende „Ansicht aus dem Buch“ kann Notizen, Zitate und Weitergabe irreführen;",[84,446,447],{},"Ohne Quellen keine Verifikation—Vertrauen ist schwer aufzubauen.",[10,449,450,451,454],{},"„Zero Hallucination“ wird daher zu drei ",[24,452,453],{},"durchsetzbaren"," Regeln:",[250,456,457,463,469],{},[84,458,459,462],{},[24,460,461],{},"Buchfragen müssen zuerst das Buch befragen:"," Alles, was plausibel zum geöffneten Buch gehört, muss zuerst Retrieval (Tool) durchlaufen;",[84,464,465,468],{},[24,466,467],{},"Antworten müssen nachvollziehbar sein:"," Zentrale Aussagen tragen Positions-Tags, die die UI parsen und anspringen kann;",[84,470,471,474],{},[24,472,473],{},"Sagen, wenn nichts gefunden wird:"," Fehlt es im Buch, klar sagen—kein Allgemeinwissen als „Buchaussage“ verkaufen.",[10,476,477,478,480],{},"Der Rest folgt dem Datenfluss von ",[24,479,419],{}," und der Umsetzung dieser Regeln.",[33,482],{},[36,484,486],{"id":485},"iii-architektur-vorverarbeitung-tool-abruf-kontrollierte-generierung-klickbare-zitate","III. Architektur: Vorverarbeitung → Tool-Abruf → Kontrollierte Generierung → Klickbare Zitate",[48,488],{":config":50,"code":489},"flowchart%20TB%0A%20%20%20%20subgraph%20prep%20%5BOffline%20%2F%20erste%20Vorverarbeitung%5D%0A%20%20%20%20%20%20%20%20A%5BBuch%20nach%20TOC%20oder%20L%C3%A4nge%20teilen%5D%20--%3E%20B%5BLLM%20Segment-Zusammenfassungen%5D%0A%20%20%20%20%20%20%20%20B%20--%3E%20C%5BSegment-Cache%20lokal%20persistieren%5D%0A%20%20%20%20end%0A%0A%20%20%20%20subgraph%20ask%20%5BNutzerfrage%5D%0A%20%20%20%20%20%20%20%20D%5BNutzereingabe%5D%20--%3E%20E%7BSegment-Cache%20vorhanden%3F%7D%0A%20%20%20%20%20%20%20%20E%20--%3E%7CNein%7C%20F%5BVolltext%20extrahieren%20%2F%20Vorverarbeitung%20anbieten%5D%0A%20%20%20%20%20%20%20%20F%20--%3E%20prep%0A%20%20%20%20%20%20%20%20E%20--%3E%7CJa%7C%20G%5BTool%20Calling%20registrieren%5D%0A%20%20%20%20end%0A%0A%20%20%20%20subgraph%20retrieve%20%5BTool-Abruf%5D%0A%20%20%20%20%20%20%20%20G%20--%3E%20H%7BFragetyp%7D%0A%20%20%20%20%20%20%20%20H%20--%3E%7C%C3%9Cberblick%20%2F%20Rezension%7C%20I%5Bget_full_book_segment_summaries%5D%0A%20%20%20%20%20%20%20%20H%20--%3E%7CFakten%20%2F%20Personen%20%2F%20Kapitel%7C%20J%5Bget_related_segment_summaries%5D%0A%20%20%20%20%20%20%20%20J%20--%3E%20K%5BLLM%20w%C3%A4hlt%20Segment-IDs%20aus%20Zusammenfassungskatalog%5D%0A%20%20%20%20%20%20%20%20K%20--%3E%20L%5BQuelltext%20per%20Span%20%2B%20Positions-Tags%20laden%5D%0A%20%20%20%20%20%20%20%20I%20--%3E%20M%5BAlle%20Segment-Zusammenfassungen%20verketten%5D%0A%20%20%20%20end%0A%0A%20%20%20%20subgraph%20answer%20%5BGenerieren%20%26%20Anzeige%5D%0A%20%20%20%20%20%20%20%20L%20--%3E%20N%5BTool-Ergebnisse%20ans%20Modell%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%5BSystem-Prompt%20Zitierregeln%5D%0A%20%20%20%20%20%20%20%20O%20--%3E%20P%5BStreaming-Antwort%20%2B%20Positions-Fu%C3%9Fnoten%5D%0A%20%20%20%20%20%20%20%20P%20--%3E%20Q%5BKlickbare%20Fu%C3%9Fnoten%20rendern%5D%0A%20%20%20%20%20%20%20%20Q%20--%3E%20R%5BKlick%20%E2%86%92%20Vorschau%20%E2%86%92%20Sprung%20%26%20Hervorhebung%5D%0A%20%20%20%20end",[10,491,492,493],{},"Kernidee: ",[24,494,495],{},"Das Modell soll nicht „aus dem Gedächtnis antworten“—sondern „Belege sammeln, dann antworten und Quellen markieren“.",[33,497],{},[36,499,501],{"id":500},"iv-vorverarbeitung-das-ganze-buch-in-einen-durchsuchbaren-segment-index-verwandeln","IV. Vorverarbeitung: Das ganze Buch in einen durchsuchbaren Segment-Index verwandeln",[10,503,504,505,508,509,512,513,516,517,520,521,524],{},"Wenn jede Frage weiter ",[24,506,507],{},"Phase-1","-Vollbuch-Context nutzte, sprengen lange Bücher das Token-Budget und der Abruf ist zu grob. Phase 3: Beim ersten AI-Chat zu einem Buch läuft im Hintergrund ein ",[24,510,511],{},"Segment-Zusammenfassungs-Job","—Aufteilung nach ",[24,514,515],{},"TOC"," oder ",[24,518,519],{},"Textlänge"," in ",[153,522,523],{},"Segment","s, Zusammenfassung je Segment, Persistenz in lokaler IndexedDB.",[10,526,527,528,530,531,534],{},"Jedes ",[153,529,523],{}," enthält Zusammenfassung plus ",[24,532,533],{},"physische Position im Fließtext",":",[280,536,537,547],{},[283,538,539],{},[286,540,541,544],{},[289,542,543],{},"Feld",[289,545,546],{},"Bedeutung",[302,548,549,563,576,586],{},[286,550,551,560],{},[307,552,553,556,557],{},[153,554,555],{},"startFileIndex"," / ",[153,558,559],{},"endFileIndex",[307,561,562],{},"Spine-Datei-Index (PDF: eine Datei pro Seite)",[286,564,565,573],{},[307,566,567,556,570],{},[153,568,569],{},"startOffset",[153,571,572],{},"endOffset",[307,574,575],{},"Zeichen-Start/Ende",[286,577,578,583],{},[307,579,580],{},[153,581,582],{},"sequence",[307,584,585],{},"Lineare Lesereihenfolge",[286,587,588,593],{},[307,589,590],{},[153,591,592],{},"title",[307,594,595],{},"TOC-Titel",[10,597,598],{},"Die Aufteilung balanciert Präzision und Kosten: TOC-Knoten unter ~20 KB nur dieser Knoten; Geschwister-Knoten können zu Batches (15–20 KB) vor dem LLM-Aufruf zusammengeführt werden; unstrukturierte lange Blöcke in ~30–40k-Zeichen-Bereichen.",[10,600,601,602,605,606,609],{},"Der Zusammenfassungs-System-Prompt verlangt ",[24,603,604],{},"inline Positions-Tags"," (",[153,607,608],{},"[fZahl-Zahl-Zahl]","), damit per Tool geladener Quelltext mit Spine-Offsets übereinstimmt. Kernvorgabe:",[611,612,618],"pre",{"className":613,"code":615,"language":616,"meta":617},[614],"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,619,615],{"__ignoreMap":617},[10,621,622,623,626],{},"Nach der Vorverarbeitung hängt Q&A vom ",[24,624,625],{},"strukturierten Segment-Index"," ab, nicht vom Vollbuch-Context—Voraussetzung für Zero Hallucination bei langen Büchern.",[33,628],{},[36,630,632],{"id":631},"v-positions-tag-system-woher-in-den-text-kodieren","V. Positions-Tag-System: „Woher“ in den Text kodieren",[10,634,635,636,639,640,643],{},"Zero Hallucination verlangt Inhalt aus der Quelle ",[24,637,638],{},"und"," maschinenlesbare, in der UI springbare ",[24,641,642],{},"Herkunft",". Wir nutzen inline Tags:",[611,645,648],{"className":646,"code":647,"language":616},[614],"[f{fileIndex}-{startChar}-{endChar}]\n",[153,649,647],{"__ignoreMap":617},[10,651,652,653,656],{},"Beispiel: ",[153,654,655],{},"[f5-123-165]"," = Spine-Datei 5 (0-basiert), Zeichen 123–165.",[53,658,660],{"id":659},"_51-wie-tags-in-den-fließtext-geschrieben-werden","5.1 Wie Tags in den Fließtext geschrieben werden",[10,662,663,664,667],{},"Die Extraktionsschicht hängt ",[153,665,666],{},"[f{fileIndex}-{start}-{end}]"," an Segmentenden an:",[611,669,674],{"className":670,"code":672,"language":673,"meta":617},[671],"language-typescript","const position = `[f${fileIndex}-${absOffset}-${absOffset + segment.length}]`;\nfileLines.push(segment.text.trim() + position);\n","typescript",[153,675,672],{"__ignoreMap":617},[10,677,678,679,682],{},"Ob Vorverarbeitungs-Zusammenfassungen oder Tool-Auszüge—Positionen alignen mit ",[24,680,681],{},"Spine-Zeichen-Offsets",", nicht mit vom Modell geschätzten Seitenzahlen.",[53,684,686],{"id":685},"_52-vorgaben-für-modellausgabe","5.2 Vorgaben für Modellausgabe",[10,688,689,690,696],{},"Der System Prompt enthält ",[24,691,692],{},[693,694,695],"span",{},"Position Citation Rules","—fünf Kernpunkte:",[250,698,699,709,719,725,735],{},[84,700,701,704,705,708],{},[24,702,703],{},"Standardformat:"," Muss ",[153,706,707],{},"[f_fileIndex-startChar-endChar]"," nutzen; alle drei numerischen Teile erforderlich;",[84,710,711,714,715,718],{},[24,712,713],{},"Nur aus aktuellen Quellen kopieren:"," Fußnoten ",[24,716,717],{},"wörtlich"," aus System/User-Nachrichten oder Tool-Rückgaben dieser Runde;",[84,720,721,724],{},[24,722,723],{},"Keine Erfindung:"," Positionen nicht berechnen, ändern oder erfinden;",[84,726,727,730,731,734],{},[24,728,729],{},"Lieber weglassen:"," Kein gültiger Tag im Context → normal antworten—",[24,732,733],{},"keine Positions-Tags"," ausgeben;",[84,736,737,740],{},[24,738,739],{},"Inline bei Aussagen:"," Tags folgen dem relevanten Satz; keine Zitatlisten am Ende.",[10,742,743,744,747,748,751],{},"Die UI filtert gelegentliche ",[24,745,746],{},"zweiteilige"," ungültige Tags (z. B. ",[153,749,750],{},"[f1-293]",") vor dem Rendern.",[10,753,754],{},[13,755],{"alt":756,"src":757},"Zitat-Nachverfolgungs-Popup","https://cdn.linghuxiong.com/resources/snapshots/ai-chat.png",[33,759],{},[36,761,763],{"id":762},"vi-tool-calling-erst-suchen-dann-antworten","VI. Tool Calling: Erst suchen, dann antworten",[10,765,766,767,770,771,774,775,231],{},"Ist der Chat an ein Buch gebunden (",[153,768,769],{},"resourceId"," vorhanden, ",[153,772,773],{},"chatType === 'chat'","), registrieren wir vor jeder Generierung zwei Tools mit Executors—Standard-OpenAI-",[24,776,777],{},"Function-Calling-Schleife",[53,779,781,782,785],{"id":780},"_61-get_related_segment_summaries-gezielter-segment-abruf","6.1 ",[153,783,784],{},"get_related_segment_summaries"," — Gezielter Segment-Abruf",[10,787,788,789,231],{},"Für: Konzepte, Figuren, Handlung, Kapiteldetails—",[24,790,791],{},"klare Suchabsicht",[10,793,794],{},"Ablauf:",[250,796,797,804,810,817,827],{},[84,798,799,800,803],{},"Modell formuliert Nutzerwortlaut in ",[24,801,802],{},"im Buch wahrscheinliche Begriffe"," um („Optimize Search Queries“ im System Prompt);",[84,805,806,807,205],{},"Tool-Aufruf mit ",[153,808,809],{},"question",[84,811,812,813,816],{},"Alle Segment-Zusammenfassungen nach Token-Budget ",[24,814,815],{},"batchen"," (~30k Token pro Batch, max. 5 Batches);",[84,818,819,820,823,824,205],{},"Pro Batch: separater LLM-Request wählt relevante Segment-IDs (max. 5) aus ",[153,821,822],{},"{ id, title, summary }",", JSON wie ",[153,825,826],{},"{\"Thinking\":\"...\",\"answer\":[\"1\",\"3\"]}",[84,828,829,830,833],{},"Für gewählte Segmente ",[24,831,832],{},"getaggten Quelltext"," aus dem Spine laden—not Zusammenfassungen—als Tool-Ergebnis.",[10,835,836,839,840,843],{},[24,837,838],{},"Schlüsseldesign: Tool liefert Quelle, keine Zusammenfassungen."," Das Modell antwortet aus echten Absätzen mit inline ",[153,841,842],{},"[f…]",", ohne „Zusammenfassung → erneute Zusammenfassung“-Drift.",[53,845,847,848,851],{"id":846},"_62-get_full_book_segment_summaries-gesamtbuch-überblick","6.2 ",[153,849,850],{},"get_full_book_segment_summaries"," — Gesamtbuch-Überblick",[10,853,854,855,231],{},"Für: „Buch zusammenfassen“, „Rezension“, „Gesamtstruktur/Themen“—",[24,856,857],{},"globaler Blick",[10,859,860,861,864],{},"Alle Segment-",[153,862,863],{},"summary","-Felder in Lesereihenfolge verketten—wichtige Kapitel nicht nur über Chunk-Relevanz verpassen.",[53,866,868],{"id":867},"_63-system-prompt-buch-zuerst-tools-zuerst","6.3 System Prompt: Buch zuerst, Tools zuerst",[10,870,871,872,534],{},"Mit gebundenem Buch gilt ",[24,873,874],{},[693,875,876],{},"Core Principles for Reading Assistant",[611,878,881],{"className":879,"code":880,"language":616},[614],"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,882,880],{"__ignoreMap":617},[10,884,885,886,889,890,893],{},"Die Generierung führt die Tool-Schleife aus: ",[153,887,888],{},"tool_calls"," → ausführen → ",[153,891,892],{},"role: tool"," anhängen → bis zum finalen Text. Mit aktivierten Tools ist der Thinking-Kanal aus, um Protokollkonflikte zu vermeiden.",[33,895],{},[36,897,899],{"id":898},"vii-frontend-nachverfolgung-von-der-fußnote-zur-hervorhebung","VII. Frontend-Nachverfolgung: Von der Fußnote zur Hervorhebung",[10,901,902,903,905],{},"Modellausgabe ",[153,904,655],{}," wird nicht roh angezeigt; die Render-Schicht macht daraus klickbare Zitate.",[53,907,909],{"id":908},"_71-fußnoten-rendering","7.1 Fußnoten-Rendering",[10,911,912,913,916],{},"Tags zu Markdown-Links wie ",[153,914,915],{},"[1]([f5-123-165])"," normalisieren, als nummerierte Fußnoten rendern; gleiche Position deduplizieren.",[53,918,920],{"id":919},"_72-klick-interaktion","7.2 Klick-Interaktion",[250,922,923,932,938],{},[84,924,925,928,929,931],{},[24,926,927],{},"Erster Klick:"," ",[153,930,842],{}," parsen → fileIndex + Offsets → Spine-Text extrahieren → Vorschau (optional TOC-Titel);",[84,933,934,937],{},[24,935,936],{},"Gleiche Fußnote erneut:"," Vorschau schließen;",[84,939,940,943],{},[24,941,942],{},"Sprung bestätigen:"," Lesesicht öffnen, Zeichenbereich hervorheben.",[10,945,946,947,950],{},"Vom kopierten Modell-Tag bis zum sichtbaren Quelltext für den Nutzer ",[24,948,949],{},"kein weiterer LLM-Schritt","—deterministisch und reproduzierbar.",[33,952],{},[36,954,956],{"id":955},"viii-grenzfälle-und-ehrliche-degradation","VIII. Grenzfälle und ehrliche Degradation",[10,958,959,960,534],{},"Zero Hallucination ≠ „immer eine Antwort“—sondern ",[24,961,962],{},"kein Beleg, keine Erfindung",[280,964,965,975],{},[283,966,967],{},[286,968,969,972],{},[289,970,971],{},"Szenario",[289,973,974],{},"Verhalten",[302,976,977,985,996,1004,1012],{},[286,978,979,982],{},[307,980,981],{},"Segment-Zusammenfassungen noch nicht fertig",[307,983,984],{},"Zuerst Volltext extrahieren und zusammenfassen",[286,986,987,990],{},[307,988,989],{},"Tool findet nichts",[307,991,992,995],{},[153,993,994],{},"(No relevant segment excerpts found…)"," zurück; Modell soll „nicht im Buch“ sagen",[286,997,998,1001],{},[307,999,1000],{},"Ungültige zweiteilige Tags vom Modell",[307,1002,1003],{},"Frontend filtert; keine kaputten Fußnoten",[286,1005,1006,1009],{},[307,1007,1008],{},"Smalltalk",[307,1010,1011],{},"System Prompt erlaubt Allgemeinwissen ohne Buch",[286,1013,1014,1017],{},[307,1015,1016],{},"Chat exportieren",[307,1018,1019],{},"Fußnoten können Reader-Deep-Links für Teilen/Archiv werden",[10,1021,1022],{},[13,1023],{"alt":1024,"src":1025},"Chat-Export","https://cdn.linghuxiong.com/resources/snapshots/ai-chat-export.png",[33,1027],{},[36,1029,1031],{"id":1030},"ix-design-abwägung-warum-kein-vektor-rag","IX. Design-Abwägung: Warum kein „Vektor-RAG“?",[10,1033,1034,1035,1038],{},"Kollegen im Dokumenten-Q&A fragen oft: Wenn Retrieval-Augmented Generation—warum nicht ",[24,1036,1037],{},"Embedding + Vektor-DB Top-K","?",[10,1040,1041,1042,1045,1046,1049,1050,1053,1054,1057],{},"Wir ",[24,1043,1044],{},"machen RAG","—erst suchen, dann generieren. Der Unterschied: „RAG“ impliziert in der Community oft ",[24,1047,1048],{},"Vektor-Ähnlichkeit","; unsere Phase 3 ist ",[24,1051,1052],{},"Segment-Index + Tool mit Quelltext on demand","—",[24,1055,1056],{},"bewusst ohne Vektorschicht",". Unten: architektonische Gründe, kein Abwertung von Vektor-RAG.",[53,1059,1061],{"id":1060},"abgrenzung-nicht-kein-retrieval-sondern-kein-vektor-retrieval","Abgrenzung: nicht „kein Retrieval“, sondern „kein Vektor-Retrieval“",[81,1063,1064,1073],{},[84,1065,1066,1069,1070,205],{},[24,1067,1068],{},"Breites RAG:"," suchen → generieren → ",[24,1071,1072],{},"machen wir",[84,1074,1075,1078,1079,231],{},[24,1076,1077],{},"Vektor-RAG:"," Recall per Embedding-Ähnlichkeit → ",[24,1080,1081],{},"in dieser Version nicht",[10,1083,1084,1085,1088,1089,1091],{},"Die Vorverarbeitung baut einen ",[24,1086,1087],{},"Segment-Zusammenfassungs-Index","; das Modell wählt Segmente per Tools und erhält ",[24,1090,321],{},". Retrieval ohne separates Embedding-Modell und Vektor-Index-Pflege.",[33,1093],{},[53,1095,1097],{"id":1096},"grund-1-eigene-llm-providerkleine-integrationsfläche","Grund 1: Eigene LLM-Provider—kleine Integrationsfläche",[10,1099,1100,1101,1104,1105,1108],{},"Nutzer können ",[24,1102,1103],{},"eigene API-Keys",", eigene Base-URLs oder ",[24,1106,1107],{},"lokales Ollama"," nutzen—Chat-Modell ist ihre Wahl; Kosten und Datenpfad bleiben kontrollierbar.",[10,1110,1111],{},"Typisches Vektor-RAG erweitert die Integration:",[81,1113,1114,1125,1128],{},[84,1115,1116,1117,1120,1121,1124],{},"Neben ",[24,1118,1119],{},"Chat-Modell"," meist ein ",[24,1122,1123],{},"Embedding-Modell"," (anderer Name, oft anderer Endpoint);",[84,1126,1127],{},"Lokales Ollama braucht separates Embedding-Modell plus Dimension/API-Kompatibilität;",[84,1129,1130,1131,1134],{},"Mehr Fehlerdomänen: Chat ok, aber ",[24,1132,1133],{},"leerer Abruf","—Embedding, Index oder Dimension; schwerer zu debuggen als ein Provider end-to-end.",[10,1136,1137,1138,1141,1142,1145],{},"Hier teilen ",[24,1139,1140],{},"Segmentwahl und Antwort eine Provider-Konfiguration","—kein „Chat auf A, Index auf B“. Für ",[24,1143,1144],{},"austauschbare LLM","-Apps oft wichtiger als wenige Recall-Punkte.",[10,1147,1148],{},[13,1149],{"alt":1150,"src":1151},"Eigene KI-Provider","https://cdn.linghuxiong.com/resources/snapshots/ai-customize-providers.png",[33,1153],{},[53,1155,1157],{"id":1156},"grund-2-embeddings-binden-an-den-indexprovider-wechsel-ist-teuer","Grund 2: Embeddings binden an den Index—Provider-Wechsel ist teuer",[10,1159,1160,1161,1164,1165,1168,1169,1172],{},"Bei Vektor-RAG sind ",[24,1162,1163],{},"Vektoren kein universelles Zwischenformat","—sie sind Koordinaten unter einem Embedding-Modell. Index mit A, Abfrage mit B: Ähnlichkeit meist ",[24,1166,1167],{},"nicht vergleichbar","—oft ",[24,1170,1171],{},"vollständiges Re-Embedding",", Dimensionen (768 / 1024 / 1536 …) binden das Speicher-Schema.",[10,1174,1175,1176,1179,1180,1183],{},"Phase 3 persistiert ",[24,1177,1178],{},"strukturierte Zusammenfassungen + Zeichen-Spannen",", keine Vektoren; Chat-Modell wechseln ",[24,1181,1182],{},"ohne Index-Rebuild","; Belegkette (Quellpositionen) bleibt—passt zu „jederzeit andere LLMs testen“.",[33,1185],{},[53,1187,1189],{"id":1188},"grund-3-strukturiertes-routing-reicht-oft-für-toc-lastige-langdokumente","Grund 3: Strukturiertes Routing reicht oft für TOC-lastige Langdokumente",[10,1191,1192,1193,1196,1197,1200,1201,1204,1205,1210],{},"E-Books und PDFs haben meist ",[24,1194,1195],{},"Kapitelstruktur","; die Vorverarbeitung liefert ",[24,1198,1199],{},"Segmenttitel + Zusammenfassungen",". Für „was sagt Kapitel X“ oder „wie definiert das Buch Y“: Segmente aus dem Katalog wählen, dann ",[24,1202,1203],{},"Quelle ziehen","—in der Praxis stabil; Tool liefert ",[24,1206,1207,1208],{},"Quelle mit ",[153,1209,842],{},", Zero Hallucination bleibt an Zeichen-Spannen verankert.",[10,1212,1213,1214,1217,1218,1221],{},"Vektoren helfen bei semantischer Unschärfe, Mehrsprachigkeit, langen wörtlichen Treffern; für ",[24,1215,1216],{},"TOC + Vorverarbeitung + starke Nachverfolgbarkeit"," lohnt sich die Investition in ",[24,1219,1220],{},"Tool + Quellrückgabe + Zitierregeln"," oft mehr.",[33,1223],{},[53,1225,1227],{"id":1226},"ausblick-hybrider-recall-kein-neuanfang","Ausblick: Hybrider Recall, kein Neuanfang",[10,1229,1230,1231,1234,1235,1238,1239,1242,1243,1246],{},"Möglich ist später ",[24,1232,1233],{},"Vektor-Grobrecall"," (Embedding nur für Top-N-Kapitel-Kandidaten), Ende bleibt ",[24,1236,1237],{},"Segment wählen → Quelle → klickbare Spur","—Zero-Hallucination-Regeln unverändert. Falls eingeführt: Embedding ",[24,1240,1241],{},"optional",", explizite ",[24,1244,1245],{},"Re-Index","-Hinweise bei Modellwechsel—kein silent wrong retrieval.",[10,1248,1249,1250],{},"Bis dahin: ",[24,1251,1252],{},"jede OpenAI-kompatible Chat-API funktioniert; Chat-Modell wechseln ohne lokalen Index-Rebuild.",[33,1254],{},[36,1256,1258],{"id":1257},"x-zusammenfassung","X. Zusammenfassung",[280,1260,1261,1274],{},[283,1262,1263],{},[286,1264,1265,1268,1271],{},[289,1266,1267],{},"Schritt",[289,1269,1270],{},"Methode",[289,1272,1273],{},"Rolle",[302,1275,1276,1287,1300,1315,1326,1337],{},[286,1277,1278,1281,1284],{},[307,1279,1280],{},"Vorverarbeitung",[307,1282,1283],{},"Aufteilung nach TOC/Länge + Segment-Cache",[307,1285,1286],{},"Lange Bücher durchsuchbar & lokalisierbar",[286,1288,1289,1292,1297],{},[307,1290,1291],{},"Positions-Tags",[307,1293,1294,1296],{},[153,1295,155],{}," in der Quelle",[307,1298,1299],{},"Maschinenlesbare Herkunft",[286,1301,1302,1305,1312],{},[307,1303,1304],{},"Tool-Abruf",[307,1306,1307,1308,1311],{},"Segmente / Vollbuch-Zusammenfassungen pro Frage, ",[24,1309,1310],{},"Quelle"," zurück",[307,1313,1314],{},"Beleg vor Antwort erzwingen",[286,1316,1317,1320,1323],{},[307,1318,1319],{},"System Prompt",[307,1321,1322],{},"Buch zuerst, keine gefälschten Tags, fehlendes benennen",[307,1324,1325],{},"Generierung einschränken",[286,1327,1328,1331,1334],{},[307,1329,1330],{},"Frontend",[307,1332,1333],{},"Fußnote → Vorschau → Sprung & Hervorhebung",[307,1335,1336],{},"Nutzer prüft Belege",[286,1338,1339,1342,1345],{},[307,1340,1341],{},"Kein Vektor-Retrieval",[307,1343,1344],{},"Ein Provider; Chat-Modell tauschen ohne Re-Index",[307,1346,1347],{},"Geringere Integrations- & Migrationskosten",[10,1349,1350,1351,1354],{},"„Zero Hallucination“ heißt nicht, dass das Modell nie irrt—sondern dass ",[24,1352,1353],{},"Engineering die Ausgabe an eine Belegkette bindet",": kein Abruf → nicht als Buchinhalt ausgeben; mit Abruf → verifizierbare Quellpositionen.",[10,1356,1357,1358,1361,1362,1365],{},"Wenn Sie AI-Reading oder Dokumenten-Q&A bauen, hoffen wir, der Weg ",[24,1359,1360],{},"Volltext → Schlüsselsätze → Tool-first on demand"," plus ",[24,1363,1364],{},"inline Positions-Tags + Quellrückgabe"," sei eine nützliche Referenz.",[18,1367,1368],{},[10,1369,1370,1371,1376,1377,231],{},"Das sind Erfahrungen aus dem ",[242,1372,1375],{"href":1373,"rel":1374},"https://reader.linghuxiong.com",[246],"Foxycape"," AI-Reader—nur zur Orientierung. Den Reader finden Sie auf der ",[242,1378,1380],{"href":1379},"/de-de#download","Download-Seite",{"title":617,"searchDepth":1382,"depth":1382,"links":1383},2,[1384,1390,1391,1392,1393,1397,1404,1408,1409,1416],{"id":38,"depth":1382,"text":39,"children":1385},[1386,1388,1389],{"id":55,"depth":1387,"text":56},3,{"id":137,"depth":1387,"text":138},{"id":234,"depth":1387,"text":235},{"id":424,"depth":1382,"text":425},{"id":485,"depth":1382,"text":486},{"id":500,"depth":1382,"text":501},{"id":631,"depth":1382,"text":632,"children":1394},[1395,1396],{"id":659,"depth":1387,"text":660},{"id":685,"depth":1387,"text":686},{"id":762,"depth":1382,"text":763,"children":1398},[1399,1401,1403],{"id":780,"depth":1387,"text":1400},"6.1 get_related_segment_summaries — Gezielter Segment-Abruf",{"id":846,"depth":1387,"text":1402},"6.2 get_full_book_segment_summaries — Gesamtbuch-Überblick",{"id":867,"depth":1387,"text":868},{"id":898,"depth":1382,"text":899,"children":1405},[1406,1407],{"id":908,"depth":1387,"text":909},{"id":919,"depth":1387,"text":920},{"id":955,"depth":1382,"text":956},{"id":1030,"depth":1382,"text":1031,"children":1410},[1411,1412,1413,1414,1415],{"id":1060,"depth":1387,"text":1061},{"id":1096,"depth":1387,"text":1097},{"id":1156,"depth":1387,"text":1157},{"id":1188,"depth":1387,"text":1189},{"id":1226,"depth":1387,"text":1227},{"id":1257,"depth":1382,"text":1258},null,"2026-06-03","Technische Einblicke in Zero-Hallucination-Q&A im AI-Reader—Antworten strikt am Buchtext, mit Ein-Klick-Zitaten zu exakten Passagen.",false,"md",{},true,"/de-de/blog/zero-hallucination-qa",{"title":5,"description":1419},"de-de/blog/zero-hallucination-qa",[1428,1429,1430],"Leser","KI","Technik","zero-hallucination-qa","g9uECFFgKYnaY-yPn0UEDOE7zh85obCBo3y-QSaUYvo",[1434],{"id":4,"title":5,"body":1435,"config":1417,"date":1418,"description":1419,"draft":1420,"extension":1421,"image":1417,"meta":2343,"navigation":1423,"path":1424,"seo":2344,"stem":1426,"tags":2345,"toolbar":1417,"translationKey":1431,"updated":1418,"__hash__":1432},{"type":7,"value":1436,"toc":2311},[1437,1441,1449,1451,1453,1457,1459,1461,1471,1475,1483,1487,1509,1511,1513,1523,1527,1531,1541,1545,1569,1573,1575,1582,1598,1602,1682,1692,1696,1698,1700,1704,1714,1718,1732,1736,1738,1740,1742,1746,1748,1750,1762,1768,1816,1818,1824,1829,1833,1835,1837,1843,1848,1852,1854,1858,1863,1867,1869,1875,1903,1909,1913,1915,1917,1925,1929,1933,1935,1959,1965,1969,1973,1977,1979,1985,1990,1996,1998,2000,2004,2006,2010,2012,2028,2032,2034,2036,2040,2084,2088,2090,2092,2096,2106,2108,2122,2128,2130,2132,2138,2140,2154,2160,2164,2166,2168,2176,2182,2184,2186,2198,2204,2206,2208,2218,2222,2224,2226,2292,2296,2302],[10,1438,1439],{},[13,1440],{"alt":15,"src":16},[18,1442,1443],{},[10,1444,22,1445,27,1447,31],{},[24,1446,26],{},[24,1448,30],{},[33,1450],{},[36,1452,39],{"id":38},[10,1454,42,1455,46],{},[24,1456,45],{},[48,1458],{":config":50,"code":51},[53,1460,56],{"id":55},[10,1462,1463,62,1465,66,1467,70,1469,74],{},[24,1464,61],{},[24,1466,65],{},[24,1468,69],{},[24,1470,73],{},[10,1472,1473],{},[24,1474,79],{},[81,1476,1477,1479,1481],{},[84,1478,86],{},[84,1480,89],{},[84,1482,92],{},[10,1484,1485],{},[24,1486,97],{},[81,1488,1489,1493,1497,1503],{},[84,1490,1491,105],{},[24,1492,104],{},[84,1494,1495,111],{},[24,1496,110],{},[84,1498,1499,117,1501,121],{},[24,1500,116],{},[24,1502,120],{},[84,1504,1505,127,1507,131],{},[24,1506,126],{},[24,1508,130],{},[10,1510,134],{},[53,1512,138],{"id":137},[10,1514,1515,143,1517,147,1519,151,1521,156],{},[24,1516,61],{},[24,1518,146],{},[24,1520,150],{},[153,1522,155],{},[10,1524,159,1525,163],{},[24,1526,162],{},[10,1528,1529],{},[24,1530,79],{},[81,1532,1533,1537,1539],{},[84,1534,172,1535,176],{},[24,1536,175],{},[84,1538,179],{},[84,1540,182],{},[10,1542,1543],{},[24,1544,187],{},[81,1546,1547,1551,1557,1563],{},[84,1548,1549,195],{},[24,1550,194],{},[84,1552,1553,201,1555,205],{},[24,1554,200],{},[24,1556,204],{},[84,1558,1559,211,1561,205],{},[24,1560,210],{},[24,1562,214],{},[84,1564,1565,220,1567,224],{},[24,1566,219],{},[24,1568,223],{},[10,1570,227,1571,231],{},[24,1572,230],{},[53,1574,235],{"id":234},[10,1576,1577,240,1579,248],{},[24,1578,61],{},[242,1580,247],{"href":244,"rel":1581},[246],[250,1583,1584,1588,1594],{},[84,1585,1586,257],{},[24,1587,256],{},[84,1589,1590,263,1592,267],{},[24,1591,262],{},[24,1593,266],{},[84,1595,1596,273],{},[24,1597,272],{},[10,1599,1600],{},[24,1601,278],{},[280,1603,1604,1616],{},[283,1605,1606],{},[286,1607,1608,1610,1612,1614],{},[289,1609,291],{},[289,1611,294],{},[289,1613,297],{},[289,1615,300],{},[302,1617,1618,1630,1640,1650,1660,1672],{},[286,1619,1620,1622,1624,1626],{},[307,1621,309],{},[307,1623,312],{},[307,1625,315],{},[307,1627,318,1628,322],{},[24,1629,321],{},[286,1631,1632,1634,1636,1638],{},[307,1633,327],{},[307,1635,330],{},[307,1637,333],{},[307,1639,336],{},[286,1641,1642,1644,1646,1648],{},[307,1643,341],{},[307,1645,344],{},[307,1647,347],{},[307,1649,350],{},[286,1651,1652,1654,1656,1658],{},[307,1653,355],{},[307,1655,358],{},[307,1657,361],{},[307,1659,364],{},[286,1661,1662,1664,1666,1668],{},[307,1663,369],{},[307,1665,372],{},[307,1667,375],{},[307,1669,378,1670],{},[24,1671,381],{},[286,1673,1674,1676,1678,1680],{},[307,1675,386],{},[307,1677,389],{},[307,1679,392],{},[307,1681,395],{},[10,1683,1684,401,1686,405,1688,409,1690,413],{},[24,1685,400],{},[24,1687,404],{},[24,1689,408],{},[24,1691,412],{},[10,1693,416,1694,231],{},[24,1695,419],{},[33,1697],{},[36,1699,425],{"id":424},[10,1701,428,1702,432],{},[24,1703,431],{},[81,1705,1706,1710,1712],{},[84,1707,437,1708,441],{},[24,1709,440],{},[84,1711,444],{},[84,1713,447],{},[10,1715,450,1716,454],{},[24,1717,453],{},[250,1719,1720,1724,1728],{},[84,1721,1722,462],{},[24,1723,461],{},[84,1725,1726,468],{},[24,1727,467],{},[84,1729,1730,474],{},[24,1731,473],{},[10,1733,477,1734,480],{},[24,1735,419],{},[33,1737],{},[36,1739,486],{"id":485},[48,1741],{":config":50,"code":489},[10,1743,492,1744],{},[24,1745,495],{},[33,1747],{},[36,1749,501],{"id":500},[10,1751,504,1752,508,1754,512,1756,516,1758,520,1760,524],{},[24,1753,507],{},[24,1755,511],{},[24,1757,515],{},[24,1759,519],{},[153,1761,523],{},[10,1763,527,1764,530,1766,534],{},[153,1765,523],{},[24,1767,533],{},[280,1769,1770,1778],{},[283,1771,1772],{},[286,1773,1774,1776],{},[289,1775,543],{},[289,1777,546],{},[302,1779,1780,1790,1800,1808],{},[286,1781,1782,1788],{},[307,1783,1784,556,1786],{},[153,1785,555],{},[153,1787,559],{},[307,1789,562],{},[286,1791,1792,1798],{},[307,1793,1794,556,1796],{},[153,1795,569],{},[153,1797,572],{},[307,1799,575],{},[286,1801,1802,1806],{},[307,1803,1804],{},[153,1805,582],{},[307,1807,585],{},[286,1809,1810,1814],{},[307,1811,1812],{},[153,1813,592],{},[307,1815,595],{},[10,1817,598],{},[10,1819,601,1820,605,1822,609],{},[24,1821,604],{},[153,1823,608],{},[611,1825,1827],{"className":1826,"code":615,"language":616,"meta":617},[614],[153,1828,615],{"__ignoreMap":617},[10,1830,622,1831,626],{},[24,1832,625],{},[33,1834],{},[36,1836,632],{"id":631},[10,1838,635,1839,639,1841,643],{},[24,1840,638],{},[24,1842,642],{},[611,1844,1846],{"className":1845,"code":647,"language":616},[614],[153,1847,647],{"__ignoreMap":617},[10,1849,652,1850,656],{},[153,1851,655],{},[53,1853,660],{"id":659},[10,1855,663,1856,667],{},[153,1857,666],{},[611,1859,1861],{"className":1860,"code":672,"language":673,"meta":617},[671],[153,1862,672],{"__ignoreMap":617},[10,1864,678,1865,682],{},[24,1866,681],{},[53,1868,686],{"id":685},[10,1870,689,1871,696],{},[24,1872,1873],{},[693,1874,695],{},[250,1876,1877,1883,1889,1893,1899],{},[84,1878,1879,704,1881,708],{},[24,1880,703],{},[153,1882,707],{},[84,1884,1885,714,1887,718],{},[24,1886,713],{},[24,1888,717],{},[84,1890,1891,724],{},[24,1892,723],{},[84,1894,1895,730,1897,734],{},[24,1896,729],{},[24,1898,733],{},[84,1900,1901,740],{},[24,1902,739],{},[10,1904,743,1905,747,1907,751],{},[24,1906,746],{},[153,1908,750],{},[10,1910,1911],{},[13,1912],{"alt":756,"src":757},[33,1914],{},[36,1916,763],{"id":762},[10,1918,766,1919,770,1921,774,1923,231],{},[153,1920,769],{},[153,1922,773],{},[24,1924,777],{},[53,1926,781,1927,785],{"id":780},[153,1928,784],{},[10,1930,788,1931,231],{},[24,1932,791],{},[10,1934,794],{},[250,1936,1937,1941,1945,1949,1955],{},[84,1938,799,1939,803],{},[24,1940,802],{},[84,1942,806,1943,205],{},[153,1944,809],{},[84,1946,812,1947,816],{},[24,1948,815],{},[84,1950,819,1951,823,1953,205],{},[153,1952,822],{},[153,1954,826],{},[84,1956,829,1957,833],{},[24,1958,832],{},[10,1960,1961,839,1963,843],{},[24,1962,838],{},[153,1964,842],{},[53,1966,847,1967,851],{"id":846},[153,1968,850],{},[10,1970,854,1971,231],{},[24,1972,857],{},[10,1974,860,1975,864],{},[153,1976,863],{},[53,1978,868],{"id":867},[10,1980,871,1981,534],{},[24,1982,1983],{},[693,1984,876],{},[611,1986,1988],{"className":1987,"code":880,"language":616},[614],[153,1989,880],{"__ignoreMap":617},[10,1991,885,1992,889,1994,893],{},[153,1993,888],{},[153,1995,892],{},[33,1997],{},[36,1999,899],{"id":898},[10,2001,902,2002,905],{},[153,2003,655],{},[53,2005,909],{"id":908},[10,2007,912,2008,916],{},[153,2009,915],{},[53,2011,920],{"id":919},[250,2013,2014,2020,2024],{},[84,2015,2016,928,2018,931],{},[24,2017,927],{},[153,2019,842],{},[84,2021,2022,937],{},[24,2023,936],{},[84,2025,2026,943],{},[24,2027,942],{},[10,2029,946,2030,950],{},[24,2031,949],{},[33,2033],{},[36,2035,956],{"id":955},[10,2037,959,2038,534],{},[24,2039,962],{},[280,2041,2042,2050],{},[283,2043,2044],{},[286,2045,2046,2048],{},[289,2047,971],{},[289,2049,974],{},[302,2051,2052,2058,2066,2072,2078],{},[286,2053,2054,2056],{},[307,2055,981],{},[307,2057,984],{},[286,2059,2060,2062],{},[307,2061,989],{},[307,2063,2064,995],{},[153,2065,994],{},[286,2067,2068,2070],{},[307,2069,1000],{},[307,2071,1003],{},[286,2073,2074,2076],{},[307,2075,1008],{},[307,2077,1011],{},[286,2079,2080,2082],{},[307,2081,1016],{},[307,2083,1019],{},[10,2085,2086],{},[13,2087],{"alt":1024,"src":1025},[33,2089],{},[36,2091,1031],{"id":1030},[10,2093,1034,2094,1038],{},[24,2095,1037],{},[10,2097,1041,2098,1045,2100,1049,2102,1053,2104,1057],{},[24,2099,1044],{},[24,2101,1048],{},[24,2103,1052],{},[24,2105,1056],{},[53,2107,1061],{"id":1060},[81,2109,2110,2116],{},[84,2111,2112,1069,2114,205],{},[24,2113,1068],{},[24,2115,1072],{},[84,2117,2118,1078,2120,231],{},[24,2119,1077],{},[24,2121,1081],{},[10,2123,1084,2124,1088,2126,1091],{},[24,2125,1087],{},[24,2127,321],{},[33,2129],{},[53,2131,1097],{"id":1096},[10,2133,1100,2134,1104,2136,1108],{},[24,2135,1103],{},[24,2137,1107],{},[10,2139,1111],{},[81,2141,2142,2148,2150],{},[84,2143,1116,2144,1120,2146,1124],{},[24,2145,1119],{},[24,2147,1123],{},[84,2149,1127],{},[84,2151,1130,2152,1134],{},[24,2153,1133],{},[10,2155,1137,2156,1141,2158,1145],{},[24,2157,1140],{},[24,2159,1144],{},[10,2161,2162],{},[13,2163],{"alt":1150,"src":1151},[33,2165],{},[53,2167,1157],{"id":1156},[10,2169,1160,2170,1164,2172,1168,2174,1172],{},[24,2171,1163],{},[24,2173,1167],{},[24,2175,1171],{},[10,2177,1175,2178,1179,2180,1183],{},[24,2179,1178],{},[24,2181,1182],{},[33,2183],{},[53,2185,1189],{"id":1188},[10,2187,1192,2188,1196,2190,1200,2192,1204,2194,1210],{},[24,2189,1195],{},[24,2191,1199],{},[24,2193,1203],{},[24,2195,1207,2196],{},[153,2197,842],{},[10,2199,1213,2200,1217,2202,1221],{},[24,2201,1216],{},[24,2203,1220],{},[33,2205],{},[53,2207,1227],{"id":1226},[10,2209,1230,2210,1234,2212,1238,2214,1242,2216,1246],{},[24,2211,1233],{},[24,2213,1237],{},[24,2215,1241],{},[24,2217,1245],{},[10,2219,1249,2220],{},[24,2221,1252],{},[33,2223],{},[36,2225,1258],{"id":1257},[280,2227,2228,2238],{},[283,2229,2230],{},[286,2231,2232,2234,2236],{},[289,2233,1267],{},[289,2235,1270],{},[289,2237,1273],{},[302,2239,2240,2248,2258,2268,2276,2284],{},[286,2241,2242,2244,2246],{},[307,2243,1280],{},[307,2245,1283],{},[307,2247,1286],{},[286,2249,2250,2252,2256],{},[307,2251,1291],{},[307,2253,2254,1296],{},[153,2255,155],{},[307,2257,1299],{},[286,2259,2260,2262,2266],{},[307,2261,1304],{},[307,2263,1307,2264,1311],{},[24,2265,1310],{},[307,2267,1314],{},[286,2269,2270,2272,2274],{},[307,2271,1319],{},[307,2273,1322],{},[307,2275,1325],{},[286,2277,2278,2280,2282],{},[307,2279,1330],{},[307,2281,1333],{},[307,2283,1336],{},[286,2285,2286,2288,2290],{},[307,2287,1341],{},[307,2289,1344],{},[307,2291,1347],{},[10,2293,1350,2294,1354],{},[24,2295,1353],{},[10,2297,1357,2298,1361,2300,1365],{},[24,2299,1360],{},[24,2301,1364],{},[18,2303,2304],{},[10,2305,1370,2306,1376,2309,231],{},[242,2307,1375],{"href":1373,"rel":2308},[246],[242,2310,1380],{"href":1379},{"title":617,"searchDepth":1382,"depth":1382,"links":2312},[2313,2318,2319,2320,2321,2325,2330,2334,2335,2342],{"id":38,"depth":1382,"text":39,"children":2314},[2315,2316,2317],{"id":55,"depth":1387,"text":56},{"id":137,"depth":1387,"text":138},{"id":234,"depth":1387,"text":235},{"id":424,"depth":1382,"text":425},{"id":485,"depth":1382,"text":486},{"id":500,"depth":1382,"text":501},{"id":631,"depth":1382,"text":632,"children":2322},[2323,2324],{"id":659,"depth":1387,"text":660},{"id":685,"depth":1387,"text":686},{"id":762,"depth":1382,"text":763,"children":2326},[2327,2328,2329],{"id":780,"depth":1387,"text":1400},{"id":846,"depth":1387,"text":1402},{"id":867,"depth":1387,"text":868},{"id":898,"depth":1382,"text":899,"children":2331},[2332,2333],{"id":908,"depth":1387,"text":909},{"id":919,"depth":1387,"text":920},{"id":955,"depth":1382,"text":956},{"id":1030,"depth":1382,"text":1031,"children":2336},[2337,2338,2339,2340,2341],{"id":1060,"depth":1387,"text":1061},{"id":1096,"depth":1387,"text":1097},{"id":1156,"depth":1387,"text":1157},{"id":1188,"depth":1387,"text":1189},{"id":1226,"depth":1387,"text":1227},{"id":1257,"depth":1382,"text":1258},{},{"title":5,"description":1419},[1428,1429,1430],1780489852815]