syvällinen tutkimus ilman syviä taskuja.
Kun "Deep Research" saapui korkealaatuisiin AI-ohjelmiin, , olin huvittunut, mitä tämä on,, itse asiassa,? Poistin sen pois,M SK6 Ja kun ymmärsin arkkitehtuurin,MSC7 tajusin, että olen jo rakentanut suurimman osan siitä.
Tässä lähestymistavassa vähennysvaiheen vahvuus poistaa tarve laatia suuri, kallis malli tyydyttävien tulosten aikaansaamiseksi
Erityisesti, Minulla oli jo useita olennaisia rakenteellisia elementtejä, mukaan luettuna monenlaisiaM SK2lähdetietolähestymistapaa ,yksikön ekstrakointiaMSC4tietämyksen grafioitaMST5 ja sisällyttämistäMSV6perusteiseen luokitukseenMSP7, jotka ovat yhteisiä lucidRAG:n ja DocSummarizer-sarjan kanssa.
Epäonnistunut osatekijä ei ollut kyvyttömyyden puute, vaan pikemminkin sen ymmärtäminen, miten näitä olemassa olevia elementtejä voidaan tehokkaasti soveltaa.
Kaupallisissa työvälineissä, M SK1Tietotutkimus” tarkoittaa yleensä työtä
tai
Merkittävä
tai
Johdanto-osana, jossa suunnitellaan tutkimusta koskevaa lähestymistapaa, tekee monivaiheista-vaiheista hakua /käynnin läpiM SK3 lukee monenlaisia lähteitä MSC4 usein internetiä SSK5 olette laatineet laatimanne,/yhtenäistettyjen asiakirjojen,), sitten kirjoittaa pidemmän kertomuksen viittausten kanssa
Suuri osa arvosta on tulojen parantaminen.: pull in fresher , higher - signal sources than any model ’ training data cut - off date , ground claims in evidence , and reduce the chance of the model making things up
Esimerkkejä: OpenAI:n syvällinen tutkimus, Gemini Deep Research -tutkimus, ja Perplexity Deep -tutkimus (se kutsutaan myös “tutkimusta koskevaksi toiminnaksi” UI:ssään
DoomSummarizer noudattaa samaa työtapaa,, mutta se ’ on suunniteltu niin, että suurin osa M SK2 lukee M SK3 vähentää” työstä on deterministista ja paikallistaMSC5 ja LLM:tä käytetään pääasiassa synteesiinMST6
Jos vähennysvaihe on vahva, ei tarvitse suuria, kalliita malleja saada hyvää tulosta
Yhdessä lucidRAG ja DocSummarizer-sarja, Minulla oli jo suurin osa rakennuselementeistäM SK1 monimuotoinen -lähteiden löytäminen,yksiköiden ekstrahointiMSC4tietämyksen grafiikat
Missing piece oli't capability. Se oli orkesteri. Miten otetaan kaikki nämä signaalit ja liitetään ne yhteen jonkin pienen mallin kanssa?
Se's DoomSummarizer. Named after doom scrolling , because it doom Scrolls so you donMSC3t have toM SK4 Point it at your sourcesMNK5 set a vibeMKK6 get a synthesisMZK7
Mutta tässä artiklassa ei ole kyse välineestä, vaan siitä ajatuksesta, jonka avulla se toimii.
Tämä on Osa 5 DocSummarizer -sarjasta.
Jos haluatte ensin pohjatyöt:
Tämä on myös Aikarajoitteinen väline.
Standard RAG on jo tehnyt semanttista hakua: chunk-asiakirjat, sijoittaa neM SK2 ja fetch top
Paine on viimeinen askel: loppujen lopuksi tuhlaatte meluisen, päällekkäisten kuvien pilpin LLM:hen ja pyydätte sitä sovittamaan päällekkäisyydet yhteen , painottamaan lähteitä , ja pitämään johdonmukaista siltaaMSC4 Se toimiiM SK5 mutta se ajaa teitä kohti suuria tausta-aitoja ja kalliita mallejaMST6
Mitä tapahtuu, jos teette enemmän työtä ennen LLM näkee kaiken?
Se ”'” on malli vähennetään ennen kuin luotte. Otetaan raaka-asiakirjat ja alennetaan ne määrätietoisesti olennaisiin signaaleihinsa, : sisällytykset, M SK2 luokkat, , merkittävät osat,, yksiköiden profiilit,
flowchart TD
subgraph REDUCE["REDUCE: Distil to Signals"]
Q[Query] --> Decompose[Composite Decomposition]
Decompose --> S1[Subquery 1]
Decompose --> S2[Subquery 2]
S1 & S2 --> Fetch[Multi-Source Fetch]
Fetch --> Embed[ONNX Embed Each Item]
Embed --> Rank[6-Signal RRF Fusion]
Rank --> TextRank[TextRank Extraction]
TextRank --> NER[Entity Extraction]
NER --> Profile[Entity Profile Vectors]
Profile --> Segments[Salient Segment Extraction]
end
subgraph SYNTH["SYNTHESIZE"]
Segments --> Standard["Standard Path - 1 LLM Call"]
Segments --> LongForm["Long-Form Path - N+3 LLM Calls"]
end
style REDUCE fill:#1a1a2e,color:#e0e0e0
style SYNTH fill:#162447,color:#e0e0e0
Vähennysvaihe on deterministinen: sisällytyksetM SK1 luokitus, entity extraction , TextRankMSL4 segmenttituloksetMST5 Ei LLM-puhelujaMSC6
Synteesi on ainoa LLM-vaihe. Standardikyselyssä vähennetyt signaalit ovat riittävän puhtaita, että yksi puhelu suorittaa tehtävän. pitkienM SK1muodollisten asiakirjojen , osalta sentinel suunnittelee rakennetta ja päämalli tuottaa osia rinnakkainN+3 N-osia koskevat puhelut).
Yksityiskohtaisempia tietoja tästä mallista, Vähennetty RAG.
Ennen kuin mitään vähennetään, kysymyksen on muututtava hakutoimiksi,
Pienellä paikallisella sentinel-mallilla (0.6B omassa tapauksessani, JSON-modusM SK2 lämpötila 0.1) tulkitsee raaka-ainekysymyksen rakenteelliseksi tarkoitukseksiMSC4 ja YAML-lähettiläisesti ohjattava lähderoutteri muuntaa kyseisen tarkoituksen konkreettisiksi fetchesiksi.
flowchart TD
Q["User Query"] --> Sentinel["Sentinel: JSON Interpretation - categories, intent, entities, - temporal hints, tone"]
Sentinel --> Router["Source Router - YAML category → source mapping"]
Router --> S1["gnews:AI safety"]
Router --> S2["search:AI regulation"]
Router --> S3["bbc:technology"]
Router --> S4["reddit • hn"]
S1 & S2 & S3 & S4 --> Fetch["Parallel Fetch - circuit breaking + rate limiting"]
Fetch --> Merge["Merge + Deduplicate - → reduce phase"]
style Sentinel fill:#1e3a5f,color:#e0e0e0
style Router fill:#0d3b2e,color:#e0e0e0
Rangailija ekstrahoi rakenteellisia alueita:
Alkuperän valinta tapahtuu kuudessa vaiheessa:
"from HackerNews" → hn menee suoraan sisäänresearch tai deep_dive tarkoitus lisätä arkistognews:OpenAI)Tuloksena oli:: ~10 lähdeidentifiaattorit otettiin samanaikaisesti perimään
Vibes muuttaa hakuehtoja ennen kuin ne kohdistavat mitään API:ta. Esimerkkinä, --vibe doom edellytykset kysymykset "ongelmista aiheutuvat riskit otetaan huomioon, uudelleen muotoiltava se, mikä palaa takaisin ennen kuin mikään tärkeysjärjestys tapahtuu
Jos haluatte taustan kestävyyden biteille, ks. Pollyn käyttäminen eläkkeelle jäämiseen ( Jäljestysjärjestelmien takapaine (rajan rajoittaminen ja takapaine
Suurin osa hakujärjestelmistä kohtelee "Mitkä ovat ns. AI-turvallisuuden uudet vaatimukset ja mitkä ovat viimeisimmät säännökset?
Sentinel hajottaa yhdistetyt kysymykset:
{
"is_composite": true,
"subqueries": [
"What's new in AI safety?",
"What are the latest AI regulations?"
]
}
On mielenkiintoista valita, mitä tapahtuu seuraavaksi. Jokainen alakysymys saa oman ONNX-embeddingin (katso ONNX: Running ML Models Locally). Kun arvostellaan artikloja, otan Max-kosineeritys kaikkiin subkysymyksen sisällytteisiin, ei keskimääräinenM SK1
Miksi max? artiklaa, joka vastaa täysin M SK1AI-turvallisuutta ", ei olisi rangaistettava siitä, että se ei sano mitään "säädöksistä". Lyhyesti ottaen se siirrettäisiin keskimääräisten osittaisten vastakkainasettelujen alapuolelle? mikä tahansa osa kysymyksestänne, se nouseeM SK1 Vaihtoehtoinen, keskiarvoinen , palkitsee hämäriä artikloja, jotka koskettavat epämääräisesti kaikkea
Minulla on kuusi luokitussignaalia. Niillä on täysin eri mittasuhteetM SK1
flowchart LR
subgraph Signals
BM25[BM25 - Keyword Match]
Fresh[Freshness - 48h Half-Life]
Auth[Authority - HN/Reddit Score]
QSim[Query Similarity - Cosine]
Vibe[Vibe Alignment - Cosine]
Qual[Quality - Clickbait Detector]
end
subgraph RRF[RRF Fusion]
direction TB
R[Rank Each Signal - Independently]
F["score = Σ weight × 1/(60 + rank)"]
end
BM25 & Fresh & Auth & QSim & Vibe & Qual --> R --> F
style RRF fill:#1e3a5f,color:#e0e0e0
HN-pisteet menevät tuhansiin. Kosiinien samankaltaisuus on M SK1 to 1. Värvys heikkenee eksponentiaalisesti. VoitteMSC4 lisätä ne turvallisesti yhteenMST5 mittakaavat ovat yhteensopimattomia
Tärkein tunnusmerkki on BM25 monilla eri aloilla (BMM SK2F). Jos haluatte taustan BMSSK4, katso DocSummarizer -osuus 3.
Vastavuoroinen rangaistusfuusio (Cormack ja al. rangaistus: score = Σ weight × 1/(k + rank) (sekä k=60).
Jos haluatte täydellisen taustan RRF:ssä, Osa M SK1 kattaa sen . Siihen käänne on painot mukautuvat kysymyksen muotoon. Rangailija havaitsee tarkoituksen, , ja ampuja muotoilee itsensä uudelleen
Tämä alkoi naurettavana.
A "vibe ensimmäisen luokan - ranking-signaali otettu mukaan jäljittämisputkeen:
flowchart LR
V["--vibe doom"] --> Expand["Query Expansion - 'concerning risks issues in...'"]
V --> Embed["Vibe Embedding - 'vulnerability breach layoffs - recession crisis warning...'"]
Embed --> Score["Cosine Similarity - per article"]
Score --> RRF["RRF Signal - weight: 0.4"]
style V fill:#8b0000,color:#e0e0e0
Kolme asiaa tapahtuu, kun otetaan käyttöön vibe:
Custom vibes toimivat identtisesti. --vibe "contemplative philosophical"-kysymyksenne tulee sekä kysymyksen edeltäjäksi että tärkeysjärjestystavoitteeksi.
Tässä on virhe, jonka tein ensimmäiseksi laskemalla asiakirjojen välisiä yhteisiä yksikköjä
Kahdessa artiklassa mainitaan molemmat "CaliforniaM SK1
Yritettyjen osapuolten lukumäärä: M SK1 Näin ollen sidoksissa olevat ! Ilmiselvästi väärin.
Ratkaisu oli, että entiteet olisi pidettävä vektorina.
Tämä on rajoitettu epäselvyysmalli: NER-mallissa ehdotetaan yksiköitä, mutta deterministisen painotuksen perusteella päätetään, mikä on tärkeää.
Jokainen asiakirja saa painotettu yksikköprofiili (a 384-dim-vektorikoodi joka entiteet näkyvät ja miten erottuvaisia ne ovat):
weight = TF × IDF × confidence × type_weight
profile = L2_normalize(Σ entity_embedding × weight)
flowchart TD
subgraph Doc1["Article: OpenAI Safety Team"]
E1["OpenAI (ORG) - IDF: high - weight: 2.1"]
E2["California (LOC) - IDF: low - weight: 0.3"]
E3["Safety Team (MISC) - IDF: high - weight: 1.8"]
end
subgraph Doc2["Article: Almond Farming"]
E4["California (LOC) - IDF: low - weight: 0.3"]
E5["Almond Farmers (MISC) - IDF: high - weight: 1.9"]
E6["Drought (MISC) - IDF: medium - weight: 1.2"]
end
Doc1 --> P1["Profile Vector - Dominated by OpenAI + Safety"]
Doc2 --> P2["Profile Vector - Dominated by Farming + Drought"]
P1 -. "low similarity" .- P2
style Doc1 fill:#1a1a2e,color:#e0e0e0
style Doc2 fill:#2d1a2e,color:#e0e0e0
IDF on avainasemassa. M SK1California" ilmenee tonnia artikloja kohden - alhainen IDF*, heikko signaaliMSC5 | | "OpenAI+" on erityinen |
Älykkä osa: TF:n satustaminen. En käytä raaka-ainetta mainitsevien lukujen sijasta 1 + log(mentions). Väestö, joka mainitaan 50 kertaa pitkässä artiklassa, ei saa
Entiteettiprofiilit eivät ole vain asiakirjojen ymmärtämiseen tarkoitettuja, vaan ne ovat oikaisuulottuvuus. kukin documenM SK1t'yksikön profiili on indeksoitu HNSW-grafiikassa (DuckDB'VSS:n laajentaminenMSC5 mahdollistetaan OSSK6log NMスク7 sellaisten semantisesti liittyvien artikloiden löytäminen, joita avainsanojen haku jättäisi kokonaan huomiotta
Jos haluatte lisätietoja HNSW:stä ja DuckDB:sta, katso GraphRAG-osuus 2: Vähimmäiskäytännöllinen GrafRAG.
flowchart TD
subgraph Retrieval["Three-Layer Retrieval (UNION)"]
L1["Lucene FTS - keyword matches"]
L2["Embedding HNSW - semantic similarity"]
L3["Entity Profile HNSW - entity fingerprint match"]
L1 & L2 & L3 --> Union["Union of all candidates"]
end
subgraph Enrich["Post-RRF Enrichment"]
Top["Top 5 Ranked Items"] --> Agg["Aggregate Profile - mean of entity profiles"]
Agg --> Graph["HNSW Search - min similarity: 0.30"]
Graph --> Related["+3 Related Articles - scored below existing items"]
end
Union --> RRF["RRF Fusion"] --> Enrich
style Retrieval fill:#1a1a2e,color:#e0e0e0
style Enrich fill:#0d3b2e,color:#e0e0e0
Tämä toimii kahdessa vaiheessa:
Palauttamisen aikana: kun sentinel ekstrahoi 2+ entiteet kysymyksestä, kysymyksen entiteetin profiili lasketaan samalla TF-muodollaMSC3IDF-muodollaM SK4 Tämä etsii HNSW:n indeksiä artikloista, joilla on samankaltaisia entityisen sormenjälkiäMST5 vähintään samankaltaisina kuin \0.25. artikla \OpenAI:n turvallisuutta koskevista huolenaiheista \ " pintailtaan, vaikka se ei koskaan mainitakaan tarkasti kysymyksessä mainittuja termejä \
Luokittelun jälkeen: ylhäältä 5 järjestettyjen artikloiden entiteetin profiilit on keskitetty kokonaisvektoriksiM SK2 Tämä kokonaistutkimus etsii asiaan liittyviä artikloja, joita avainsana ja sisällytyslaajat ovat täysin unohtaneet. löydettyjä artikloita arvioidaan juuri alle alhaisimman järjestetyn artiklan ‐(×0.9) ja niissä merkitään, että ne on havaittu "yksiköiden kautta. Tämä koskee ensisijaisia lähteitä, joihin uutisartikkelit viittaavat, mutta eivät
Kolme jäljittämiskerrosta sekoittuvat unionin välityksellä: Lucenin avainasemassa olevat avainsanat vastaavat toisiaan ∪ sisällyttäminen HNSW:n mukaisiin toisiinsa M SK2 entity-profiili HN SW:n vastaiset toisistaan. Unioni on tarkoituksellisesti laajempi kuin yhteensovittaminenMSC4 Se kiinnittää kohdista, jotka sisältävät kaikki yksittäiset signaalit.
Fallback-tie ( corporalle, jossa ei ole vielä entitysprofiilejaHAVING shared_count >= 2). Se toimii,, mutta seM SK2s O (NMSC4 sen sijaan että OMSSK5log NMST6 --backfill-entity-profiles komendassa siirretään olemassa oleva corpora HNSW-tietä.
Tämä on normaali tie. scroll "AI safety and regulation" kohdistaa tämän. vähennysvaiheen jälkeen siirtää lähteenne luokiteltuihinM SK1 kaksinkertaistettuun , yksiköön-profiloituihin segmentteihin
flowchart TD
subgraph REDUCE["Reduce Phase (ALL DETERMINISTIC)"]
Items[Fetched Items] --> Embed[ONNX Embed All Items]
Embed --> RRF[6-Signal RRF Fusion]
RRF --> TR[TextRank Compression]
TR --> Seg[Segment Extraction + Salience Scoring]
Seg --> Dedup[Deduplication + Relevance Floor]
end
subgraph SYNTH["Synthesis (1 LLM CALL)"]
Dedup --> Rerank["Semantic Re-Rank - by query similarity"]
Rerank --> Budget["Smart Evidence Budgeting - redistribute unused chars"]
Budget --> Gen["Single LLM Call - with curated evidence"]
Gen --> Output[Final Summary]
end
style REDUCE fill:#0d3b2e,color:#e0e0e0
style SYNTH fill:#1e3a5f,color:#e0e0e0
Vähennysvaihe tekee kovasti töitä. Kun LLM näkee jotakinM SK1 se saa:
[E1] Title | topic | relevance talousarvioon siirrettyä sisältöäYhden LLM:n puhelu . tarkoittaa, että alennettu RAG: valinta , tärkeysjärjestys M SK2 päällekkäisyydessä olevien määrärahojen vähentäminen , ja budjetointi tapahtuvat ennen kuin LLM näkee mitään
Pitkä-muodo M SK1--template blog-article) on erilainen hirviö . Te'generoitte monimuotoisenMSC3osioasiakirjan kymmenistä lähteistäM SK4 ja tarvitsette johdonmukaisuutta osittain ilman kalliita LLM-kompresointia koskevia puheluja
Vastaus on rajoitettu epämääräinen kontekstin vetäminen. Nämä ovat deterministisia mekanismeja, joilla säilytetään cross-muodon johdonmukaisuus, samalla kun sallitaan rinnakkainen tuotanto.
flowchart TD
subgraph Phase1["Phase 1: Evidence Preparation (DETERMINISTIC)"]
Articles[Top 20 Articles] --> Segments[Chunk into Segments]
Segments --> Salience[Score Salience per Segment]
Salience --> EmbedSeg[Embed Each Segment]
end
subgraph Phase2["Phase 2: Document Planning (1 SENTINEL CALL)"]
EmbedSeg --> Summary[Build Evidence Summary]
Summary --> Sentinel["Sentinel: Generate Outline - with theme keywords per section"]
Sentinel --> EmbedThemes[Embed Section Themes]
end
subgraph Phase3["Phase 3: Evidence Assignment (DETERMINISTIC)"]
EmbedThemes --> Assign["Score: 60% theme similarity - + 25% salience + 15% relevance"]
Assign --> Dedup[Cross-Section Deduplication]
Dedup --> Gate["Quality Gates - • Min salience 0.35 - • Min theme sim 0.45 - • Max 2 per source per section"]
end
subgraph Phase4["Phase 4: Section Generation (N+2 LLM CALLS)"]
Gate --> Intro["Intro (sequential)"]
Intro --> Body["N Body Sections (parallel) - max 3 concurrent"]
Body --> Conclusion["Conclusion (sequential)"]
end
subgraph Phase5["Phase 5: Validation (DETERMINISTIC)"]
Conclusion --> Validate[Citation Validation - URL + Entity Grounding]
end
subgraph Phase6["Phase 6: Assembly (DETERMINISTIC)"]
Validate --> Assemble[Final Document Assembly]
end
style Phase1 fill:#0d3b2e,color:#e0e0e0
style Phase2 fill:#1e3a5f,color:#e0e0e0
style Phase3 fill:#0d3b2e,color:#e0e0e0
style Phase4 fill:#1e3a5f,color:#e0e0e0
style Phase5 fill:#0d3b2e,color:#e0e0e0
style Phase6 fill:#0d3b2e,color:#e0e0e0
Luvut LLM-puheluista: 1 (sentinel-piirre 1 (intro N (ruumiosatM SK1 + 1 (selitys N+3. Neljä kuusta vaiheesta on deterministisiaM SK1
Ongelmana rinnakkaisen osan generationissa on johdonmukaisuus. Jos osat eivät tiedä, mitä muut osat sanoivatM SK2 saamme toistumista ja virtaamista . Tavallinen korjaus on peräkkäinen generaatio koko kontekstin kanssa.
Sen sijaan, kukin kohta saa rajoitettu konteksti että ' rakentuu deterministisesti
flowchart LR
subgraph Context["Per-Section Context (ALL DETERMINISTIC)"]
RS["Running Summary - 1400 char budget - recent 2 sections: full - older: heading only"]
NP["Negative Prompts - 'Do NOT discuss: X, Y, Z' - from covered concepts"]
EC["Entity Continuity - re-introduce entities - last seen 2+ sections ago"]
Props["Propositions - ~15 atomic facts - per section"]
Evidence["Curated Evidence - max 12 segments - quality-gated"]
end
Context --> LLM["LLM generates - with full awareness - of document state"]
style Context fill:#1a1a2e,color:#e0e0e0
Samanaikaisessa muodossa , intro tuottaa ensimmäisen ( asettaa lähtökohdan SemaphoreSlim Yhdenmukaisuuden katkaiseminen, kukin poistaa intro-aiheet mutta ei toisiaanM SK1 ja päätelmä on viimeinen ( poistaa kaikki).
Toissijainen menettely antaa tiukemman johdonmukaisuuden (kaikki jakso poistaa kaikki aiemmat käsitteet kumulatiivisestiM SK1 mutta rinnakkain on ~3x nopeampi suurten asiakirjojen osalta
Jokainen osa tarvitsee todisteita, mutta ei mikä tahansa todisteet. Jokaiselle segmentille myönnetään yhdistelmätulos 60% theme similarity (kosiinien etäisyydestä osalle 25% ( kuinka informatiivinen segmentti on 15% artiklan merkitys ( miten merkityksellinen lähdeartikkeli on kokonaisuudessaan
Sitten ovet:
LLM-tarkoituksen sanamäärää mukautetaan todisteiden laadun perusteella. Vahvat todisteet ( todennäköisyys ≥ 0.6, \2+ lähteetMSC5 |4+ osatM SK7 ♪→ täyssanainen sanamääräMska9 heikkoja todisteita SSK10 todellisuus CSK11 \ 0.45, löyhää MSSK13 ♫→ ♫ 60% ♫ tavoitteen sisällöstäMST16 Tämä estää halucinaatiota, kun todistukset ovat pienimuotoisiaMSL17
Ennen kuin todisteet saavuttavat LLM:n, ne taantuvat ehdotuksiin, jotka inspiredoivat Dense-X-hakupaperiEach segment is broken into six types of atomic fact vaatimukset (yleiset tosiseikat lainaukset (lähettiläsläheisesti tilastot (numerot ja mittaritM SK1 määritelmät ("X on YM SK1 menettelyt (step-by-Step), ja nimettyjen yksiköiden tosiasiat (on keskittynyt tiettyyn yksiköön
Jokainen kohta saa ~15 ehdotuksiaM SK1 päällekkäisyydellä eri osa-alueilla käyttäen semanttista samankaltaisuutta.
Kun LLM kirjoittaa osan,, vähennysvaihe on antanut sen:
Pienellä mallilla voidaan tehdä erinomaista työtä tämäntyyppisessä valmistuksessa.
Kun artiklat ovat liian pitkät todisteita varten, minun on komprimoitava ne. Mutta en halua käyttää LLM-puhelua yhteenvetoon.
TekstiRank (Mihalcea & Tarau, 2004) tekee sen deterministisestiM SK4
flowchart LR
Text[Article Text] --> Split[Split into Sentences]
Split --> EmbedS[Embed Each Sentence]
EmbedS --> Graph["Build Similarity Graph - (cosine > 0.15 = edge)"]
Graph --> PR["PageRank - (20 iterations, d=0.85)"]
PR --> Select["Select Top-K - in Original Order"]
style Graph fill:#1e3a5f,color:#e0e0e0
Jokainen lause saa sisällyttämisen. Vertikaaliset samankaltaisuudet yli 0.15 muuttuvat grafiikan reiteiksiM SK2 PageRank löytää eniten keskeinen lauseet, ne, jotka liittyvät eniten kaikkeen muuhun
Tärkein yksityiskohta: valitut lauseet palautetaan alkuperäisessä asiakirjajärjestyksessä. Tämä säilyttää naratiivisen virtauksenM SK1 Saatte johdonmukaisen yhteenvedon , ei sattumanvaraista tärkeiden lauseiden pakettia
No LLM call. Runs in milliseconds. Cosine similarity is SIMDM SK2accelerated via TensorPrimitives (System.Numerics.Tensors)
Artiklat viittaavat muihin artikloihin. Näissä viittauksissa on usein parhaat todisteet M SK1 ensisijainen lähde, jonka uutisartikkeli sisältää yhteenvedon
DoomSummarizer seuraa yhteyksiä, mutta valikoivastiM SK1 Jokainen ehdokasyhteys saa tulosta :
link_score = 0.7 × query_relevance(anchor_context) + 0.3 × segment_salience
Kun segmentti salienssi yhdistetään:
Links below a relevance floor (0.15) are skipped . The system follows the journalistic inverted pyramid heuristic
Tulokset tallennetaan sisältöä koskeviin hasheseihin ja ETags-osoitteisiin. Toiset toimet ovat nopeitaM SK1 Ks. Vastauksen tallettaminen, ETags, ja ehdolliset pyynnöt.
Kaikista tähän mennessä kuvatuista asioista voidaan olettaa, että web- fetching on toteutettu.
crawl sisällyttää sivuston paikalliseen tietopohjaan. Se laajentaa seikkaa-ensimmäinen crawl M SK2BFS ) siemenosoitteesta URL-osoitteeseen
doomsummarizer crawl https://docs.example.com --name example-docs --depth 3 --max-pages 200
Kaikki pysyy ennallaan: täydellinen sisältöM SK1 ONNX-embeddings, yksikön profiilit , SQLite FTSMSC4 avainsanaindeksit MST5kokonainenMSV6 tekstitutkimusMSP7 tunteenpitoisuus ja aiheen pisteet MSV8 lasketaan sisällytettyjen ankkurien välitykselläM SV9 ei LLMM Sv10 lisääntyvä uudelleenMsv11huomautukset lähetetään If-None-Match / If-Modified-Since headers. Muutamat sivut palauttavat HTTP:n 304 ja välttävät uudelleenkäsittelynM SK2 ETagin tukemattomien serverien osalta , SHAMST4 sisältöhashes catch duplicatesMSC5
Kun kysely oli crawloitu, kysymys on täysin offline:
doomsummarizer scroll "how does authentication work?" --name example-docs
Euroopan unionin --name lippureittejä paikalliseen KB:hen verkkolähteiden sijasta. Samoja kolmeaM SK1lohkopyynnön tulipaloja : FTS+5 täytäntöönpanoa-tekstiä edeltävä toimenpide-filteriM SK6 sisällyttäminen HNSW-tutkimukseen, osapuolten profiili HNSD-tutkemukseen†. Ne ovat yhtymäyhteyksiäMSC9yhdistettyjä ja järjestettyjä~. Sama vähennysputki*, sama synteesisointi*M SK12 ei tarvita verkkoa
Storage on lightweight: SQLite metadataa ja FTS-tietokantoja varten5 indeksitM SK2 DuckDB HNSW:n vektoriindeksejä varten VSS-lisäverkon kanssa . Mitään ulkoisia palveluja ei ole saatavillaMSC4 Dockeria ei ole käytettävissäMST5 API-kysymyksiä ei ole käytössäMSV6 Sadat sivut sisältyvät muutamaan megabyteen ja kysymykset miljooniin sekunteihin.
doomsummarizer scroll "AI safety and regulation" --vibe doom --debug
Composite query detected: 2 subqueries
• What's new in AI safety?
• What are the latest AI regulations?
Searching...
├─ Lucene: 18 keyword matches (regulation^3, safety^2)
├─ Embedding: 12 semantic matches (max-sim across 2 subqueries)
├─ RRF fusion: 22 candidates, 6 signals
├─ Entity HNSW: +3 related via entity profiles
├─ TextRank: compressed 4 long articles
└─ Final: 12 items
Long-form: Phase 1 - 187 segments from 12 articles
Long-form: Phase 2 - "AI Safety Landscape" - 5 sections
Long-form: Phase 3 - Evidence assigned (cross-section dedup: 8 removed)
Long-form: Phase 4 - Generating sections...
Nämä ovat näkemykset.
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.