[{"data":1,"prerenderedAt":2341},["ShallowReactive",2],{"blog-article-/sv-se/blog/zero-hallucination-qa":3,"blog-list-sv-se":1430},{"id":4,"title":5,"body":6,"config":1414,"date":1415,"description":1416,"draft":1417,"extension":1418,"image":1414,"meta":1419,"navigation":1420,"path":1421,"seo":1422,"stem":1423,"tags":1424,"toolbar":1414,"translationKey":1428,"updated":1415,"__hash__":1429},"blog/sv-se/blog/zero-hallucination-qa.md","Hur jag byggde noll-hallucination Q&A i läsaren",{"type":7,"value":8,"toc":1378},"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,740,751,757,759,763,778,786,792,795,830,840,848,854,861,865,873,879,890,892,896,902,906,913,917,940,947,949,953,959,1017,1023,1025,1029,1036,1055,1059,1079,1090,1092,1096,1107,1110,1133,1144,1150,1152,1156,1171,1182,1184,1188,1209,1220,1222,1226,1245,1251,1253,1257,1345,1352,1363],[10,11,12],"p",{},[13,14],"img",{"alt":15,"src":16},"Omslag: Noll-hallucination Q&A","https://cdn.linghuxiong.com/resources/snapshots/ai-chat-cover.png",[18,19,20],"blockquote",{},[10,21,22,23,27,28,31],{},"Det här inlägget delar hur vi implementerade ",[24,25,26],"strong",{},"noll-hallucination Q&A"," i vår AI-läsare: svar grundas strikt i texten i den bok du har öppen, och viktiga påståenden kan ",[24,29,30],{},"spåras i ett klick"," till exakt stycke. Om du bygger AI-läsning, dokument-Q&A eller RAG-liknande appar hoppas tre iterationers lärdomar och den slutliga arkitekturen vara till nytta.",[33,34],"hr",{},[36,37,39],"h2",{"id":38},"i-utveckling-i-tre-steg","I. Utveckling i tre steg",[10,41,42,43,46],{},"Noll-hallucination Q&A designades inte perfekt dag ett. Det utvecklades under spänning mellan ",[24,44,45],{},"kostnad, latens och träffsäkerhet",". Nedan följer en kronologisk bild av tre steg—användbar kontext för varför den nuvarande arkitekturen ser ut som den gör.",[48,49],"mermaid",{":config":50,"code":51},"config","flowchart%20LR%0A%20%20%20%20P1%5BSteg%201%3A%20Hela%20texten%20i%20kontext%5D%20--%3E%20P2%5BSteg%202%3A%20LLM%20extraherar%20nyckelmeningar%5D%0A%20%20%20%20P2%20--%3E%20P3%5BSteg%203%3A%20Segmentindex%20%2B%20Tool%20retrieval%5D%0A%20%20%20%20P1%20-.-%3E%7CL%C3%A5ngsamt%2C%20dyrt%2C%20fel%20p%C3%A5%20l%C3%A5nga%20b%C3%B6cker%7C%20X1%5BAvvecklat%5D%0A%20%20%20%20P2%20-.-%3E%7CTappar%20detaljer%2C%20fortfarande%20l%C3%A5ngsamt%7C%20X2%5BAvvecklat%5D%0A%20%20%20%20P3%20--%3E%7CNuvarande%7C%20OK%5BNoll%20hallucination%20%2B%20sp%C3%A5rbar%5D",[53,54,56],"h3",{"id":55},"steg-1-stoppa-in-hela-boken-i-kontexten-enklastoch-först-att-brista","Steg 1: Stoppa in hela boken i kontexten (enklast—och först att brista)",[10,58,59,62,63,66,67,70,71,74],{},[24,60,61],{},"Tillvägagångssätt:"," När användaren öppnar en bok och ställer en fråga läggs ",[24,64,65],{},"all extraherad brödtext"," i System Prompt eller användarmeddelande och chattmodellen svarar. Överskrider boken cirka ",[24,68,69],{},"400 000 tecken"," sker ",[24,72,73],{},"hård trunkering","—bara början behålls; senare kapitel är osynliga för modellen.",[10,76,77],{},[24,78,79],{},"Fördelar:",[81,82,83,87,90],"ul",{},[84,85,86],"li",{},"Mycket låg implementeringskostnad; nästan ingen förbehandling;",[84,88,89],{},"Fungerar rimligt på korta böcker och enkla dokument—modellen «såg verkligen hela boken»;",[84,91,92],{},"Enkel UX: fråga och få svar, inget «vänta medan vi analyserar».",[10,94,95],{},[24,96,97],{},"Nackdelar (snabbt oacceptabla):",[81,99,100,106,112,122],{},[84,101,102,105],{},[24,103,104],{},"Långsamma svar:"," Varje fråga skickar om en enorm payload; tid till första token och total latens växer med boklängd;",[84,107,108,111],{},[24,109,110],{},"Hög tokenkostnad:"," Du betalar för hela bokens input vid varje fråga;",[84,113,114,117,118,121],{},[24,115,116],{},"Långa böcker förvrängs:"," Efter 400 000 tecken kan andra halvan, bilagor och slutsatser lika gärna saknas—och UI:t säger ofta ",[24,119,120],{},"inte tydligt"," att trunkering skett;",[84,123,124,127,128,131],{},[24,125,126],{},"Noll retrieval-granularitet:"," Modellen måste «hitta nålen i höstacken» över hundratusentals tecken—lätt att missa detaljer och lättare att producera ",[24,129,130],{},"plausibla sammanfattningar utan underlag","—precis vad läsappar måste undvika.",[10,133,134],{},"Steg 1 duger för MVP, inte för produktkvalitet.",[53,136,138],{"id":137},"steg-2-lättare-llm-extraherar-nyckelmeningar-komprimera-kontextmen-för-hårt","Steg 2: Lättare LLM extraherar nyckelmeningar (komprimera kontext—men för hårt)",[10,140,141,143,144,147,148,151,152,156],{},[24,142,61],{}," Före Q&A (eller vid första öppning) körs en ",[24,145,146],{},"billigare modell"," över brödtexten: dela per Spine-kapitel (eller chunka hela boken), extrahera ",[24,149,150],{},"nyckelmeningar",", behåll positions-taggar som ",[153,154,155],"code",{},"[fFil-start-slut]",", sedan sammanfoga utdrag till kortare kontext för senare Q&A.",[10,158,159,160,163],{},"Typisk pipeline: ",[24,161,162],{},"Extract → Cache → Chat",". Extrahera en gång (offline eller på begäran), lagra «nyckelmeningsbunt», återanvänd vid varje fråga—samma idé som många dokument-Q&A-prototyper som komprimerar först och sedan svarar.",[10,165,166],{},[24,167,79],{},[81,169,170,177,180],{},[84,171,172,173,176],{},"Varje fråga skickar ",[24,174,175],{},"mycket mindre text","; token per förfrågan sjunker mot steg 1;",[84,178,179],{},"Förbehandling kan cachas; ingen om-extrahering per fråga på samma bok;",[84,181,182],{},"Positionstaggar lägger grund för citeringar.",[10,184,185],{},[24,186,187],{},"Nackdelar (håller fortfarande inte på långa böcker):",[81,189,190,196,206,215],{},[84,191,192,195],{},[24,193,194],{},"Stor detaljförlust:"," «Nyckelmeningar» väljs av modellen; kvalificerare, motexempel och argumentkedjor tappas ofta—svar blir «korrekta men ensidiga»;",[84,197,198,201,202,205],{},[24,199,200],{},"Kontext fortfarande stor på långa böcker:"," Även nyckelmeningsbuntar för stora verk är betydande—latens och kostnad ",[24,203,204],{},"lättas, inte löses",";",[84,207,208,211,212,205],{},[24,209,210],{},"Dubbelt LLM-fel:"," Extrahering kan missa; Q&A kan feltolka utdrag—fel ",[24,213,214],{},"staplas",[84,216,217,220,221,224],{},[24,218,219],{},"Statisk kontext:"," Oavsett om användaren frågar om ett kapitel eller helboksstruktur får modellen alltid samma ",[24,222,223],{},"för-extraherade blob","—ingen dynamisk avgränsning per fråga.",[10,226,227,228,231],{},"Lärdom: frågan är inte «om vi komprimerar», utan ",[24,229,230],{},"om komprimering sker på begäran och om vi kan återgå till källtext",".",[53,233,235],{"id":234},"steg-3-segmentindex-tool-retrieval-på-begäran-källtext-tillbaka-nuvarande","Steg 3: Segmentindex + Tool retrieval på begäran + källtext tillbaka (nuvarande)",[10,237,238,240,241,248],{},[24,239,61],{}," Inspirerat av ",[242,243,247],"a",{"href":244,"rel":245},"https://github.com/VectifyAI/PageIndex",[246],"nofollow","PageIndex",". Mot steg 2, tre kärnskiften:",[250,251,252,258,268],"ol",{},[84,253,254,257],{},[24,255,256],{},"Förbehandling ger strukturerat index"," (innehållsförteckningssammanfattningar + exakta tecken-spans), inte utdrag som direkt Q&A-kontext;",[84,259,260,263,264,267],{},[24,261,262],{},"Varje fråga använder Tool Calling för retrieval på begäran",", sedan ",[24,265,266],{},"hämtar källtext med positionstaggar"," för svar;",[84,269,270,273],{},[24,271,272],{},"System Prompt + frontend"," tvingar citeringsformat och stödjer klick-till-hopp med markering i läsaren.",[10,275,276],{},[24,277,278],{},"Jämförelse av tre steg:",[280,281,282,301],"table",{},[283,284,285],"thead",{},[286,287,288,292,295,298],"tr",{},[289,290,291],"th",{},"Dimension",[289,293,294],{},"Steg 1 (hel dump)",[289,296,297],{},"Steg 2 (nyckelmeningar)",[289,299,300],{},"Steg 3 (nuvarande)",[302,303,304,323,337,351,365,382],"tbody",{},[286,305,306,310,313,316],{},[307,308,309],"td",{},"Kontext per fråga",[307,311,312],{},"Hela boken (eller trunkerad första halva)",[307,314,315],{},"För-extraherade nyckelmeningar",[307,317,318,319,322],{},"Endast ",[24,320,321],{},"käll","-utdrag relevanta för frågan",[286,324,325,328,331,334],{},[307,326,327],{},"Träffsäkerhet långa böcker",[307,329,330],{},"Kollapsar efter ~400k tecken",[307,332,333],{},"Beror på extrahering; tappar detaljer",[307,335,336],{},"Hämta via TOC/span; ingen hård helbokstrunkering",[286,338,339,342,345,348],{},[307,340,341],{},"Svarshastighet",[307,343,344],{},"Långsam",[307,346,347],{},"Något bättre; långa böcker fortfarande långsamma",[307,349,350],{},"Retrieval + kort kontext—märkbart snabbare",[286,352,353,356,359,362],{},[307,354,355],{},"Tokenkostnad",[307,357,358],{},"Mycket hög",[307,360,361],{},"Medelhög",[307,363,364],{},"Amorterad förbehandling + betala vid behov",[286,366,367,370,373,376],{},[307,368,369],{},"Spårbarhet",[307,371,372],{},"Svag (svårt att citera)",[307,374,375],{},"Taggar finns men innehåll redan filtrerat",[307,377,378,379],{},"Fotnoter mappar till ",[24,380,381],{},"riktiga käll-spans",[286,383,384,387,390,393],{},[307,385,386],{},"Teknisk komplexitet",[307,388,389],{},"Låg",[307,391,392],{},"Medel",[307,394,395],{},"Hög",[10,397,398,401,402,405,406,409,410,413],{},[24,399,400],{},"Varför vi stannade vid steg 3:"," För läsning är noll hallucination inte «visa modellen så mycket text som möjligt», utan ",[24,403,404],{},"«innan svar, hämta källevidens för frågan»",". Steg 1–2 kämpade om ",[24,407,408],{},"kontextstorlek","; steg 3 delar pipelinen i ",[24,411,412],{},"index (förbehandla) → hämta (Tool) → evidens (källa) → svara (begränsad generering)","—balanserar träffsäkerhet, kostnad och spårbarhet.",[10,415,416,417,231],{},"Nedan detaljer för ",[24,418,419],{},"steg 3",[33,421],{},[36,423,425],{"id":424},"ii-problemformulering-i-bok-qa-gör-hallucination-mer-ont-än-i-generisk-chatt","II. Problemformulering: I bok-Q&A gör hallucination mer ont än i generisk chatt",[10,427,428,429,432],{},"Användare förlåter tillfälliga fel i en generell chatbot. I ",[24,430,431],{},"bok-Q&A"," är kostnaden högre:",[81,434,435,442,445],{},[84,436,437,438,441],{},"De frågar vad ",[24,439,440],{},"den här boken"," säger—inte vad som finns i modellens parametriska minne;",[84,443,444],{},"Ett plausibelt «bokens synpunkt» kan vilseleda anteckningar, citeringar och vidaredelning;",[84,446,447],{},"Utan källor kan de inte verifiera—förtroende är svårt att bygga.",[10,449,450,451,454],{},"Så «noll hallucination» blir tre ",[24,452,453],{},"genomförbara"," regler:",[250,456,457,463,469],{},[84,458,459,462],{},[24,460,461],{},"Bokfrågor måste fråga boken först:"," Allt som rimligen gäller den öppna boken måste genom retrieval (Tool) före svar;",[84,464,465,468],{},[24,466,467],{},"Svar måste vara spårbara:"," Viktiga påståenden bär positionstaggar som UI kan tolka och hoppa till;",[84,470,471,474],{},[24,472,473],{},"Säg när du inte hittar:"," Finns det inte i boken, säg det—klä inte allmän kunskap som «vad boken säger».",[10,476,477,478,480],{},"Resten följer ",[24,479,419],{}," dataflöde och hur reglerna implementeras.",[33,482],{},[36,484,486],{"id":485},"iii-arkitektur-förbehandla-tool-retrieval-begränsad-generering-klickbara-citeringar","III. Arkitektur: Förbehandla → Tool retrieval → Begränsad generering → Klickbara citeringar",[48,488],{":config":50,"code":489},"flowchart%20TB%0A%20%20%20%20subgraph%20prep%20%5BOffline%20%2F%20f%C3%B6rsta%20g%C3%A5ngen%20f%C3%B6rbehandling%5D%0A%20%20%20%20%20%20%20%20A%5BDela%20bok%20efter%20TOC%20eller%20l%C3%A4ngd%5D%20--%3E%20B%5BLLM%20segment-sammanfattningar%5D%0A%20%20%20%20%20%20%20%20B%20--%3E%20C%5BPersist%20Segment-cache%20lokalt%5D%0A%20%20%20%20end%0A%0A%20%20%20%20subgraph%20ask%20%5BAnv%C3%A4ndarfr%C3%A5ga%5D%0A%20%20%20%20%20%20%20%20D%5BAnv%C3%A4ndarinput%5D%20--%3E%20E%7BFinns%20Segment-cache%3F%7D%0A%20%20%20%20%20%20%20%20E%20--%3E%7CNej%7C%20F%5BExtrahera%20full%20text%20%2F%20be%20om%20f%C3%B6rbehandling%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%5BRegistrera%20Tool%20Calling%5D%0A%20%20%20%20end%0A%0A%20%20%20%20subgraph%20retrieve%20%5BTool%20retrieval%5D%0A%20%20%20%20%20%20%20%20G%20--%3E%20H%7BFr%C3%A5getyp%7D%0A%20%20%20%20%20%20%20%20H%20--%3E%7C%C3%96versikt%20%2F%20recension%7C%20I%5Bget_full_book_segment_summaries%5D%0A%20%20%20%20%20%20%20%20H%20--%3E%7CFakta%20%2F%20personer%20%2F%20kapitel%7C%20J%5Bget_related_segment_summaries%5D%0A%20%20%20%20%20%20%20%20J%20--%3E%20K%5BLLM%20v%C3%A4ljer%20segment-ID%20fr%C3%A5n%20sammanfattningskatalog%5D%0A%20%20%20%20%20%20%20%20K%20--%3E%20L%5BH%C3%A4mta%20k%C3%A4lla%20per%20span%20%2B%20positionstaggar%5D%0A%20%20%20%20%20%20%20%20I%20--%3E%20M%5BSammanfoga%20alla%20segment-sammanfattningar%5D%0A%20%20%20%20end%0A%0A%20%20%20%20subgraph%20answer%20%5BGenerera%20och%20visa%5D%0A%20%20%20%20%20%20%20%20L%20--%3E%20N%5BTool-resultat%20tillbaka%20till%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%20Prompt%20citeringsregler%5D%0A%20%20%20%20%20%20%20%20O%20--%3E%20P%5BStr%C3%B6mma%20svar%20%2B%20positionsfotnoter%5D%0A%20%20%20%20%20%20%20%20P%20--%3E%20Q%5BRendera%20klickbara%20fotnoter%5D%0A%20%20%20%20%20%20%20%20Q%20--%3E%20R%5BKlick%20%E2%86%92%20f%C3%B6rhandsgranska%20%E2%86%92%20hoppa%20och%20markera%5D%0A%20%20%20%20end",[10,491,492,493],{},"Kärnidé: ",[24,494,495],{},"låt inte modellen «svara ur minnet»—tvinga den att «samla evidens, svara och markera källor».",[33,497],{},[36,499,501],{"id":500},"iv-förbehandling-gör-hela-boken-till-ett-sökbart-segmentindex","IV. Förbehandling: Gör hela boken till ett sökbart segmentindex",[10,503,504,505,508,509,512,513,516,517,520,521,524],{},"Om varje fråga fortfarande använde helbokskontext från ",[24,506,507],{},"steg 1"," spränger långa böcker tokenbudget och retrieval är för grov. Steg 3: vid första AI-chatt för en bok körs ",[24,510,511],{},"segment-sammanfattningsjobb"," i bakgrunden—dela efter ",[24,514,515],{},"TOC"," eller ",[24,518,519],{},"textlängd"," i ",[153,522,523],{},"Segment",", sammanfatta varje, persist i lokal IndexedDB.",[10,526,527,528,530,531,534],{},"Varje ",[153,529,523],{}," innehåller sammanfattning plus ",[24,532,533],{},"fysisk position i brödtext",":",[280,536,537,547],{},[283,538,539],{},[286,540,541,544],{},[289,542,543],{},"Fält",[289,545,546],{},"Betydelse",[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-filindex (PDF: en fil per sida)",[286,564,565,573],{},[307,566,567,556,570],{},[153,568,569],{},"startOffset",[153,571,572],{},"endOffset",[307,574,575],{},"Tecken start/slut",[286,577,578,583],{},[307,579,580],{},[153,581,582],{},"sequence",[307,584,585],{},"Linjär läsordning",[286,587,588,593],{},[307,589,590],{},[153,591,592],{},"title",[307,594,595],{},"TOC-titel",[10,597,598],{},"Delning balanserar precision och kostnad: om en TOC-nods brödtext är under ~20KB, sammanfatta bara den noden; syskon kan slås ihop i batchar (15–20KB) före LLM-anrop; ostrukturerade långa block delas i ~30–40k teckenintervall.",[10,600,601,602,605,606,609],{},"Sammanfattnings-System Prompt kräver ",[24,603,604],{},"behålla inline positionstaggar"," (",[153,607,608],{},"[fNummer-Nummer-Nummer]",") så Tool-hämtad källa stämmer med Spine-offsets. Kärnbegränsning:",[611,612,618],"pre",{"className":613,"code":615,"language":616,"meta":617},[614],"language-text","Om sammanfattning relaterar till ett stycke, behåll avslutande positionstagg [fNummer-Nummer-Nummer] (t.ex. [f1-90-109]).\nTaggar är atomära—ändra, slå ihop eller utelämna inte tecken eller siffror.\n","text","",[153,619,615],{"__ignoreMap":617},[10,621,622,623,626],{},"Efter förbehandling beror Q&A på ",[24,624,625],{},"strukturerat segmentindex",", inte helbokskontext—tekniskt förutsättning för noll hallucination på långa böcker.",[33,628],{},[36,630,632],{"id":631},"v-positionstaggsystem-koda-var-i-text","V. Positionstaggsystem: Koda «var» i text",[10,634,635,636,639,640,643],{},"Noll hallucination kräver innehåll från källa ",[24,637,638],{},"och"," maskintolkbar, UI-hoppbar ",[24,641,642],{},"härkomst",". Vi använder inline-taggar:",[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],{},"Exempel: ",[153,654,655],{},"[f5-123-165]"," = Spine-fil 5 (0-baserad), tecken 123–165.",[53,658,660],{"id":659},"_51-hur-taggar-skrivs-in-i-brödtext","5.1 Hur taggar skrivs in i brödtext",[10,662,663,664,667],{},"Extraheringslagret lägger till ",[153,665,666],{},"[f{fileIndex}-{start}-{end}]"," i segmentets slut:",[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],{},"Oavsett förbehandlingssammanfattningar eller Tool-utdrag stämmer positioner med ",[24,680,681],{},"Spine-teckenoffset","—inte modellens gissade sidnummer.",[53,684,686],{"id":685},"_52-begränsningar-på-modellutdata","5.2 Begränsningar på modellutdata",[10,688,689,690,696],{},"System Prompt inkluderar ",[24,691,692],{},[693,694,695],"span",{},"Position Citation Rules","—fem kärnpunkter:",[250,698,699,709,719,725,734],{},[84,700,701,704,705,708],{},[24,702,703],{},"Standardformat:"," Måste använda ",[153,706,707],{},"[f_fileIndex-startChar-endChar]","; alla tre numeriska delar krävs;",[84,710,711,714,715,718],{},[24,712,713],{},"Kopiera endast från aktuella källor:"," Fotnoter ",[24,716,717],{},"ordagrant"," från denna rundas system/user-meddelanden eller Tool-returer;",[84,720,721,724],{},[24,722,723],{},"Ingen fabricering:"," Beräkna, redigera eller hitta inte på positioner;",[84,726,727,730,731,205],{},[24,728,729],{},"Föredra utelämnande:"," Finns ingen giltig tagg i kontext, svara normalt—",[24,732,733],{},"skriv inga positionstaggar",[84,735,736,739],{},[24,737,738],{},"Inline med påståenden:"," Taggar följer relevant mening; inga citeringslistor i slutet.",[10,741,742,743,746,747,750],{},"UI filtrerar också tillfälliga ",[24,744,745],{},"tvådelade"," ogiltiga taggar (t.ex. ",[153,748,749],{},"[f1-293]",") före render.",[10,752,753],{},[13,754],{"alt":755,"src":756},"Popup för citeringsspårning","https://cdn.linghuxiong.com/resources/snapshots/ai-chat.png",[33,758],{},[36,760,762],{"id":761},"vi-tool-calling-hämta-först-svara-sedan","VI. Tool Calling: Hämta först, svara sedan",[10,764,765,766,769,770,773,774,777],{},"När chatt är bunden till bok (",[153,767,768],{},"resourceId"," finns, ",[153,771,772],{},"chatType === 'chat'",") registrerar vi två Tools med executors före varje generering—standard OpenAI ",[24,775,776],{},"function calling","-loop.",[53,779,781,782,785],{"id":780},"_61-get_related_segment_summaries-riktad-segmentuppslagning","6.1 ",[153,783,784],{},"get_related_segment_summaries"," — Riktad segmentuppslagning",[10,787,788,789,231],{},"För: begrepp, figurer, handling, kapiteldetaljer—",[24,790,791],{},"tydlig retrieval-avsikt",[10,793,794],{},"Flöde:",[250,796,797,804,810,813,823],{},[84,798,799,800,803],{},"Modellen skriver om användarens formulering till ",[24,801,802],{},"termer som sannolikt finns i boken"," («Optimize Search Queries» i System Prompt);",[84,805,806,807,205],{},"Anropa Tool med ",[153,808,809],{},"question",[84,811,812],{},"Batcha alla segment-sammanfattningar per tokenbudget (~30k tokens per batch, max 5 batchar);",[84,814,815,816,819,820,205],{},"Varje batch: separat LLM-begäran väljer relevanta segment-ID (max 5) från ",[153,817,818],{},"{ id, title, summary }",", JSON som ",[153,821,822],{},"{\"Thinking\":\"...\",\"answer\":[\"1\",\"3\"]}",[84,824,825,826,829],{},"För valda segment, hämta ",[24,827,828],{},"taggad källtext"," från Spine—inte sammanfattningar—som Tool-resultat.",[10,831,832,835,836,839],{},[24,833,834],{},"Nyckeldesign: Tool returnerar källa, inte sammanfattningar."," Modellen svarar från riktiga stycken med inline ",[153,837,838],{},"[f…]",", undviker «sammanfattning → om-sammanfattning»-drift.",[53,841,843,844,847],{"id":842},"_62-get_full_book_segment_summaries-helboksöversikt","6.2 ",[153,845,846],{},"get_full_book_segment_summaries"," — Helboksöversikt",[10,849,850,851,231],{},"För: «sammanfatta boken», «recensera den här boken», «övergripande struktur/teman»—",[24,852,853],{},"global vy",[10,855,856,857,860],{},"Sammanfoga alla segment ",[153,858,859],{},"summary"," i läsordning—undvik att missa nyckelkapitel enbart via chunk-relevans.",[53,862,864],{"id":863},"_63-system-prompt-bok-först-tools-först","6.3 System Prompt: Bok först, tools först",[10,866,867,868,534],{},"Med bunden bok gäller ",[24,869,870],{},[693,871,872],{},"Core Principles for Reading Assistant",[611,874,877],{"className":875,"code":876,"language":616},[614],"1. Book First, Tool First\n   - All fråga som kan gälla boken måste anropa tools först;\n   - Svar måste huvudsakligen bygga på retrieval—hitta aldrig på «bokinnehåll» utan retrieval.\n\n2. General Knowledge as Fallback Only\n   - Endast för: vardagschatt / användaren uttryckligen hoppar över boken / tools utan resultat;\n   - Saknas i boken, säg «nämns inte i den här boken» före allmän kunskap.\n\n3. Direct Style\n   - Gå till sak—undvik «baserat på tillhandahållna material…» och liknande utfyllnad.\n",[153,878,876],{"__ignoreMap":617},[10,880,881,882,885,886,889],{},"Generering kör tool-loopen: ",[153,883,884],{},"tool_calls"," → kör → lägg till ",[153,887,888],{},"role: tool"," → fortsätt tills sluttext. Med tools på stängs thinking-kanal av för att undvika protokollkonflikter.",[33,891],{},[36,893,895],{"id":894},"vii-frontend-spårbarhet-från-fotnot-till-markering","VII. Frontend-spårbarhet: Från fotnot till markering",[10,897,898,899,901],{},"Modellutdata ",[153,900,655],{}," visas inte rå; renderlager gör klickbara citeringar.",[53,903,905],{"id":904},"_71-fotnotrendering","7.1 Fotnotrendering",[10,907,908,909,912],{},"Normalisera taggar till Markdown-länkar som ",[153,910,911],{},"[1]([f5-123-165])",", rendera som numrerade fotnoter; deduplicera samma position för att undvika UI-klutter.",[53,914,916],{"id":915},"_72-klickinteraktion","7.2 Klickinteraktion",[250,918,919,928,934],{},[84,920,921,924,925,927],{},[24,922,923],{},"Första klick:"," Tolka ",[153,926,838],{}," → fileIndex + offsets → extrahera Spine-text → förhandsgranska (valfri TOC-titel);",[84,929,930,933],{},[24,931,932],{},"Samma fotnot igen:"," Stäng förhandsgranskning;",[84,935,936,939],{},[24,937,938],{},"Bekräfta hopp:"," Öppna läsvy, markera teckenintervall.",[10,941,942,943,946],{},"Från kopierad modelltagg till användarsynlig källa passerar kedjan ",[24,944,945],{},"aldrig genom ytterligare LLM-anrop","—deterministisk och reproducerbar.",[33,948],{},[36,950,952],{"id":951},"viii-kantfall-och-ärlig-degradering","VIII. Kantfall och ärlig degradering",[10,954,955,956,534],{},"Noll hallucination ≠ «alltid finns svar»—det betyder ",[24,957,958],{},"ingen evidens, ingen fabricering",[280,960,961,971],{},[283,962,963],{},[286,964,965,968],{},[289,966,967],{},"Scenario",[289,969,970],{},"Beteende",[302,972,973,981,993,1001,1009],{},[286,974,975,978],{},[307,976,977],{},"Segment-sammanfattningar inte klara",[307,979,980],{},"Extrahera full text och sammanfatta först",[286,982,983,986],{},[307,984,985],{},"Tool hittar inget",[307,987,988,989,992],{},"Returnera ",[153,990,991],{},"(No relevant segment excerpts found…)","; modellen ska säga att det inte finns i boken",[286,994,995,998],{},[307,996,997],{},"Ogiltiga tvådelade taggar från modell",[307,999,1000],{},"Frontend filtrerar; inga trasiga fotnoter",[286,1002,1003,1006],{},[307,1004,1005],{},"Vardagschatt",[307,1007,1008],{},"System Prompt tillåter allmän kunskap utanför boken",[286,1010,1011,1014],{},[307,1012,1013],{},"Exportera chatt",[307,1015,1016],{},"Fotnoter kan bli läsar-deep links för delning/arkiv",[10,1018,1019],{},[13,1020],{"alt":1021,"src":1022},"Chattexport","https://cdn.linghuxiong.com/resources/snapshots/ai-chat-export.png",[33,1024],{},[36,1026,1028],{"id":1027},"ix-designavvägning-varför-inte-vector-rag","IX. Designavvägning: Varför inte «vector RAG»?",[10,1030,1031,1032,1035],{},"Kollegor som bygger dokument-Q&A frågar ofta: om ni gör retrieval-augmented generation, varför inte ",[24,1033,1034],{},"Embedding + vector DB Top-K","?",[10,1037,1038,1039,1042,1043,1046,1047,1050,1051,1054],{},"Vi ",[24,1040,1041],{},"gör RAG","—hämta före generera. Skillnaden: «RAG» i community-språk innebär ofta ",[24,1044,1045],{},"vektorsimilaritet","; vårt steg 3 är ",[24,1048,1049],{},"segmentindex + Tool med källhämtning på begäran","—",[24,1052,1053],{},"ingen vektorlager medvetet",". Nedan arkitekturskäl, inte förnekande av vector RAG:s värde.",[53,1056,1058],{"id":1057},"omfattning-inte-ingen-retrieval-utan-ingen-vektorretrieval","Omfattning: inte «ingen retrieval», utan «ingen vektorretrieval»",[81,1060,1061,1070],{},[84,1062,1063,1066,1067,205],{},[24,1064,1065],{},"Bred RAG:"," hämta → generera → ",[24,1068,1069],{},"vi gör detta",[84,1071,1072,1075,1076,231],{},[24,1073,1074],{},"Vector RAG:"," recall via embedding-similaritet → ",[24,1077,1078],{},"inte i denna version",[10,1080,1081,1082,1085,1086,1089],{},"Förbehandling bygger ",[24,1083,1084],{},"segment-sammanfattningsindex","; modellen väljer segment via Tools och får ",[24,1087,1088],{},"källtext",". Retrieval finns utan separat embedding-modell och vektorindex-underhåll.",[33,1091],{},[53,1093,1095],{"id":1094},"skäl-1-anpassade-llm-providershåll-integrationsytan-liten","Skäl 1: Anpassade LLM-providers—håll integrationsytan liten",[10,1097,1098,1099,1102,1103,1106],{},"Användare kan koppla ",[24,1100,1101],{},"egna API-nycklar",", anpassade base URLs eller ",[24,1104,1105],{},"lokal Ollama","—chattmodell är deras val; kostnad och datapath under kontroll.",[10,1108,1109],{},"Typisk vector RAG vidgar integration:",[81,1111,1112,1123,1126],{},[84,1113,1114,1115,1118,1119,1122],{},"Utöver ",[24,1116,1117],{},"chattmodell"," behövs oftast ",[24,1120,1121],{},"embedding-modell"," (annat namn, ibland annan endpoint);",[84,1124,1125],{},"Lokal Ollama behöver separat embedding-modell plus dimension/API-kompatibilitet;",[84,1127,1128,1129,1132],{},"Fler fel lägen: chatt OK men ",[24,1130,1131],{},"tom retrieval","—embedding, index eller dimensionsmismatch; svårare att felsöka än en provider end-to-end.",[10,1134,1135,1136,1139,1140,1143],{},"Här delar ",[24,1137,1138],{},"segmentval och svar samma provider-konfiguration","—inget «chatt på A, index på B». För ",[24,1141,1142],{},"utbytbar LLM","-appar slår det ofta några recall-poäng.",[10,1145,1146],{},[13,1147],{"alt":1148,"src":1149},"Anpassade AI-providers","https://cdn.linghuxiong.com/resources/snapshots/ai-customize-providers.png",[33,1151],{},[53,1153,1155],{"id":1154},"skäl-2-embeddings-binder-till-indexproviderbyte-är-dyrt","Skäl 2: Embeddings binder till index—providerbyte är dyrt",[10,1157,1158,1159,1162,1163,1166,1167,1170],{},"I vector RAG är ",[24,1160,1161],{},"vektorer inte universellt mellanformat","—de är koordinater under en embedding-modell. Index med A, fråga med B: similaritet är vanligt ",[24,1164,1165],{},"inte jämförbar","—ofta ",[24,1168,1169],{},"full om-embedding",", och dimensioner (768 / 1024 / 1536 …) låser lagringsschema.",[10,1172,1173,1174,1177,1178,1181],{},"Steg 3 persisterar ",[24,1175,1176],{},"strukturerade sammanfattningar + tecken-spans",", inte vektorer; byte av chattmodell ",[24,1179,1180],{},"bygger inte om index","; evidenskedja (källpositioner) oförändrad—i linje med «prova olika LLM när som helst».",[33,1183],{},[53,1185,1187],{"id":1186},"skäl-3-strukturerad-routing-räcker-ofta-för-toc-tunga-långa-dokument","Skäl 3: Strukturerad routing räcker ofta för TOC-tunga långa dokument",[10,1189,1190,1191,1194,1195,1198,1199,1202,1203,1208],{},"E-böcker och PDF har vanligtvis ",[24,1192,1193],{},"kapitelstruktur","; förbehandling ger ",[24,1196,1197],{},"segmenttitlar + sammanfattningar",". För «vad säger kapitel X» eller «hur definierar boken Y» fungerar val från katalog och ",[24,1200,1201],{},"källhämtning"," bra i praktiken; Tool returnerar ",[24,1204,1205,1206],{},"källa med ",[153,1207,838],{},", noll hallucination förankras i tecken-spans.",[10,1210,1211,1212,1215,1216,1219],{},"Vektorer hjälper vid diffus semantik, flerspråk, långspann literal mismatch; för läsare med ",[24,1213,1214],{},"TOC + förbehandling + stark spårbarhet"," ger investering i ",[24,1217,1218],{},"Tool + källretur + citeringsregler"," ofta bättre ROI.",[33,1221],{},[53,1223,1225],{"id":1224},"framtid-hybrid-recall-inte-omskrivning","Framtid: Hybrid recall, inte omskrivning",[10,1227,1228,1229,1232,1233,1236,1237,1240,1241,1244],{},"Vi kan lägga till ",[24,1230,1231],{},"grov vektorrecall"," (embedding bara för Top-N kandidatkapitel), fortfarande slut i ",[24,1234,1235],{},"välj segment → källa → klickbart spår","—noll-hallucination-regler oförändrade. Om tillagt: embedding ",[24,1238,1239],{},"valfritt",", tydliga ",[24,1242,1243],{},"om-indexera","-meddelanden vid modellbyte—undvik tyst fel retrieval.",[10,1246,1247,1248],{},"Tills dess: ",[24,1249,1250],{},"vilken OpenAI-kompatibel chatt-API som helst fungerar; byte av chattmodell bygger inte om lokalt index.",[33,1252],{},[36,1254,1256],{"id":1255},"x-sammanfattning","X. Sammanfattning",[280,1258,1259,1272],{},[283,1260,1261],{},[286,1262,1263,1266,1269],{},[289,1264,1265],{},"Steg",[289,1267,1268],{},"Metod",[289,1270,1271],{},"Roll",[302,1273,1274,1285,1298,1312,1323,1334],{},[286,1275,1276,1279,1282],{},[307,1277,1278],{},"Förbehandla",[307,1280,1281],{},"Dela efter TOC/längd + segment-sammanfattningscache",[307,1283,1284],{},"Långa böcker sökbara och lokaliserbara",[286,1286,1287,1290,1295],{},[307,1288,1289],{},"Positionstaggar",[307,1291,1292,1294],{},[153,1293,155],{}," i källa",[307,1296,1297],{},"Maskintolkbar härkomst",[286,1299,1300,1303,1309],{},[307,1301,1302],{},"Tool retrieval",[307,1304,1305,1306],{},"Segment per fråga / helbokssammanfattningar, returnera ",[24,1307,1308],{},"källa",[307,1310,1311],{},"Tvinga evidens före svar",[286,1313,1314,1317,1320],{},[307,1315,1316],{},"System Prompt",[307,1318,1319],{},"Bok först, inga falska taggar, säg när saknas",[307,1321,1322],{},"Begränsa generering",[286,1324,1325,1328,1331],{},[307,1326,1327],{},"Frontend",[307,1329,1330],{},"Fotnot → förhandsgranska → hoppa och markera",[307,1332,1333],{},"Användare verifierar evidens",[286,1335,1336,1339,1342],{},[307,1337,1338],{},"Ingen vektorretrieval",[307,1340,1341],{},"En provider; byt chattmodell utan om-index",[307,1343,1344],{},"Lägre integrations- och migrationskostnad",[10,1346,1347,1348,1351],{},"«Noll hallucination» betyder inte att modellen aldrig felar—det betyder ",[24,1349,1350],{},"teknik som låser utdata till evidenskedja",": ingen retrieval → utge sig inte för bokinnehåll; med retrieval → ge verifierbara källpositioner.",[10,1353,1354,1355,1358,1359,1362],{},"Om du bygger AI-läsning eller dokument-Q&A hoppas vi att vägen ",[24,1356,1357],{},"hel dump → nyckelmeningar → Tool-first på begäran",", plus ",[24,1360,1361],{},"inline positionstaggar + källretur",", är en användbar referensimplementation.",[18,1364,1365],{},[10,1366,1367,1368,1373,1374,231],{},"Detta är lärdomar från att bygga ",[242,1369,1372],{"href":1370,"rel":1371},"https://reader.linghuxiong.com",[246],"Foxycape"," AI-läsare—endast som referens. Prova läsaren på ",[242,1375,1377],{"href":1376},"/sv-se#download","nedladdningssidan",{"title":617,"searchDepth":1379,"depth":1379,"links":1380},2,[1381,1387,1388,1389,1390,1394,1401,1405,1406,1413],{"id":38,"depth":1379,"text":39,"children":1382},[1383,1385,1386],{"id":55,"depth":1384,"text":56},3,{"id":137,"depth":1384,"text":138},{"id":234,"depth":1384,"text":235},{"id":424,"depth":1379,"text":425},{"id":485,"depth":1379,"text":486},{"id":500,"depth":1379,"text":501},{"id":631,"depth":1379,"text":632,"children":1391},[1392,1393],{"id":659,"depth":1384,"text":660},{"id":685,"depth":1384,"text":686},{"id":761,"depth":1379,"text":762,"children":1395},[1396,1398,1400],{"id":780,"depth":1384,"text":1397},"6.1 get_related_segment_summaries — Riktad segmentuppslagning",{"id":842,"depth":1384,"text":1399},"6.2 get_full_book_segment_summaries — Helboksöversikt",{"id":863,"depth":1384,"text":864},{"id":894,"depth":1379,"text":895,"children":1402},[1403,1404],{"id":904,"depth":1384,"text":905},{"id":915,"depth":1384,"text":916},{"id":951,"depth":1379,"text":952},{"id":1027,"depth":1379,"text":1028,"children":1407},[1408,1409,1410,1411,1412],{"id":1057,"depth":1384,"text":1058},{"id":1094,"depth":1384,"text":1095},{"id":1154,"depth":1384,"text":1155},{"id":1186,"depth":1384,"text":1187},{"id":1224,"depth":1384,"text":1225},{"id":1255,"depth":1379,"text":1256},null,"2026-06-03","Tekniska anteckningar om noll-hallucination Q&A i en AI-läsare—svar grundade i den öppna boken, med citeringar i ett klick till exakt stycke.",false,"md",{},true,"/sv-se/blog/zero-hallucination-qa",{"title":5,"description":1416},"sv-se/blog/zero-hallucination-qa",[1425,1426,1427],"läsare","AI","teknik","zero-hallucination-qa","QWThAlGalusgtBlO9SYseN04SRTs_uV4utvUD99iW2Y",[1431],{"id":4,"title":5,"body":1432,"config":1414,"date":1415,"description":1416,"draft":1417,"extension":1418,"image":1414,"meta":2338,"navigation":1420,"path":1421,"seo":2339,"stem":1423,"tags":2340,"toolbar":1414,"translationKey":1428,"updated":1415,"__hash__":1429},{"type":7,"value":1433,"toc":2306},[1434,1438,1446,1448,1450,1454,1456,1458,1468,1472,1480,1484,1506,1508,1510,1520,1524,1528,1538,1542,1566,1570,1572,1579,1595,1599,1679,1689,1693,1695,1697,1701,1711,1715,1729,1733,1735,1737,1739,1743,1745,1747,1759,1765,1813,1815,1821,1826,1830,1832,1834,1840,1845,1849,1851,1855,1860,1864,1866,1872,1900,1906,1910,1912,1914,1922,1926,1930,1932,1954,1960,1964,1968,1972,1974,1980,1985,1991,1993,1995,1999,2001,2005,2007,2023,2027,2029,2031,2035,2079,2083,2085,2087,2091,2101,2103,2117,2123,2125,2127,2133,2135,2149,2155,2159,2161,2163,2171,2177,2179,2181,2193,2199,2201,2203,2213,2217,2219,2221,2287,2291,2297],[10,1435,1436],{},[13,1437],{"alt":15,"src":16},[18,1439,1440],{},[10,1441,22,1442,27,1444,31],{},[24,1443,26],{},[24,1445,30],{},[33,1447],{},[36,1449,39],{"id":38},[10,1451,42,1452,46],{},[24,1453,45],{},[48,1455],{":config":50,"code":51},[53,1457,56],{"id":55},[10,1459,1460,62,1462,66,1464,70,1466,74],{},[24,1461,61],{},[24,1463,65],{},[24,1465,69],{},[24,1467,73],{},[10,1469,1470],{},[24,1471,79],{},[81,1473,1474,1476,1478],{},[84,1475,86],{},[84,1477,89],{},[84,1479,92],{},[10,1481,1482],{},[24,1483,97],{},[81,1485,1486,1490,1494,1500],{},[84,1487,1488,105],{},[24,1489,104],{},[84,1491,1492,111],{},[24,1493,110],{},[84,1495,1496,117,1498,121],{},[24,1497,116],{},[24,1499,120],{},[84,1501,1502,127,1504,131],{},[24,1503,126],{},[24,1505,130],{},[10,1507,134],{},[53,1509,138],{"id":137},[10,1511,1512,143,1514,147,1516,151,1518,156],{},[24,1513,61],{},[24,1515,146],{},[24,1517,150],{},[153,1519,155],{},[10,1521,159,1522,163],{},[24,1523,162],{},[10,1525,1526],{},[24,1527,79],{},[81,1529,1530,1534,1536],{},[84,1531,172,1532,176],{},[24,1533,175],{},[84,1535,179],{},[84,1537,182],{},[10,1539,1540],{},[24,1541,187],{},[81,1543,1544,1548,1554,1560],{},[84,1545,1546,195],{},[24,1547,194],{},[84,1549,1550,201,1552,205],{},[24,1551,200],{},[24,1553,204],{},[84,1555,1556,211,1558,205],{},[24,1557,210],{},[24,1559,214],{},[84,1561,1562,220,1564,224],{},[24,1563,219],{},[24,1565,223],{},[10,1567,227,1568,231],{},[24,1569,230],{},[53,1571,235],{"id":234},[10,1573,1574,240,1576,248],{},[24,1575,61],{},[242,1577,247],{"href":244,"rel":1578},[246],[250,1580,1581,1585,1591],{},[84,1582,1583,257],{},[24,1584,256],{},[84,1586,1587,263,1589,267],{},[24,1588,262],{},[24,1590,266],{},[84,1592,1593,273],{},[24,1594,272],{},[10,1596,1597],{},[24,1598,278],{},[280,1600,1601,1613],{},[283,1602,1603],{},[286,1604,1605,1607,1609,1611],{},[289,1606,291],{},[289,1608,294],{},[289,1610,297],{},[289,1612,300],{},[302,1614,1615,1627,1637,1647,1657,1669],{},[286,1616,1617,1619,1621,1623],{},[307,1618,309],{},[307,1620,312],{},[307,1622,315],{},[307,1624,318,1625,322],{},[24,1626,321],{},[286,1628,1629,1631,1633,1635],{},[307,1630,327],{},[307,1632,330],{},[307,1634,333],{},[307,1636,336],{},[286,1638,1639,1641,1643,1645],{},[307,1640,341],{},[307,1642,344],{},[307,1644,347],{},[307,1646,350],{},[286,1648,1649,1651,1653,1655],{},[307,1650,355],{},[307,1652,358],{},[307,1654,361],{},[307,1656,364],{},[286,1658,1659,1661,1663,1665],{},[307,1660,369],{},[307,1662,372],{},[307,1664,375],{},[307,1666,378,1667],{},[24,1668,381],{},[286,1670,1671,1673,1675,1677],{},[307,1672,386],{},[307,1674,389],{},[307,1676,392],{},[307,1678,395],{},[10,1680,1681,401,1683,405,1685,409,1687,413],{},[24,1682,400],{},[24,1684,404],{},[24,1686,408],{},[24,1688,412],{},[10,1690,416,1691,231],{},[24,1692,419],{},[33,1694],{},[36,1696,425],{"id":424},[10,1698,428,1699,432],{},[24,1700,431],{},[81,1702,1703,1707,1709],{},[84,1704,437,1705,441],{},[24,1706,440],{},[84,1708,444],{},[84,1710,447],{},[10,1712,450,1713,454],{},[24,1714,453],{},[250,1716,1717,1721,1725],{},[84,1718,1719,462],{},[24,1720,461],{},[84,1722,1723,468],{},[24,1724,467],{},[84,1726,1727,474],{},[24,1728,473],{},[10,1730,477,1731,480],{},[24,1732,419],{},[33,1734],{},[36,1736,486],{"id":485},[48,1738],{":config":50,"code":489},[10,1740,492,1741],{},[24,1742,495],{},[33,1744],{},[36,1746,501],{"id":500},[10,1748,504,1749,508,1751,512,1753,516,1755,520,1757,524],{},[24,1750,507],{},[24,1752,511],{},[24,1754,515],{},[24,1756,519],{},[153,1758,523],{},[10,1760,527,1761,530,1763,534],{},[153,1762,523],{},[24,1764,533],{},[280,1766,1767,1775],{},[283,1768,1769],{},[286,1770,1771,1773],{},[289,1772,543],{},[289,1774,546],{},[302,1776,1777,1787,1797,1805],{},[286,1778,1779,1785],{},[307,1780,1781,556,1783],{},[153,1782,555],{},[153,1784,559],{},[307,1786,562],{},[286,1788,1789,1795],{},[307,1790,1791,556,1793],{},[153,1792,569],{},[153,1794,572],{},[307,1796,575],{},[286,1798,1799,1803],{},[307,1800,1801],{},[153,1802,582],{},[307,1804,585],{},[286,1806,1807,1811],{},[307,1808,1809],{},[153,1810,592],{},[307,1812,595],{},[10,1814,598],{},[10,1816,601,1817,605,1819,609],{},[24,1818,604],{},[153,1820,608],{},[611,1822,1824],{"className":1823,"code":615,"language":616,"meta":617},[614],[153,1825,615],{"__ignoreMap":617},[10,1827,622,1828,626],{},[24,1829,625],{},[33,1831],{},[36,1833,632],{"id":631},[10,1835,635,1836,639,1838,643],{},[24,1837,638],{},[24,1839,642],{},[611,1841,1843],{"className":1842,"code":647,"language":616},[614],[153,1844,647],{"__ignoreMap":617},[10,1846,652,1847,656],{},[153,1848,655],{},[53,1850,660],{"id":659},[10,1852,663,1853,667],{},[153,1854,666],{},[611,1856,1858],{"className":1857,"code":672,"language":673,"meta":617},[671],[153,1859,672],{"__ignoreMap":617},[10,1861,678,1862,682],{},[24,1863,681],{},[53,1865,686],{"id":685},[10,1867,689,1868,696],{},[24,1869,1870],{},[693,1871,695],{},[250,1873,1874,1880,1886,1890,1896],{},[84,1875,1876,704,1878,708],{},[24,1877,703],{},[153,1879,707],{},[84,1881,1882,714,1884,718],{},[24,1883,713],{},[24,1885,717],{},[84,1887,1888,724],{},[24,1889,723],{},[84,1891,1892,730,1894,205],{},[24,1893,729],{},[24,1895,733],{},[84,1897,1898,739],{},[24,1899,738],{},[10,1901,742,1902,746,1904,750],{},[24,1903,745],{},[153,1905,749],{},[10,1907,1908],{},[13,1909],{"alt":755,"src":756},[33,1911],{},[36,1913,762],{"id":761},[10,1915,765,1916,769,1918,773,1920,777],{},[153,1917,768],{},[153,1919,772],{},[24,1921,776],{},[53,1923,781,1924,785],{"id":780},[153,1925,784],{},[10,1927,788,1928,231],{},[24,1929,791],{},[10,1931,794],{},[250,1933,1934,1938,1942,1944,1950],{},[84,1935,799,1936,803],{},[24,1937,802],{},[84,1939,806,1940,205],{},[153,1941,809],{},[84,1943,812],{},[84,1945,815,1946,819,1948,205],{},[153,1947,818],{},[153,1949,822],{},[84,1951,825,1952,829],{},[24,1953,828],{},[10,1955,1956,835,1958,839],{},[24,1957,834],{},[153,1959,838],{},[53,1961,843,1962,847],{"id":842},[153,1963,846],{},[10,1965,850,1966,231],{},[24,1967,853],{},[10,1969,856,1970,860],{},[153,1971,859],{},[53,1973,864],{"id":863},[10,1975,867,1976,534],{},[24,1977,1978],{},[693,1979,872],{},[611,1981,1983],{"className":1982,"code":876,"language":616},[614],[153,1984,876],{"__ignoreMap":617},[10,1986,881,1987,885,1989,889],{},[153,1988,884],{},[153,1990,888],{},[33,1992],{},[36,1994,895],{"id":894},[10,1996,898,1997,901],{},[153,1998,655],{},[53,2000,905],{"id":904},[10,2002,908,2003,912],{},[153,2004,911],{},[53,2006,916],{"id":915},[250,2008,2009,2015,2019],{},[84,2010,2011,924,2013,927],{},[24,2012,923],{},[153,2014,838],{},[84,2016,2017,933],{},[24,2018,932],{},[84,2020,2021,939],{},[24,2022,938],{},[10,2024,942,2025,946],{},[24,2026,945],{},[33,2028],{},[36,2030,952],{"id":951},[10,2032,955,2033,534],{},[24,2034,958],{},[280,2036,2037,2045],{},[283,2038,2039],{},[286,2040,2041,2043],{},[289,2042,967],{},[289,2044,970],{},[302,2046,2047,2053,2061,2067,2073],{},[286,2048,2049,2051],{},[307,2050,977],{},[307,2052,980],{},[286,2054,2055,2057],{},[307,2056,985],{},[307,2058,988,2059,992],{},[153,2060,991],{},[286,2062,2063,2065],{},[307,2064,997],{},[307,2066,1000],{},[286,2068,2069,2071],{},[307,2070,1005],{},[307,2072,1008],{},[286,2074,2075,2077],{},[307,2076,1013],{},[307,2078,1016],{},[10,2080,2081],{},[13,2082],{"alt":1021,"src":1022},[33,2084],{},[36,2086,1028],{"id":1027},[10,2088,1031,2089,1035],{},[24,2090,1034],{},[10,2092,1038,2093,1042,2095,1046,2097,1050,2099,1054],{},[24,2094,1041],{},[24,2096,1045],{},[24,2098,1049],{},[24,2100,1053],{},[53,2102,1058],{"id":1057},[81,2104,2105,2111],{},[84,2106,2107,1066,2109,205],{},[24,2108,1065],{},[24,2110,1069],{},[84,2112,2113,1075,2115,231],{},[24,2114,1074],{},[24,2116,1078],{},[10,2118,1081,2119,1085,2121,1089],{},[24,2120,1084],{},[24,2122,1088],{},[33,2124],{},[53,2126,1095],{"id":1094},[10,2128,1098,2129,1102,2131,1106],{},[24,2130,1101],{},[24,2132,1105],{},[10,2134,1109],{},[81,2136,2137,2143,2145],{},[84,2138,1114,2139,1118,2141,1122],{},[24,2140,1117],{},[24,2142,1121],{},[84,2144,1125],{},[84,2146,1128,2147,1132],{},[24,2148,1131],{},[10,2150,1135,2151,1139,2153,1143],{},[24,2152,1138],{},[24,2154,1142],{},[10,2156,2157],{},[13,2158],{"alt":1148,"src":1149},[33,2160],{},[53,2162,1155],{"id":1154},[10,2164,1158,2165,1162,2167,1166,2169,1170],{},[24,2166,1161],{},[24,2168,1165],{},[24,2170,1169],{},[10,2172,1173,2173,1177,2175,1181],{},[24,2174,1176],{},[24,2176,1180],{},[33,2178],{},[53,2180,1187],{"id":1186},[10,2182,1190,2183,1194,2185,1198,2187,1202,2189,1208],{},[24,2184,1193],{},[24,2186,1197],{},[24,2188,1201],{},[24,2190,1205,2191],{},[153,2192,838],{},[10,2194,1211,2195,1215,2197,1219],{},[24,2196,1214],{},[24,2198,1218],{},[33,2200],{},[53,2202,1225],{"id":1224},[10,2204,1228,2205,1232,2207,1236,2209,1240,2211,1244],{},[24,2206,1231],{},[24,2208,1235],{},[24,2210,1239],{},[24,2212,1243],{},[10,2214,1247,2215],{},[24,2216,1250],{},[33,2218],{},[36,2220,1256],{"id":1255},[280,2222,2223,2233],{},[283,2224,2225],{},[286,2226,2227,2229,2231],{},[289,2228,1265],{},[289,2230,1268],{},[289,2232,1271],{},[302,2234,2235,2243,2253,2263,2271,2279],{},[286,2236,2237,2239,2241],{},[307,2238,1278],{},[307,2240,1281],{},[307,2242,1284],{},[286,2244,2245,2247,2251],{},[307,2246,1289],{},[307,2248,2249,1294],{},[153,2250,155],{},[307,2252,1297],{},[286,2254,2255,2257,2261],{},[307,2256,1302],{},[307,2258,1305,2259],{},[24,2260,1308],{},[307,2262,1311],{},[286,2264,2265,2267,2269],{},[307,2266,1316],{},[307,2268,1319],{},[307,2270,1322],{},[286,2272,2273,2275,2277],{},[307,2274,1327],{},[307,2276,1330],{},[307,2278,1333],{},[286,2280,2281,2283,2285],{},[307,2282,1338],{},[307,2284,1341],{},[307,2286,1344],{},[10,2288,1347,2289,1351],{},[24,2290,1350],{},[10,2292,1354,2293,1358,2295,1362],{},[24,2294,1357],{},[24,2296,1361],{},[18,2298,2299],{},[10,2300,1367,2301,1373,2304,231],{},[242,2302,1372],{"href":1370,"rel":2303},[246],[242,2305,1377],{"href":1376},{"title":617,"searchDepth":1379,"depth":1379,"links":2307},[2308,2313,2314,2315,2316,2320,2325,2329,2330,2337],{"id":38,"depth":1379,"text":39,"children":2309},[2310,2311,2312],{"id":55,"depth":1384,"text":56},{"id":137,"depth":1384,"text":138},{"id":234,"depth":1384,"text":235},{"id":424,"depth":1379,"text":425},{"id":485,"depth":1379,"text":486},{"id":500,"depth":1379,"text":501},{"id":631,"depth":1379,"text":632,"children":2317},[2318,2319],{"id":659,"depth":1384,"text":660},{"id":685,"depth":1384,"text":686},{"id":761,"depth":1379,"text":762,"children":2321},[2322,2323,2324],{"id":780,"depth":1384,"text":1397},{"id":842,"depth":1384,"text":1399},{"id":863,"depth":1384,"text":864},{"id":894,"depth":1379,"text":895,"children":2326},[2327,2328],{"id":904,"depth":1384,"text":905},{"id":915,"depth":1384,"text":916},{"id":951,"depth":1379,"text":952},{"id":1027,"depth":1379,"text":1028,"children":2331},[2332,2333,2334,2335,2336],{"id":1057,"depth":1384,"text":1058},{"id":1094,"depth":1384,"text":1095},{"id":1154,"depth":1384,"text":1155},{"id":1186,"depth":1384,"text":1187},{"id":1224,"depth":1384,"text":1225},{"id":1255,"depth":1379,"text":1256},{},{"title":5,"description":1416},[1425,1426,1427],1780489852867]