[{"data":1,"prerenderedAt":1843},["ShallowReactive",2],{"blog-article-/sv-se/blog/foxycape-pdf-obsidian":3,"blog-list-sv-se":270},{"id":4,"title":5,"body":6,"config":254,"date":255,"description":256,"draft":257,"extension":258,"image":254,"meta":259,"navigation":260,"path":261,"seo":262,"stem":263,"tags":264,"toolbar":254,"translationKey":268,"updated":255,"__hash__":269},"blog/sv-se/blog/foxycape-pdf-obsidian.md","Foxycape PDF — En PDF-läsare för Obsidian som håller dig kopplad till anteckningarna",{"type":7,"value":8,"toc":237},"minimark",[9,17,23,26,31,34,53,56,60,65,68,74,78,81,86,90,93,121,126,130,133,138,143,147,159,164,168,171,176,180,183,188,192,199,204,208,211,216,221,225,232],[10,11,12],"p",{},[13,14],"img",{"alt":15,"src":16},"Foxycape PDF","https://cdn.linghuxiong.com/resources/obsidian/introduce/logo-64x64.png",[18,19,20],"blockquote",{},[10,21,22],{},"En PDF-läsare för Obsidian som håller dig kopplad till anteckningarna — markeringar, citat och djuplänkar som tar dig tillbaka till källan.",[24,25],"hr",{},[27,28,30],"h2",{"id":29},"varför","Varför",[10,32,33],{},"Att läsa PDF-filer i Obsidian bryter ofta anteckningsflödet:",[35,36,37,41,44,47,50],"ul",{},[38,39,40],"li",{},"Markeringar stannar i PDF:en; vault-anteckningarna ligger någon annanstans.",[38,42,43],{},"Att hämta en figur betyder oftast en suddig skärmdump.",[38,45,46],{},"Inclistrade citat och bilder pekar sällan tillbaka till exakt sida eller område.",[38,48,49],{},"Ljusa PDF-sidor känns hårda i ett mörkt vault-tema.",[38,51,52],{},"Byte av läsare kan bryta sid-/urvalslänkar du redan använder.",[10,54,55],{},"Foxycape PDF fyller dessa luckor utan att du behöver lämna Obsidian.",[27,57,59],{"id":58},"funktioner","Funktioner",[61,62,64],"h3",{"id":63},"markering-anteckningssynk","Markering → anteckningssynk",[10,66,67],{},"I stället för att lämna markeringar strandade i PDF:en kan varje ny markering skapa eller uppdatera en Markdown-anteckning med samma namn, lägga till utdraget med en bakåtlänk och valfritt öppna anteckningen i en delad vy. Stäng av när som helst i inställningarna.",[10,69,70],{},[13,71],{"alt":72,"src":73},"","https://cdn.linghuxiong.com/resources/obsidian/introduce/highlight-notes.gif",[61,75,77],{"id":76},"extrahera-inbäddade-bilder","Extrahera inbäddade bilder",[10,79,80],{},"Skippa suddiga skärmdumpar. Håll muspekaren över en inbäddad bild (eller använd pekkontrollen på mobil) för att förhandsvisa, kopiera eller ladda ner originalet.",[10,82,83],{},[13,84],{"alt":72,"src":85},"https://cdn.linghuxiong.com/resources/obsidian/introduce/embed-images.gif",[61,87,89],{"id":88},"citera-text-och-bilder-hoppa-sedan-tillbaka","Citera text och bilder, hoppa sedan tillbaka",[10,91,92],{},"Citat förblir knutna till källan, så du kan hoppa tillbaka från anteckningen senare:",[35,94,95,110,113],{},[38,96,97,98,102,103,102,106,109],{},"Kopiera ett textcitat som Markdown med en djuplänk (",[99,100,101],"code",{},"#page="," / ",[99,104,105],{},"#selection=",[99,107,108],{},"#markId=",").",[38,111,112],{},"Kopiera ett bildcitat; klistra in i Markdown för att spara en PNG bredvid PDF:en och infoga en klickbar länk.",[38,114,115,116,120],{},"Högerklicka på bilden i anteckningen → ",[117,118,119],"strong",{},"Open in Foxycape"," för att återvända till sidan och markera ursprungligt område.",[10,122,123],{},[13,124],{"alt":72,"src":125},"https://cdn.linghuxiong.com/resources/obsidian/introduce/cite-and-back.gif",[61,127,129],{"id":128},"temamedvetna-pdf-sidor","Temamedvetna PDF-sidor",[10,131,132],{},"Ljusa PDF-sidor kan krocka med ett mörkt vault. Valfritt mappa om gråskalevektorfärger till temats förgrund/bakgrund (BETA) — för alla teman, endast mörkt eller endast ljust. Färgillustrationer förblir oförändrade.",[10,134,135],{},[13,136],{"alt":72,"src":137},"https://cdn.linghuxiong.com/resources/obsidian/introduce/theme-adapt.gif",[10,139,140],{},[13,141],{"alt":72,"src":142},"https://cdn.linghuxiong.com/resources/obsidian/introduce/theme-adapt-dark.gif",[61,144,146],{"id":145},"kompatibel-med-obsidians-inbyggda-pdf-länkar","Kompatibel med Obsidians inbyggda PDF-länkar",[10,148,149,150,152,153,155,156,158],{},"Byte av läsare ska inte bryta länkar du redan har. Foxycape förstår Obsidian-stil ",[99,151,101],{}," och ",[99,154,105],{},", kan bli standard-PDF-visare, återanvänder en öppen flik när det går och lägger till ",[99,157,108],{}," för precisa markerings-hopp.",[10,160,161],{},[13,162],{"alt":72,"src":163},"https://cdn.linghuxiong.com/resources/obsidian/introduce/compat-links.gif",[61,165,167],{"id":166},"markeringar-och-markeringslista","Markeringar och markeringslista",[10,169,170],{},"Överstrykningspenna, vågig understrykning och rak understrykning med egna färger. Bläddra bland markeringar i en lista — filtrera, sortera, hoppa eller ta bort.",[10,172,173],{},[13,174],{"alt":72,"src":175},"https://cdn.linghuxiong.com/resources/obsidian/introduce/annotations.gif",[61,177,179],{"id":178},"smart-kopiering-ta-bort-mjuka-radbrytningar","Smart kopiering — ta bort mjuka radbrytningar",[10,181,182],{},"PDF-rader lägger ofta in hårda brytningar mitt i meningar. Markera text och kopiera som vanligt: Foxycape tar bort dessa mjuka brytningar så att inklistringen blir löpande prosa, medan riktiga styckebrytningar behålls.",[10,184,185],{},[13,186],{"alt":72,"src":187},"https://cdn.linghuxiong.com/resources/obsidian/introduce/smart-copy.gif",[61,189,191],{"id":190},"navigering-och-sökning","Navigering och sökning",[10,193,194,195,198],{},"Disposition (TOC), sidminiatyrer, sidväljare och dokumentsökning (",[99,196,197],{},"Mod+F",") med skiftläge / diakriter / hela ord. Sökningen använder PDF:ens textlager (ingen OCR).",[10,200,201],{},[13,202],{"alt":72,"src":203},"https://cdn.linghuxiong.com/resources/obsidian/introduce/navigate-search.gif",[61,205,207],{"id":206},"layout-för-läsning","Layout för läsning",[10,209,210],{},"Zoom (auto / sidbredd / procent), vertikal eller horisontell rullning, enkel / uppslag / boklayout, sidrotation, lösenordsskyddade PDF:er. Fungerar på dator och mobil.",[10,212,213],{},[13,214],{"alt":72,"src":215},"https://cdn.linghuxiong.com/resources/obsidian/introduce/layout.gif",[10,217,218],{},[13,219],{"alt":72,"src":220},"https://cdn.linghuxiong.com/resources/obsidian/introduce/layout-1.gif",[61,222,224],{"id":223},"ange-som-standard-pdf-läsare","Ange som standard-PDF-läsare",[10,226,227,228,231],{},"För den smidigaste upplevelsen—djuplänkar, markeringar och temamedvetna sidor—slå på ",[117,229,230],{},"Use as default PDF viewer"," i Foxycape-inställningarna så att Obsidian öppnar PDF:er med Foxycape som standard.",[10,233,234],{},[13,235],{"alt":72,"src":236},"https://cdn.linghuxiong.com/resources/obsidian/introduce/set-default.gif",{"title":72,"searchDepth":238,"depth":238,"links":239},2,[240,241],{"id":29,"depth":238,"text":30},{"id":58,"depth":238,"text":59,"children":242},[243,245,246,247,248,249,250,251,252,253],{"id":63,"depth":244,"text":64},3,{"id":76,"depth":244,"text":77},{"id":88,"depth":244,"text":89},{"id":128,"depth":244,"text":129},{"id":145,"depth":244,"text":146},{"id":166,"depth":244,"text":167},{"id":178,"depth":244,"text":179},{"id":190,"depth":244,"text":191},{"id":206,"depth":244,"text":207},{"id":223,"depth":244,"text":224},null,"2026-08-11","Markeringar, citat och djuplänkar som tar dig tillbaka till källan—Foxycape PDF håller läsning och antecknande i Obsidian i samma flöde.",false,"md",{},true,"/sv-se/blog/foxycape-pdf-obsidian",{"title":5,"description":256},"sv-se/blog/foxycape-pdf-obsidian",[265,266,267],"Obsidian","PDF","Foxycape","foxycape-pdf-obsidian","sD6D-txkEK7WcXXRJOzF-Fvl4iKg2NM1lKAvWwl9uWg",[271,436],{"id":4,"title":5,"body":272,"config":254,"date":255,"description":256,"draft":257,"extension":258,"image":254,"meta":433,"navigation":260,"path":261,"seo":434,"stem":263,"tags":435,"toolbar":254,"translationKey":268,"updated":255,"__hash__":269},{"type":7,"value":273,"toc":418},[274,278,282,284,286,288,300,302,304,306,308,312,314,316,320,322,324,340,344,346,348,352,356,358,366,370,372,374,378,380,382,386,388,392,396,398,400,404,408,410,414],[10,275,276],{},[13,277],{"alt":15,"src":16},[18,279,280],{},[10,281,22],{},[24,283],{},[27,285,30],{"id":29},[10,287,33],{},[35,289,290,292,294,296,298],{},[38,291,40],{},[38,293,43],{},[38,295,46],{},[38,297,49],{},[38,299,52],{},[10,301,55],{},[27,303,59],{"id":58},[61,305,64],{"id":63},[10,307,67],{},[10,309,310],{},[13,311],{"alt":72,"src":73},[61,313,77],{"id":76},[10,315,80],{},[10,317,318],{},[13,319],{"alt":72,"src":85},[61,321,89],{"id":88},[10,323,92],{},[35,325,326,334,336],{},[38,327,97,328,102,330,102,332,109],{},[99,329,101],{},[99,331,105],{},[99,333,108],{},[38,335,112],{},[38,337,115,338,120],{},[117,339,119],{},[10,341,342],{},[13,343],{"alt":72,"src":125},[61,345,129],{"id":128},[10,347,132],{},[10,349,350],{},[13,351],{"alt":72,"src":137},[10,353,354],{},[13,355],{"alt":72,"src":142},[61,357,146],{"id":145},[10,359,149,360,152,362,155,364,158],{},[99,361,101],{},[99,363,105],{},[99,365,108],{},[10,367,368],{},[13,369],{"alt":72,"src":163},[61,371,167],{"id":166},[10,373,170],{},[10,375,376],{},[13,377],{"alt":72,"src":175},[61,379,179],{"id":178},[10,381,182],{},[10,383,384],{},[13,385],{"alt":72,"src":187},[61,387,191],{"id":190},[10,389,194,390,198],{},[99,391,197],{},[10,393,394],{},[13,395],{"alt":72,"src":203},[61,397,207],{"id":206},[10,399,210],{},[10,401,402],{},[13,403],{"alt":72,"src":215},[10,405,406],{},[13,407],{"alt":72,"src":220},[61,409,224],{"id":223},[10,411,227,412,231],{},[117,413,230],{},[10,415,416],{},[13,417],{"alt":72,"src":236},{"title":72,"searchDepth":238,"depth":238,"links":419},[420,421],{"id":29,"depth":238,"text":30},{"id":58,"depth":238,"text":59,"children":422},[423,424,425,426,427,428,429,430,431,432],{"id":63,"depth":244,"text":64},{"id":76,"depth":244,"text":77},{"id":88,"depth":244,"text":89},{"id":128,"depth":244,"text":129},{"id":145,"depth":244,"text":146},{"id":166,"depth":244,"text":167},{"id":178,"depth":244,"text":179},{"id":190,"depth":244,"text":191},{"id":206,"depth":244,"text":207},{"id":223,"depth":244,"text":224},{},{"title":5,"description":256},[265,266,267],{"id":437,"title":438,"body":439,"config":254,"date":1831,"description":1832,"draft":257,"extension":258,"image":254,"meta":1833,"navigation":260,"path":1834,"seo":1835,"stem":1836,"tags":1837,"toolbar":254,"translationKey":1841,"updated":1831,"__hash__":1842},"blog/sv-se/blog/zero-hallucination-qa.md","Hur jag byggde noll-hallucination Q&A i läsaren",{"type":7,"value":440,"toc":1797},[441,447,460,462,466,473,478,482,500,505,516,521,555,558,562,579,586,590,605,610,647,654,658,671,696,701,818,836,842,844,848,855,870,877,897,903,905,909,912,918,920,924,947,957,1017,1020,1031,1040,1047,1049,1053,1064,1070,1077,1081,1088,1096,1103,1107,1117,1160,1171,1177,1179,1183,1198,1206,1212,1215,1250,1260,1268,1274,1281,1285,1293,1299,1310,1312,1316,1322,1326,1333,1337,1360,1367,1369,1373,1379,1437,1443,1445,1449,1456,1475,1479,1499,1510,1512,1516,1527,1530,1553,1564,1570,1572,1576,1591,1602,1604,1608,1629,1640,1642,1646,1665,1671,1673,1677,1765,1772,1783],[10,442,443],{},[13,444],{"alt":445,"src":446},"Omslag: Noll-hallucination Q&A","https://cdn.linghuxiong.com/resources/snapshots/ai-chat-cover.png",[18,448,449],{},[10,450,451,452,455,456,459],{},"Det här inlägget delar hur vi implementerade ",[117,453,454],{},"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 ",[117,457,458],{},"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.",[24,461],{},[27,463,465],{"id":464},"i-utveckling-i-tre-steg","I. Utveckling i tre steg",[10,467,468,469,472],{},"Noll-hallucination Q&A designades inte perfekt dag ett. Det utvecklades under spänning mellan ",[117,470,471],{},"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.",[474,475],"mermaid",{":config":476,"code":477},"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",[61,479,481],{"id":480},"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,483,484,487,488,491,492,495,496,499],{},[117,485,486],{},"Tillvägagångssätt:"," När användaren öppnar en bok och ställer en fråga läggs ",[117,489,490],{},"all extraherad brödtext"," i System Prompt eller användarmeddelande och chattmodellen svarar. Överskrider boken cirka ",[117,493,494],{},"400 000 tecken"," sker ",[117,497,498],{},"hård trunkering","—bara början behålls; senare kapitel är osynliga för modellen.",[10,501,502],{},[117,503,504],{},"Fördelar:",[35,506,507,510,513],{},[38,508,509],{},"Mycket låg implementeringskostnad; nästan ingen förbehandling;",[38,511,512],{},"Fungerar rimligt på korta böcker och enkla dokument—modellen «såg verkligen hela boken»;",[38,514,515],{},"Enkel UX: fråga och få svar, inget «vänta medan vi analyserar».",[10,517,518],{},[117,519,520],{},"Nackdelar (snabbt oacceptabla):",[35,522,523,529,535,545],{},[38,524,525,528],{},[117,526,527],{},"Långsamma svar:"," Varje fråga skickar om en enorm payload; tid till första token och total latens växer med boklängd;",[38,530,531,534],{},[117,532,533],{},"Hög tokenkostnad:"," Du betalar för hela bokens input vid varje fråga;",[38,536,537,540,541,544],{},[117,538,539],{},"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 ",[117,542,543],{},"inte tydligt"," att trunkering skett;",[38,546,547,550,551,554],{},[117,548,549],{},"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 ",[117,552,553],{},"plausibla sammanfattningar utan underlag","—precis vad läsappar måste undvika.",[10,556,557],{},"Steg 1 duger för MVP, inte för produktkvalitet.",[61,559,561],{"id":560},"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,563,564,566,567,570,571,574,575,578],{},[117,565,486],{}," Före Q&A (eller vid första öppning) körs en ",[117,568,569],{},"billigare modell"," över brödtexten: dela per Spine-kapitel (eller chunka hela boken), extrahera ",[117,572,573],{},"nyckelmeningar",", behåll positions-taggar som ",[99,576,577],{},"[fFil-start-slut]",", sedan sammanfoga utdrag till kortare kontext för senare Q&A.",[10,580,581,582,585],{},"Typisk pipeline: ",[117,583,584],{},"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,587,588],{},[117,589,504],{},[35,591,592,599,602],{},[38,593,594,595,598],{},"Varje fråga skickar ",[117,596,597],{},"mycket mindre text","; token per förfrågan sjunker mot steg 1;",[38,600,601],{},"Förbehandling kan cachas; ingen om-extrahering per fråga på samma bok;",[38,603,604],{},"Positionstaggar lägger grund för citeringar.",[10,606,607],{},[117,608,609],{},"Nackdelar (håller fortfarande inte på långa böcker):",[35,611,612,618,628,637],{},[38,613,614,617],{},[117,615,616],{},"Stor detaljförlust:"," «Nyckelmeningar» väljs av modellen; kvalificerare, motexempel och argumentkedjor tappas ofta—svar blir «korrekta men ensidiga»;",[38,619,620,623,624,627],{},[117,621,622],{},"Kontext fortfarande stor på långa böcker:"," Även nyckelmeningsbuntar för stora verk är betydande—latens och kostnad ",[117,625,626],{},"lättas, inte löses",";",[38,629,630,633,634,627],{},[117,631,632],{},"Dubbelt LLM-fel:"," Extrahering kan missa; Q&A kan feltolka utdrag—fel ",[117,635,636],{},"staplas",[38,638,639,642,643,646],{},[117,640,641],{},"Statisk kontext:"," Oavsett om användaren frågar om ett kapitel eller helboksstruktur får modellen alltid samma ",[117,644,645],{},"för-extraherade blob","—ingen dynamisk avgränsning per fråga.",[10,648,649,650,653],{},"Lärdom: frågan är inte «om vi komprimerar», utan ",[117,651,652],{},"om komprimering sker på begäran och om vi kan återgå till källtext",".",[61,655,657],{"id":656},"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,659,660,662,663,670],{},[117,661,486],{}," Inspirerat av ",[664,665,669],"a",{"href":666,"rel":667},"https://github.com/VectifyAI/PageIndex",[668],"nofollow","PageIndex",". Mot steg 2, tre kärnskiften:",[672,673,674,680,690],"ol",{},[38,675,676,679],{},[117,677,678],{},"Förbehandling ger strukturerat index"," (innehållsförteckningssammanfattningar + exakta tecken-spans), inte utdrag som direkt Q&A-kontext;",[38,681,682,685,686,689],{},[117,683,684],{},"Varje fråga använder Tool Calling för retrieval på begäran",", sedan ",[117,687,688],{},"hämtar källtext med positionstaggar"," för svar;",[38,691,692,695],{},[117,693,694],{},"System Prompt + frontend"," tvingar citeringsformat och stödjer klick-till-hopp med markering i läsaren.",[10,697,698],{},[117,699,700],{},"Jämförelse av tre steg:",[702,703,704,723],"table",{},[705,706,707],"thead",{},[708,709,710,714,717,720],"tr",{},[711,712,713],"th",{},"Dimension",[711,715,716],{},"Steg 1 (hel dump)",[711,718,719],{},"Steg 2 (nyckelmeningar)",[711,721,722],{},"Steg 3 (nuvarande)",[724,725,726,745,759,773,787,804],"tbody",{},[708,727,728,732,735,738],{},[729,730,731],"td",{},"Kontext per fråga",[729,733,734],{},"Hela boken (eller trunkerad första halva)",[729,736,737],{},"För-extraherade nyckelmeningar",[729,739,740,741,744],{},"Endast ",[117,742,743],{},"käll","-utdrag relevanta för frågan",[708,746,747,750,753,756],{},[729,748,749],{},"Träffsäkerhet långa böcker",[729,751,752],{},"Kollapsar efter ~400k tecken",[729,754,755],{},"Beror på extrahering; tappar detaljer",[729,757,758],{},"Hämta via TOC/span; ingen hård helbokstrunkering",[708,760,761,764,767,770],{},[729,762,763],{},"Svarshastighet",[729,765,766],{},"Långsam",[729,768,769],{},"Något bättre; långa böcker fortfarande långsamma",[729,771,772],{},"Retrieval + kort kontext—märkbart snabbare",[708,774,775,778,781,784],{},[729,776,777],{},"Tokenkostnad",[729,779,780],{},"Mycket hög",[729,782,783],{},"Medelhög",[729,785,786],{},"Amorterad förbehandling + betala vid behov",[708,788,789,792,795,798],{},[729,790,791],{},"Spårbarhet",[729,793,794],{},"Svag (svårt att citera)",[729,796,797],{},"Taggar finns men innehåll redan filtrerat",[729,799,800,801],{},"Fotnoter mappar till ",[117,802,803],{},"riktiga käll-spans",[708,805,806,809,812,815],{},[729,807,808],{},"Teknisk komplexitet",[729,810,811],{},"Låg",[729,813,814],{},"Medel",[729,816,817],{},"Hög",[10,819,820,823,824,827,828,831,832,835],{},[117,821,822],{},"Varför vi stannade vid steg 3:"," För läsning är noll hallucination inte «visa modellen så mycket text som möjligt», utan ",[117,825,826],{},"«innan svar, hämta källevidens för frågan»",". Steg 1–2 kämpade om ",[117,829,830],{},"kontextstorlek","; steg 3 delar pipelinen i ",[117,833,834],{},"index (förbehandla) → hämta (Tool) → evidens (källa) → svara (begränsad generering)","—balanserar träffsäkerhet, kostnad och spårbarhet.",[10,837,838,839,653],{},"Nedan detaljer för ",[117,840,841],{},"steg 3",[24,843],{},[27,845,847],{"id":846},"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,849,850,851,854],{},"Användare förlåter tillfälliga fel i en generell chatbot. I ",[117,852,853],{},"bok-Q&A"," är kostnaden högre:",[35,856,857,864,867],{},[38,858,859,860,863],{},"De frågar vad ",[117,861,862],{},"den här boken"," säger—inte vad som finns i modellens parametriska minne;",[38,865,866],{},"Ett plausibelt «bokens synpunkt» kan vilseleda anteckningar, citeringar och vidaredelning;",[38,868,869],{},"Utan källor kan de inte verifiera—förtroende är svårt att bygga.",[10,871,872,873,876],{},"Så «noll hallucination» blir tre ",[117,874,875],{},"genomförbara"," regler:",[672,878,879,885,891],{},[38,880,881,884],{},[117,882,883],{},"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;",[38,886,887,890],{},[117,888,889],{},"Svar måste vara spårbara:"," Viktiga påståenden bär positionstaggar som UI kan tolka och hoppa till;",[38,892,893,896],{},[117,894,895],{},"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,898,899,900,902],{},"Resten följer ",[117,901,841],{}," dataflöde och hur reglerna implementeras.",[24,904],{},[27,906,908],{"id":907},"iii-arkitektur-förbehandla-tool-retrieval-begränsad-generering-klickbara-citeringar","III. Arkitektur: Förbehandla → Tool retrieval → Begränsad generering → Klickbara citeringar",[474,910],{":config":476,"code":911},"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,913,914,915],{},"Kärnidé: ",[117,916,917],{},"låt inte modellen «svara ur minnet»—tvinga den att «samla evidens, svara och markera källor».",[24,919],{},[27,921,923],{"id":922},"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,925,926,927,930,931,934,935,938,939,942,943,946],{},"Om varje fråga fortfarande använde helbokskontext från ",[117,928,929],{},"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 ",[117,932,933],{},"segment-sammanfattningsjobb"," i bakgrunden—dela efter ",[117,936,937],{},"TOC"," eller ",[117,940,941],{},"textlängd"," i ",[99,944,945],{},"Segment",", sammanfatta varje, persist i lokal IndexedDB.",[10,948,949,950,952,953,956],{},"Varje ",[99,951,945],{}," innehåller sammanfattning plus ",[117,954,955],{},"fysisk position i brödtext",":",[702,958,959,969],{},[705,960,961],{},[708,962,963,966],{},[711,964,965],{},"Fält",[711,967,968],{},"Betydelse",[724,970,971,984,997,1007],{},[708,972,973,981],{},[729,974,975,102,978],{},[99,976,977],{},"startFileIndex",[99,979,980],{},"endFileIndex",[729,982,983],{},"Spine-filindex (PDF: en fil per sida)",[708,985,986,994],{},[729,987,988,102,991],{},[99,989,990],{},"startOffset",[99,992,993],{},"endOffset",[729,995,996],{},"Tecken start/slut",[708,998,999,1004],{},[729,1000,1001],{},[99,1002,1003],{},"sequence",[729,1005,1006],{},"Linjär läsordning",[708,1008,1009,1014],{},[729,1010,1011],{},[99,1012,1013],{},"title",[729,1015,1016],{},"TOC-titel",[10,1018,1019],{},"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,1021,1022,1023,1026,1027,1030],{},"Sammanfattnings-System Prompt kräver ",[117,1024,1025],{},"behålla inline positionstaggar"," (",[99,1028,1029],{},"[fNummer-Nummer-Nummer]",") så Tool-hämtad källa stämmer med Spine-offsets. Kärnbegränsning:",[1032,1033,1038],"pre",{"className":1034,"code":1036,"language":1037,"meta":72},[1035],"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",[99,1039,1036],{"__ignoreMap":72},[10,1041,1042,1043,1046],{},"Efter förbehandling beror Q&A på ",[117,1044,1045],{},"strukturerat segmentindex",", inte helbokskontext—tekniskt förutsättning för noll hallucination på långa böcker.",[24,1048],{},[27,1050,1052],{"id":1051},"v-positionstaggsystem-koda-var-i-text","V. Positionstaggsystem: Koda «var» i text",[10,1054,1055,1056,1059,1060,1063],{},"Noll hallucination kräver innehåll från källa ",[117,1057,1058],{},"och"," maskintolkbar, UI-hoppbar ",[117,1061,1062],{},"härkomst",". Vi använder inline-taggar:",[1032,1065,1068],{"className":1066,"code":1067,"language":1037},[1035],"[f{fileIndex}-{startChar}-{endChar}]\n",[99,1069,1067],{"__ignoreMap":72},[10,1071,1072,1073,1076],{},"Exempel: ",[99,1074,1075],{},"[f5-123-165]"," = Spine-fil 5 (0-baserad), tecken 123–165.",[61,1078,1080],{"id":1079},"_51-hur-taggar-skrivs-in-i-brödtext","5.1 Hur taggar skrivs in i brödtext",[10,1082,1083,1084,1087],{},"Extraheringslagret lägger till ",[99,1085,1086],{},"[f{fileIndex}-{start}-{end}]"," i segmentets slut:",[1032,1089,1094],{"className":1090,"code":1092,"language":1093,"meta":72},[1091],"language-typescript","const position = `[f${fileIndex}-${absOffset}-${absOffset + segment.length}]`;\nfileLines.push(segment.text.trim() + position);\n","typescript",[99,1095,1092],{"__ignoreMap":72},[10,1097,1098,1099,1102],{},"Oavsett förbehandlingssammanfattningar eller Tool-utdrag stämmer positioner med ",[117,1100,1101],{},"Spine-teckenoffset","—inte modellens gissade sidnummer.",[61,1104,1106],{"id":1105},"_52-begränsningar-på-modellutdata","5.2 Begränsningar på modellutdata",[10,1108,1109,1110,1116],{},"System Prompt inkluderar ",[117,1111,1112],{},[1113,1114,1115],"span",{},"Position Citation Rules","—fem kärnpunkter:",[672,1118,1119,1129,1139,1145,1154],{},[38,1120,1121,1124,1125,1128],{},[117,1122,1123],{},"Standardformat:"," Måste använda ",[99,1126,1127],{},"[f_fileIndex-startChar-endChar]","; alla tre numeriska delar krävs;",[38,1130,1131,1134,1135,1138],{},[117,1132,1133],{},"Kopiera endast från aktuella källor:"," Fotnoter ",[117,1136,1137],{},"ordagrant"," från denna rundas system/user-meddelanden eller Tool-returer;",[38,1140,1141,1144],{},[117,1142,1143],{},"Ingen fabricering:"," Beräkna, redigera eller hitta inte på positioner;",[38,1146,1147,1150,1151,627],{},[117,1148,1149],{},"Föredra utelämnande:"," Finns ingen giltig tagg i kontext, svara normalt—",[117,1152,1153],{},"skriv inga positionstaggar",[38,1155,1156,1159],{},[117,1157,1158],{},"Inline med påståenden:"," Taggar följer relevant mening; inga citeringslistor i slutet.",[10,1161,1162,1163,1166,1167,1170],{},"UI filtrerar också tillfälliga ",[117,1164,1165],{},"tvådelade"," ogiltiga taggar (t.ex. ",[99,1168,1169],{},"[f1-293]",") före render.",[10,1172,1173],{},[13,1174],{"alt":1175,"src":1176},"Popup för citeringsspårning","https://cdn.linghuxiong.com/resources/snapshots/ai-chat.png",[24,1178],{},[27,1180,1182],{"id":1181},"vi-tool-calling-hämta-först-svara-sedan","VI. Tool Calling: Hämta först, svara sedan",[10,1184,1185,1186,1189,1190,1193,1194,1197],{},"När chatt är bunden till bok (",[99,1187,1188],{},"resourceId"," finns, ",[99,1191,1192],{},"chatType === 'chat'",") registrerar vi två Tools med executors före varje generering—standard OpenAI ",[117,1195,1196],{},"function calling","-loop.",[61,1199,1201,1202,1205],{"id":1200},"_61-get_related_segment_summaries-riktad-segmentuppslagning","6.1 ",[99,1203,1204],{},"get_related_segment_summaries"," — Riktad segmentuppslagning",[10,1207,1208,1209,653],{},"För: begrepp, figurer, handling, kapiteldetaljer—",[117,1210,1211],{},"tydlig retrieval-avsikt",[10,1213,1214],{},"Flöde:",[672,1216,1217,1224,1230,1233,1243],{},[38,1218,1219,1220,1223],{},"Modellen skriver om användarens formulering till ",[117,1221,1222],{},"termer som sannolikt finns i boken"," («Optimize Search Queries» i System Prompt);",[38,1225,1226,1227,627],{},"Anropa Tool med ",[99,1228,1229],{},"question",[38,1231,1232],{},"Batcha alla segment-sammanfattningar per tokenbudget (~30k tokens per batch, max 5 batchar);",[38,1234,1235,1236,1239,1240,627],{},"Varje batch: separat LLM-begäran väljer relevanta segment-ID (max 5) från ",[99,1237,1238],{},"{ id, title, summary }",", JSON som ",[99,1241,1242],{},"{\"Thinking\":\"...\",\"answer\":[\"1\",\"3\"]}",[38,1244,1245,1246,1249],{},"För valda segment, hämta ",[117,1247,1248],{},"taggad källtext"," från Spine—inte sammanfattningar—som Tool-resultat.",[10,1251,1252,1255,1256,1259],{},[117,1253,1254],{},"Nyckeldesign: Tool returnerar källa, inte sammanfattningar."," Modellen svarar från riktiga stycken med inline ",[99,1257,1258],{},"[f…]",", undviker «sammanfattning → om-sammanfattning»-drift.",[61,1261,1263,1264,1267],{"id":1262},"_62-get_full_book_segment_summaries-helboksöversikt","6.2 ",[99,1265,1266],{},"get_full_book_segment_summaries"," — Helboksöversikt",[10,1269,1270,1271,653],{},"För: «sammanfatta boken», «recensera den här boken», «övergripande struktur/teman»—",[117,1272,1273],{},"global vy",[10,1275,1276,1277,1280],{},"Sammanfoga alla segment ",[99,1278,1279],{},"summary"," i läsordning—undvik att missa nyckelkapitel enbart via chunk-relevans.",[61,1282,1284],{"id":1283},"_63-system-prompt-bok-först-tools-först","6.3 System Prompt: Bok först, tools först",[10,1286,1287,1288,956],{},"Med bunden bok gäller ",[117,1289,1290],{},[1113,1291,1292],{},"Core Principles for Reading Assistant",[1032,1294,1297],{"className":1295,"code":1296,"language":1037},[1035],"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",[99,1298,1296],{"__ignoreMap":72},[10,1300,1301,1302,1305,1306,1309],{},"Generering kör tool-loopen: ",[99,1303,1304],{},"tool_calls"," → kör → lägg till ",[99,1307,1308],{},"role: tool"," → fortsätt tills sluttext. Med tools på stängs thinking-kanal av för att undvika protokollkonflikter.",[24,1311],{},[27,1313,1315],{"id":1314},"vii-frontend-spårbarhet-från-fotnot-till-markering","VII. Frontend-spårbarhet: Från fotnot till markering",[10,1317,1318,1319,1321],{},"Modellutdata ",[99,1320,1075],{}," visas inte rå; renderlager gör klickbara citeringar.",[61,1323,1325],{"id":1324},"_71-fotnotrendering","7.1 Fotnotrendering",[10,1327,1328,1329,1332],{},"Normalisera taggar till Markdown-länkar som ",[99,1330,1331],{},"[1]([f5-123-165])",", rendera som numrerade fotnoter; deduplicera samma position för att undvika UI-klutter.",[61,1334,1336],{"id":1335},"_72-klickinteraktion","7.2 Klickinteraktion",[672,1338,1339,1348,1354],{},[38,1340,1341,1344,1345,1347],{},[117,1342,1343],{},"Första klick:"," Tolka ",[99,1346,1258],{}," → fileIndex + offsets → extrahera Spine-text → förhandsgranska (valfri TOC-titel);",[38,1349,1350,1353],{},[117,1351,1352],{},"Samma fotnot igen:"," Stäng förhandsgranskning;",[38,1355,1356,1359],{},[117,1357,1358],{},"Bekräfta hopp:"," Öppna läsvy, markera teckenintervall.",[10,1361,1362,1363,1366],{},"Från kopierad modelltagg till användarsynlig källa passerar kedjan ",[117,1364,1365],{},"aldrig genom ytterligare LLM-anrop","—deterministisk och reproducerbar.",[24,1368],{},[27,1370,1372],{"id":1371},"viii-kantfall-och-ärlig-degradering","VIII. Kantfall och ärlig degradering",[10,1374,1375,1376,956],{},"Noll hallucination ≠ «alltid finns svar»—det betyder ",[117,1377,1378],{},"ingen evidens, ingen fabricering",[702,1380,1381,1391],{},[705,1382,1383],{},[708,1384,1385,1388],{},[711,1386,1387],{},"Scenario",[711,1389,1390],{},"Beteende",[724,1392,1393,1401,1413,1421,1429],{},[708,1394,1395,1398],{},[729,1396,1397],{},"Segment-sammanfattningar inte klara",[729,1399,1400],{},"Extrahera full text och sammanfatta först",[708,1402,1403,1406],{},[729,1404,1405],{},"Tool hittar inget",[729,1407,1408,1409,1412],{},"Returnera ",[99,1410,1411],{},"(No relevant segment excerpts found…)","; modellen ska säga att det inte finns i boken",[708,1414,1415,1418],{},[729,1416,1417],{},"Ogiltiga tvådelade taggar från modell",[729,1419,1420],{},"Frontend filtrerar; inga trasiga fotnoter",[708,1422,1423,1426],{},[729,1424,1425],{},"Vardagschatt",[729,1427,1428],{},"System Prompt tillåter allmän kunskap utanför boken",[708,1430,1431,1434],{},[729,1432,1433],{},"Exportera chatt",[729,1435,1436],{},"Fotnoter kan bli läsar-deep links för delning/arkiv",[10,1438,1439],{},[13,1440],{"alt":1441,"src":1442},"Chattexport","https://cdn.linghuxiong.com/resources/snapshots/ai-chat-export.png",[24,1444],{},[27,1446,1448],{"id":1447},"ix-designavvägning-varför-inte-vector-rag","IX. Designavvägning: Varför inte «vector RAG»?",[10,1450,1451,1452,1455],{},"Kollegor som bygger dokument-Q&A frågar ofta: om ni gör retrieval-augmented generation, varför inte ",[117,1453,1454],{},"Embedding + vector DB Top-K","?",[10,1457,1458,1459,1462,1463,1466,1467,1470,1471,1474],{},"Vi ",[117,1460,1461],{},"gör RAG","—hämta före generera. Skillnaden: «RAG» i community-språk innebär ofta ",[117,1464,1465],{},"vektorsimilaritet","; vårt steg 3 är ",[117,1468,1469],{},"segmentindex + Tool med källhämtning på begäran","—",[117,1472,1473],{},"ingen vektorlager medvetet",". Nedan arkitekturskäl, inte förnekande av vector RAG:s värde.",[61,1476,1478],{"id":1477},"omfattning-inte-ingen-retrieval-utan-ingen-vektorretrieval","Omfattning: inte «ingen retrieval», utan «ingen vektorretrieval»",[35,1480,1481,1490],{},[38,1482,1483,1486,1487,627],{},[117,1484,1485],{},"Bred RAG:"," hämta → generera → ",[117,1488,1489],{},"vi gör detta",[38,1491,1492,1495,1496,653],{},[117,1493,1494],{},"Vector RAG:"," recall via embedding-similaritet → ",[117,1497,1498],{},"inte i denna version",[10,1500,1501,1502,1505,1506,1509],{},"Förbehandling bygger ",[117,1503,1504],{},"segment-sammanfattningsindex","; modellen väljer segment via Tools och får ",[117,1507,1508],{},"källtext",". Retrieval finns utan separat embedding-modell och vektorindex-underhåll.",[24,1511],{},[61,1513,1515],{"id":1514},"skäl-1-anpassade-llm-providershåll-integrationsytan-liten","Skäl 1: Anpassade LLM-providers—håll integrationsytan liten",[10,1517,1518,1519,1522,1523,1526],{},"Användare kan koppla ",[117,1520,1521],{},"egna API-nycklar",", anpassade base URLs eller ",[117,1524,1525],{},"lokal Ollama","—chattmodell är deras val; kostnad och datapath under kontroll.",[10,1528,1529],{},"Typisk vector RAG vidgar integration:",[35,1531,1532,1543,1546],{},[38,1533,1534,1535,1538,1539,1542],{},"Utöver ",[117,1536,1537],{},"chattmodell"," behövs oftast ",[117,1540,1541],{},"embedding-modell"," (annat namn, ibland annan endpoint);",[38,1544,1545],{},"Lokal Ollama behöver separat embedding-modell plus dimension/API-kompatibilitet;",[38,1547,1548,1549,1552],{},"Fler fel lägen: chatt OK men ",[117,1550,1551],{},"tom retrieval","—embedding, index eller dimensionsmismatch; svårare att felsöka än en provider end-to-end.",[10,1554,1555,1556,1559,1560,1563],{},"Här delar ",[117,1557,1558],{},"segmentval och svar samma provider-konfiguration","—inget «chatt på A, index på B». För ",[117,1561,1562],{},"utbytbar LLM","-appar slår det ofta några recall-poäng.",[10,1565,1566],{},[13,1567],{"alt":1568,"src":1569},"Anpassade AI-providers","https://cdn.linghuxiong.com/resources/snapshots/ai-customize-providers.png",[24,1571],{},[61,1573,1575],{"id":1574},"skäl-2-embeddings-binder-till-indexproviderbyte-är-dyrt","Skäl 2: Embeddings binder till index—providerbyte är dyrt",[10,1577,1578,1579,1582,1583,1586,1587,1590],{},"I vector RAG är ",[117,1580,1581],{},"vektorer inte universellt mellanformat","—de är koordinater under en embedding-modell. Index med A, fråga med B: similaritet är vanligt ",[117,1584,1585],{},"inte jämförbar","—ofta ",[117,1588,1589],{},"full om-embedding",", och dimensioner (768 / 1024 / 1536 …) låser lagringsschema.",[10,1592,1593,1594,1597,1598,1601],{},"Steg 3 persisterar ",[117,1595,1596],{},"strukturerade sammanfattningar + tecken-spans",", inte vektorer; byte av chattmodell ",[117,1599,1600],{},"bygger inte om index","; evidenskedja (källpositioner) oförändrad—i linje med «prova olika LLM när som helst».",[24,1603],{},[61,1605,1607],{"id":1606},"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,1609,1610,1611,1614,1615,1618,1619,1622,1623,1628],{},"E-böcker och PDF har vanligtvis ",[117,1612,1613],{},"kapitelstruktur","; förbehandling ger ",[117,1616,1617],{},"segmenttitlar + sammanfattningar",". För «vad säger kapitel X» eller «hur definierar boken Y» fungerar val från katalog och ",[117,1620,1621],{},"källhämtning"," bra i praktiken; Tool returnerar ",[117,1624,1625,1626],{},"källa med ",[99,1627,1258],{},", noll hallucination förankras i tecken-spans.",[10,1630,1631,1632,1635,1636,1639],{},"Vektorer hjälper vid diffus semantik, flerspråk, långspann literal mismatch; för läsare med ",[117,1633,1634],{},"TOC + förbehandling + stark spårbarhet"," ger investering i ",[117,1637,1638],{},"Tool + källretur + citeringsregler"," ofta bättre ROI.",[24,1641],{},[61,1643,1645],{"id":1644},"framtid-hybrid-recall-inte-omskrivning","Framtid: Hybrid recall, inte omskrivning",[10,1647,1648,1649,1652,1653,1656,1657,1660,1661,1664],{},"Vi kan lägga till ",[117,1650,1651],{},"grov vektorrecall"," (embedding bara för Top-N kandidatkapitel), fortfarande slut i ",[117,1654,1655],{},"välj segment → källa → klickbart spår","—noll-hallucination-regler oförändrade. Om tillagt: embedding ",[117,1658,1659],{},"valfritt",", tydliga ",[117,1662,1663],{},"om-indexera","-meddelanden vid modellbyte—undvik tyst fel retrieval.",[10,1666,1667,1668],{},"Tills dess: ",[117,1669,1670],{},"vilken OpenAI-kompatibel chatt-API som helst fungerar; byte av chattmodell bygger inte om lokalt index.",[24,1672],{},[27,1674,1676],{"id":1675},"x-sammanfattning","X. Sammanfattning",[702,1678,1679,1692],{},[705,1680,1681],{},[708,1682,1683,1686,1689],{},[711,1684,1685],{},"Steg",[711,1687,1688],{},"Metod",[711,1690,1691],{},"Roll",[724,1693,1694,1705,1718,1732,1743,1754],{},[708,1695,1696,1699,1702],{},[729,1697,1698],{},"Förbehandla",[729,1700,1701],{},"Dela efter TOC/längd + segment-sammanfattningscache",[729,1703,1704],{},"Långa böcker sökbara och lokaliserbara",[708,1706,1707,1710,1715],{},[729,1708,1709],{},"Positionstaggar",[729,1711,1712,1714],{},[99,1713,577],{}," i källa",[729,1716,1717],{},"Maskintolkbar härkomst",[708,1719,1720,1723,1729],{},[729,1721,1722],{},"Tool retrieval",[729,1724,1725,1726],{},"Segment per fråga / helbokssammanfattningar, returnera ",[117,1727,1728],{},"källa",[729,1730,1731],{},"Tvinga evidens före svar",[708,1733,1734,1737,1740],{},[729,1735,1736],{},"System Prompt",[729,1738,1739],{},"Bok först, inga falska taggar, säg när saknas",[729,1741,1742],{},"Begränsa generering",[708,1744,1745,1748,1751],{},[729,1746,1747],{},"Frontend",[729,1749,1750],{},"Fotnot → förhandsgranska → hoppa och markera",[729,1752,1753],{},"Användare verifierar evidens",[708,1755,1756,1759,1762],{},[729,1757,1758],{},"Ingen vektorretrieval",[729,1760,1761],{},"En provider; byt chattmodell utan om-index",[729,1763,1764],{},"Lägre integrations- och migrationskostnad",[10,1766,1767,1768,1771],{},"«Noll hallucination» betyder inte att modellen aldrig felar—det betyder ",[117,1769,1770],{},"teknik som låser utdata till evidenskedja",": ingen retrieval → utge sig inte för bokinnehåll; med retrieval → ge verifierbara källpositioner.",[10,1773,1774,1775,1778,1779,1782],{},"Om du bygger AI-läsning eller dokument-Q&A hoppas vi att vägen ",[117,1776,1777],{},"hel dump → nyckelmeningar → Tool-first på begäran",", plus ",[117,1780,1781],{},"inline positionstaggar + källretur",", är en användbar referensimplementation.",[18,1784,1785],{},[10,1786,1787,1788,1792,1793,653],{},"Detta är lärdomar från att bygga ",[664,1789,267],{"href":1790,"rel":1791},"https://reader.linghuxiong.com",[668]," AI-läsare—endast som referens. Prova läsaren på ",[664,1794,1796],{"href":1795},"/sv-se#download","nedladdningssidan",{"title":72,"searchDepth":238,"depth":238,"links":1798},[1799,1804,1805,1806,1807,1811,1818,1822,1823,1830],{"id":464,"depth":238,"text":465,"children":1800},[1801,1802,1803],{"id":480,"depth":244,"text":481},{"id":560,"depth":244,"text":561},{"id":656,"depth":244,"text":657},{"id":846,"depth":238,"text":847},{"id":907,"depth":238,"text":908},{"id":922,"depth":238,"text":923},{"id":1051,"depth":238,"text":1052,"children":1808},[1809,1810],{"id":1079,"depth":244,"text":1080},{"id":1105,"depth":244,"text":1106},{"id":1181,"depth":238,"text":1182,"children":1812},[1813,1815,1817],{"id":1200,"depth":244,"text":1814},"6.1 get_related_segment_summaries — Riktad segmentuppslagning",{"id":1262,"depth":244,"text":1816},"6.2 get_full_book_segment_summaries — Helboksöversikt",{"id":1283,"depth":244,"text":1284},{"id":1314,"depth":238,"text":1315,"children":1819},[1820,1821],{"id":1324,"depth":244,"text":1325},{"id":1335,"depth":244,"text":1336},{"id":1371,"depth":238,"text":1372},{"id":1447,"depth":238,"text":1448,"children":1824},[1825,1826,1827,1828,1829],{"id":1477,"depth":244,"text":1478},{"id":1514,"depth":244,"text":1515},{"id":1574,"depth":244,"text":1575},{"id":1606,"depth":244,"text":1607},{"id":1644,"depth":244,"text":1645},{"id":1675,"depth":238,"text":1676},"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.",{},"/sv-se/blog/zero-hallucination-qa",{"title":438,"description":1832},"sv-se/blog/zero-hallucination-qa",[1838,1839,1840],"läsare","AI","teknik","zero-hallucination-qa","QWThAlGalusgtBlO9SYseN04SRTs_uV4utvUD99iW2Y",1786513822313]