DoomSummarizer-:-DocSummarinizer-'-Jüngere, intelligentere Bruder (Deutsch (German))

DoomSummarizer-:-DocSummarinizer-'-Jüngere, intelligentere Bruder

Thursday, 29 January 2026

//

20 minute read

Tiefe Forschung ohne tiefe Taschen

Als ich in den Premium-KI-Tools landete, war ich neugierig, was das ist.,, also zog ich es auseinander... und sobald ich die Architektur verstand, realisierte ich, dass I', bereits das meiste davon gebaut wurde.

DoomSummarizer nutzt einen ähnlichen Workflow, aber sein Design optimiert das -"-Lesen -+-Reduzierprozess meist deterministisch und lokalisiert zu sein, mit dem Large Language Model - (-LLM.)-Reduktion vor allem für die Synthese verwendet

In diesem Ansatz beseitigt die Stärke des Reduktionsschrittes den Bedarf an einem großen, teuren Modell, um zufriedenstellende Ergebnisse zu erzielen.

Bemerkenswerterweise besaß ich bereits viele wesentliche Bausteine, darunter Multi-- source retrieval, die mit lucidRAG und der DocSummarizer Serie geteilt werden.

Die fehlende Komponente war kein Mangel an Fähigkeiten, sondern eher zu verstehen, wie man diese vorhandenen Elemente effektiv anwendet.

In den kommerziellen Werkzeugen, die ,...Deep Research... bedeutet normalerweise einen Workflow, der einen Forschungsansatz plant..., ist multi--.step searching... /.browsing./.reading quer durch viele Quellen ?(.often web?

Ein großer Teil des Wertes ist die Verbesserung der Eingabe- ,:' Pull in frischer , ,' höher als jedes Modell , ’'s Training Data Cut , -off date , und reduzieren Sie die Chance des Modells machen Dinge up ,.'

Beispiele OpenAI Deep Research, Tiefenforschung von ZwillingenL 347 vom 20.12.2013, S. 671. Komplexität vertiefte Forschung (, auch als “ bezeichnet, Forschungsmodus ” in ihren UI-/, Docs, ).

DoomSummarizer folgt dem gleichen Workflow, aber es wird entwickelt, so dass der größte Teil des “read-Verfahrens reduziert wird.”e Arbeit ist deterministisch und lokal und das LLM wird hauptsächlich für die Synthese verwendet.

Wenn der Reduktionsschritt stark ist, brauchen Sie ein großes, teures Modell, um ein gutes Ergebnis zu erhalten.

Zwischen LucidRAG und die DocSummarizer series--,- Ich hatte bereits die meisten der Bausteine -:- multi...--Quelle Retrieval ,,-Entitätsextraktion , ,-Wissensgraphen , ,-Einbettung ,--basierte Rangliste ,.

Das fehlende Stück war ,''t Fähigkeit , .' Es war OrchestrierungWie nehmen Sie all diese Signale und verschmelzen sie in etwas, das mit einem winzigen Modell zusammenhängt?

Dass ,''s DoomSummarizer , . , benannt nach doom scrolling , weil es doom Scrolls, so dass Sie nicht müssen , um ,. , Punkt es auf Ihre Quellen , die ?, , setzen eine Vibe , , , erhalten Sie eine Synthese .. ,

Aber dieser Artikel ist... über das Werkzeug... über die Ideen, die es funktionieren lassen.

GitHub-Freigabe

Das ist Teil von der DocSummarizer-Serie

Wenn du das Fundament zuerst haben willst

Dies ist auch ein Zeit Boxed Tool.


[Weitere Informationen:

Die Kernidee ,: , reduzierte RAG

Standard RAG macht bereits semantische Retrieval-Dokumente, :, Klumpendokumente, ,, embedded them, ,, und holt die meisten ähnlichen Brocken.

Der Schmerz ist der letzte Schritt, den du noch am Ende ein lautes Dumping von ,e überlappenden Haufen Brocken in eine LLM und bitten sie zu versöhnen Duplikate-,e wiegen Quellen... und halten Sie einen kohärenten Thread... Das funktioniert, ,e aber es drückt dich auf große Kontextfenster und teure Modelle...

Was, wenn du mehr Arbeit machst? Vorher die LLM sieht alles ?

Das ist das Muster. reduzieren, bevor Sie generierenNehmen Sie rohe Dokumente und deterministisch reduzieren sie zu ihren wesentlichen Signalen, Embeddings, ,, Ränge, Prägende Segmente, ,, Entitätsprofile, ., Bis die LLM alles sieht, ist die harte Arbeit erledigt.

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

Die Reduktionsphase ist deterministisch, die Embeddings – , – Ranking – , – Entitätsextraktion –, – TextRank-, – Segment Scoring – MSC5 – Keine LLM-Anrufe – MSV6 –

Synthesis ist der einzige LLM-Schritt.. Für eine Standardabfrage sind die reduzierten Signale sauber genug, dass Ein Anruf tut die Arbeit, .-Für lange, --Form Dokumente, ein Sentinel plant die Struktur und das Hauptmodell erzeugt Abschnitte in parallelen (-INSGESAMT Anrufe für N-Abschnitte

Für mehr Details zu diesem Muster siehe Reduzierte RAG.

Die Map-Phase von der Abfrage zu den Quellen

Bevor irgendetwas reduziert wird, muss die Abfrage Suchaktionen werden.

Ein kleines lokales Sentinel-Modell in meinem Fall: ,.JSON-Modus: ,.Temperatur: 0.1). interpretiert die Rohabfrage in eine strukturierte Intent:,. Dann verwandelt ein YAML.-.driven Source Router diese Absicht in Beton.

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

Der Sentinel extrahiert strukturierte Felder

  • Thematische Kategorien mit Konfidenzgewichten
  • Such-Intent - (-news - ,-QA-,-Forschung - Vergleich: , - howto-) -
  • Temporale Sensitivität (-breaking Heute / - Woche ) -
  • Benannte Stellen
  • Für zusammengesetzte Fragen – zersetzte Unterfragen – mit gelösten Pronomen –

Auswahl der Quellen geschieht in sechs Phasen

  1. Explizite QuellenBenutzer sagte: "from HackerNews" → hn geht gerade rein
  2. SuchanfragenDie optimierten Suchbegriffe des Sentinel' werden zu Vibe-. Qualifizierte API-Aufrufe der (.DuckDuckGo.,. Brave.,. Google News RSS.MSC6.
  3. Kategorie-RoutingThema Gewichte Karte RSS-Feeds über YAML-Konfiguration ..Eine Frage nach der Regulierung ".AI. und policy feeds
  4. Forschungsanreicherung: research oder deep_dive Absichten hinzufügen arxiv
  5. Anreicherung der EinrichtungBenannte Entities von NER erhalten ihre eigenen Gnews-Abfragen gnews:OpenAI)
  6. Boden der VielfaltWenn weniger als ausgewählte Quellen als Standard-,

Das Ergebnis: :-Quellenkennungen, die parallel mit Per---Quellschaltungen abgerufen werden

Vibes modifizieren die Suchbegriffe, bevor sie irgendeine API treffen. --vibe doom prefixes Abfragen mit Probleme im Zusammenhang mit RisikenUmformung, was zurückkommt, bevor ein Ranking passiert

Wenn Sie den Hintergrund auf der Resilienz-Bits wollen, sehen Polly für Retries verwenden (-Circuit Breaker, ) und Rückdruck in Queueing Systemen Begrenzer- und Gegendruckmittel (MSK)

Dekonstruieren der Abfrage

Die meisten Suchsysteme behandeln neue KI-Sicherheit und was sind die neuesten Vorschriften ,?" , wie eine Abfrage , . , es ist zwei .. , behandelt es als ein verdünntes beide ?. ,

Der Sentinel zersetzt zusammengesetzte Abfragen.

{
  "is_composite": true,
  "subqueries": [
    "What's new in AI safety?",
    "What are the latest AI regulations?"
  ]
}

Die interessante Wahl ist, was als nächstes geschieht.Jede Unterfrage bekommt ihre eigene ONNX Einbettung ..(.see ONNX-:-Laufen von ML Modellen vor OrtWenn Artikel gescort werden, nehme ich die maximale Kosinusgleichheit über alle Subquery-Embeddings, nicht den Durchschnitt, sondern

Warum Max-?-Ein Artikel, der perfekt antwortet "-AI Sicherheit sollte "-sollten nicht bestraft werden, weil nichts über "-regulationen gesagt wird.".- Averaging würde es unter mittelmäßigen partiellen Streichhölzern begraben. .- Max Ähnlichkeit bedeutet, wenn ein Artikel Nägel keine Teil deiner Frage... es erhebt sich... die Alternative... durchschnittlich... ..,... belohnt bland Artikel, die alles vage berühren...

Verbundene Heterogene Signale

Ich habe sechs Ranking-Signale, die völlig unterschiedliche Skalen haben.

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-Punkte gehen zu Tausenden – .-Kosin-Ähnlichkeit ist ,-1- bis .1.-Frischheit zerfällt exponentiell - .-Sie können sicher diese zusammen hinzufügen – .-Die Skalen sind inkompatibel -.-

Das Keyword-Signal hier ist BM ,25 , über mehrere Felder .( ,BM , 25 , F , ). , Wenn Sie den Hintergrund auf BM wollen , sehen DocSummarizer Teil.

Gegenseitigkeitsrang Fusion U.S.MS.K.Cormack et al..,.Löst dies durch Ignorieren von Rohpunktzahlen U.s.M.K3. jedes Signal ordnet Elemente unabhängig an, dann kombinieren Sie die Reihen: score = Σ weight × 1/(k + rank) ,( mit k=60).

Wenn Sie den vollen Hintergrund auf RRF-,-Teil möchten, decken Sie es ab.-Hier ist der Twist Gewichte passen sich dem Abfragetyp anDer Sentinel erkennt Intent-, und der Torschütze formt sich neu

  • Timeline-Abfragen Was heute passiert ist ?")Crank Frische nach oben und Qualität nach unten (Crecency zählt am meisten
  • Explainer-Abfragen Wie funktioniert Quantencomputer??") Wie macht das Gegenteil mehr als Neuheit?).
  • Roundups und Vergleiche haben ihre eigenen abgestimmten Profile

Vibes as a Retrieval Dimension

Dies begann als ein Witz... jetzt ist es... mein Lieblingsfeature.

Eine "-Vibe-" ist eine prompte Formulierung von .. Erstes --Klasse-Rankingsignal eingebettet in die Retrieval-Pipeline

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

Drei Dinge passieren, wenn Sie eine Vibe setzen.

  1. Abfrageerweiterung Suche wird mit Stimmung vorfixiert
  2. Einbettung der Stimmung Repräsentativer Text wird als Ziel eingebettet
  3. Ranking-Signal Artikel, die durch Cosine-Ähnlichkeit mit der Vibe-Einbettung erzielt wurden

Benutzerdefinierte Vibes funktionieren identisch --vibe "contemplative philosophical"Ihr Text wird sowohl zum Abfrage-Präfix als auch zum Ranking-Ziel.Das System unterscheidet nicht vordefiniert von custom... Es bettet einfach ein, was immer Sie ihm geben.

Entitätsprofile],-nicht entity Counts

Hier ist ein Fehler, den ich zuerst gemacht habe, indem ich geteilte Entitäten zwischen Dokumenten gezählt habe.

Zwei Artikel, die beide erwähnen

  1. Büro in Kalifornien kündigt Sicherheitsteam an
  2. Kalifornien Mandelbauern stehen vor Dürre"

Geteilte Entity count .: . . 1. . Daher verwandt .

Die Lösung war, über Entities als Vektoren zu denken .. . ."

Das ist die Eingeschränktes Fuzziness-MusterDas NER-Modell schlägt Entities vor, aber deterministische Gewichtung entscheidet, was zählt.

Jedes Dokument erhält eine gewichtetes Unternehmensprofil Kodierung des Vektors bei der Entitäten erscheinen und wie unverwechselbar sie sind

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 ist der Schlüssel, der in Tonnen von Artikeln erscheint.-... niedriges IDF-,... schwaches Signal....... OpenAI®"... ist unverwechselbares IDF9... dominiert das Profil....... jetzt Ähnlichkeit Sucharbeiten... .... Openai Artikel cluster together... .... Farming Artikel Cluster separat... .... Die geteilte "...Kalifornien... wird zu Lärm...

Der clevere Teil Sättigung von TFAnstelle der rohen Erwähnung count-, wende ich 1 + log(mentions)Eine Entität, die in einem langen Artikel erwähnt wird, erhält das Gewicht einer Person, die einmal erwähnt wurde... Es bekommt ,~5×.. Dies verhindert eine Überflutung des Profils durch boilerplate entities

Semantische Graphen-Entdeckung

Entitätsprofile sind ,' , nur für das Verständnis von Dokumenten , . , Sie , ' , eine Retrieval DimensionJedes Documen-Profil wird in einem HNSW-Diagramm indexiert.'s VSS-Erweiterung ),e ermöglicht die Entdeckung von semantisch verwandten Artikeln, die Schlüsselwortsuche vollständig verpassen würde.

Wenn Sie mehr Details über HNSW und DuckDB VSS-, möchten, siehe GraphRAG Teil 2:-Mindestlebend GraphRAG.

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

Dies funktioniert in zwei Phasen .:

Beim AbrufenWenn der Sentinel Entitäten aus der Abfrage extrahiert, wird ein Abfrage-Entitätsprofil unter Verwendung derselben TF-Formel berechnet... Dies durchsucht den HNSW Index nach Artikeln mit ähnlichen Entity-Fingerabdrücken.MSC5. Mit einer minimalen Ähnlichkeit von 0.25.. Ein Artikel über die Sicherheit von U".OpenAI betrifft Oberflächen, auch wenn er nie die genauen Abfragebegriffe erwähnt.,. weil sein Entity Profil durch hohe -.IDF dominiert ist.

Nach RangfolgeDiese aggregierte Suche nach verwandten Artikeln, die das Schlüsselwort und Einbettung Schichten verpasst vollständig gefundenen Artikel erhalten knapp unter dem niedrigsten Punkt gepunktet bewertet und als entdeckt markiert Über EntitätenDies fängt die primären Quellen, die Nachrichten Artikel Referenz aber don.'.t Zitat verbatim-..

Drei Retrieval-Schichten verschmelzen über union:- Lucene Schlüsselwort-Matches - Einbettung von HNSW-Maches - Entitätsprofil HNSK2-Makes - .- Union ist bewusst breiter als Schnittpunkt. Es fängt Gegenstände, die jedes einzelne Signal aufdecken würde.

Der Fallback-Pfad für Korpora ohne Entitätsprofile verwendet SQL entity co-.-®occurrence CountingHAVING shared_count >= 2Es funktioniert nicht, aber es funktioniert nicht. --backfill-entity-profiles Befehl migriert vorhandene Corpora zum HNSW-Pfad

Standard-Synthese: ein LLM-Aufruf

Dies ist der normale Pfad. scroll "AI safety and regulation" trefft dieses... nach der Reduktionsphase destilliert Ihre Quellen in geordnete ,, deduplizierte ,, Entity, -, profilierte Segmente...

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

Die Reduktionsphase tut die harte Arbeit... bis das LLM alles sieht, was es empfängt.

  • Nur Top-ArtikelRelevanz Boden bei der besten item , ' score ,, , URL , - , dedupliziert
  • QuellenvielfaltFür Rundum-Abfragen bei den Einträgen pro Domäne von 3 eingeschlossen
  • Semantisches Re---RankingElemente, die durch Cosine-Ähnlichkeit zur Einbettung der Abfrage angeordnet werden
  • Intelligente Evidenz-BudgetsKurze Gegenstände spenden unbenutztes Charakterbudget an lange Gegenstände.
  • Strukturierte Beweisblöcke: [E1] Title | topic | relevance mit dem Inhalt in den Haushalt gekürzt

Eine LLM-Anrufe, die die Auszahlung von Verringerung der RAG:-Auswahl,-Ranking,-deduplizieren und Budgetierung alles passieren, bevor die LLM sieht, was alles

Die lange ,- , Form Pipeline , : Beschränkte parallele Generation

Langform --Form--template blog-article) ist ein anderes Biest, das aus Dutzenden von Quellen ein Multi---Sektionsdokument erzeugt und Sie brauchen Kohärenz über Abschnitte hinweg ohne teure LLM-Kompressionsaufrufe.

Die Antwort lautet: **eingeschränkte fuzzy Kontext ziehen**Dies sind deterministische Mechanismen, die die Kohärenz der cross---Abschnitte wahren und gleichzeitig eine parallele Generation ermöglichen.

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

Zählen Sie die LLM-Aufrufe. 1 Umrisse von ), +, 1 (-intro-)-+- N Körperteile aus ), +, 1 Schlussbemerkung INSGESAMTVier der sechs Phasen sind deterministisch.

Beschränkte Fuzzy Kontext Drackging

Das Problem mit der parallelen Sektionsgenerierung ist die Kohärenz..-Wenn Abschnitte nicht wissen, was andere Abschnitte gesagt haben, erhalten Sie Wiederholung und Drift. .-Der übliche Fix ist die sequentielle Erzeugung mit vollem Kontext.

Stattdessen erhält jeder Abschnitt ein eingeschränkter Kontext dass-'s gebaut deterministisch -:

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
  • Zusammenfassung,, nach jedem Abschnitt MSK1, dem oberen --Evidenz-Evidence-Segment (200, wird chars), aufgezeichnet ., neuere 2, erhalten volle Verdauung ;, ältere Abschnitte erhalten Überschrift +, erster Satz ., Gesamtbudget :, Zeichen 1400, keine LLM Zusammenfassung
  • Negative AufforderungenDie abgedeckten Konzepte werden extrahiert.(.proper Substantive, technische Begriffe, Überschriften, Schlüsselwörter, max. Besprechen Sie diese Themen NICHT bereits abgedeckt.
  • Kontinuität der StelleEntities, die nicht in den Abschnitten von 2+ erwähnt werden, erhalten eine Markierung für die Wiedereinführung der ..Aktive Entities werden vor kurzem erwähnt.). werden verfolgt. .. Die LLM erhält Führung. "-Re---Einführung, falls relevant, :-Entität, 1-Engineering, zuletzt erwähnter Abschnitt :-Eigner
  • DriftdetektionDie ersten Zeichen von 1000 sind eingebettet und mit dem Thema plan embedding verglichen. Wenn die Kosinusgleichheit unter 0.35 für aufeinander folgende Abschnitte fällt, wird die Einbettung des Themas aus den ersten Abschnitten der . rekalibriert.

Im Parallelmodus erzeugt das Intro erste -(-Sets der Ausgangskörperabschnitte von ),, die parallel zu ( auf 3 laufen. SemaphoreSlim zu cap concurrency-,-jedes ausgenommen intro Themen, aber nicht einander und die Schlussfolgerung läuft letzten (-Ausnahme alles

Sequentieller Modus gibt eine engere Kohärenz jeder Abschnitt schließt alle früheren Konzepte kumulativ aus.),, aber parallel ist -~3,x schneller für große Dokumente.

Evidenz-Zuweisungen:-Das Herz der reduzierten RAG

Jeder Abschnitt braucht Beweise, aber nicht keine evidence-.-Jedes Segment erhält eine Kompositpunktzahl-MSC1- .60%-Thema Ähnlichkeit Der Abstand des Kosinus zum Abschnitt des Themas der Einbettung von ), WICHTIGSTE GESUNDHEIT Wie informativ das Segment ist, ), und Relevanz des Artikels Wie relevant der Quellartikel insgesamt ist, diese Bewertung ist völlig deterministisch, keine LLM entscheidet, was relevant ist, .

Dann die Tore

  • Salience boden Qualitätssegmente erreichen das LLM nie
  • Thema Ähnlichkeitsfläche (0.45): Auswärts-Auswärtstopische Beweise bleiben aus
  • Querschnittsabfolge Die gleiche Tatsache erscheint zweimal
  • Per---Quellenkappe Segmente pro Artikel pro Abschnitt – keine einzelne Quelle dominiert
  • Rollenbewußtsein der FachgruppeIntro-Abschnitte bestrafen technische Details. Spätere Abschnitte belohnen es.
  • Abfrage des Kohäsionstors Der Nachweis muss sich auf die ursprüngliche Abfrage beziehen, nicht nur das Abschnittsthema.

Die LLM-Zielwortzahl passt sich an die Evidenzqualität an..-starke Evidence-Evidenzen. (-Salience-Segmente, )-Signmente und →-Vollwortanzahl.MSC9-Schwachzeichen, <-Sility-Soldaten, MSC13-Skala, MSC14-60%-Ziel: .-Sliance verhindert Halluzinationen, wenn der Evident dünn ist.

Propositionsextraktion – :-Dense---X in der Praxis

Vor Beweisen erreicht das LLM-, , es ,' , atomisiert in Sätzen , ( inspiriert durch die Dense---X Retrieval PapierJedes Segment ist in sechs Arten atomarer Tatsache unterteilt. Forderungen Allgemeine Tatsachenbehauptungen Zitate Direkt aus der Quelle Statistik Zahlen und Metriken Begriffsbestimmungen ("-X ist Y-"),-X Prozesse (-step---by---stepe-),- und Name der Einheit Fakten Konzentriert auf eine bestimmte Entität

Jeder Abschnitt erhält .~15-Propositionen . ,-dedupliziert über Abschnitte mit semantischer Ähnlichkeit . (-not string matching .).-Die LLM empfängt strukturierte Kugelpunkte gruppiert nach Quelle .

Bis das LLM einen Abschnitt schreibt, hat die Reduktionsphase es gegeben.

  • Eine klare Überschrift und ein Thema
  • Kuratierte Evidenz-Segmente Qualität
  • ~15 atomare Propositionen Zitate , Statistiken , Entitäten )
  • Eine laufende Zusammenfassung dessen, was die vorangegangenen Abschnitte bereits behandelt haben
  • Negative Aufforderungen für was nicht zu wiederholen
  • Leitlinien für die Kontinuität des Unternehmens

Ein kleines Modell kann ausgezeichnete Arbeit mit dieser Art von Pre---Verarbeitung tun.

TextRank-:-Deterministische Zusammenfassung

Wenn Artikel für die Evidenz-Pipeline zu lang sind, muss ich sie komprimieren, aber ich will nicht einen LLM-Aufruf auf Zusammenfassung verbringen.

TextRank (-Mihalcea - Tarau-,-2004)-Tut es deterministisch -:-

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

Jeder Satz erhält eine Einbettung.. pairwise Ähnlichkeiten oberhalb von 0.15 werden zu Graphkanten. . , PageRank findet die meisten Zentral die Sätze, die am meisten mit allem anderen verbunden sind, sind jene, die das Dokument am besten repräsentieren.

Die ausgewählten Sätze werden zurückgegeben in Original-DokumentenreihenfolgeDieses konserviert narrativen Fluss... Sie erhalten eine kohärente Zusammenfassung... nicht einen zufälligen Beutel von wichtigen Sätzen...

Keine LLM-Anrufe, die in Millisekunden ausgeführt werden TensorPrimitives (System.Numerics.TensorsAusgewählt zur Laufzeit

Artikel Nachschlagewerk andere Artikel Diese Referenzen enthalten oft die besten Belege, dass ein Nachrichtenartikel zusammenfasst.

DoomSummarizer folgt Links-,, aber selektiv.., Jeder Kandidat Link wird gewertet.

link_score = 0.7 × query_relevance(anchor_context) + 0.3 × segment_salience

Wo Segment Salience kombiniert wird

  • Position Frühere Absätze zählen mehr
  • Begründetheit Länge des Absatzes und Informationsdichte

Links unter einer Relevanz Boden -(0.15) suppped .. . Das System folgt der journalistischen invertierten Pyramide heuristic . : . wichtige Links neigen dazu, früh in gut erscheinen .

Die Ergebnisse werden mit Content-Hashes gecached und ETags-.-Second Runs sind schnell. Ansprech-Caching-,-ETags-,- und Bedingte Anfragen.

Crawl-Modus: Build eine lokale Wissensbasis

Alles, was bisher beschrieben wird, geht davon aus, dass Web-Hotching... Aber du kannst das Netz komplett überspringen.

crawl nimmt eine Website in eine lokale Wissensbasis ein Es tut eine Breite ,- , erste Crawler , ( , BFS , ) , von einer Samen-URL , die Tiefe und Seitengrenzen respektieren , mit adaptiver Geschwindigkeit begrenzt , dass Verzögerung auf Server Reaktionszeiten basiert , : ,

doomsummarizer crawl https://docs.example.com --name example-docs --depth 3 --max-pages 200

Alles wird persistent ,: , voller Inhalt , , ONNX Einbettungen , , , Entitätsprofile , , , SQLite FTS , 5 , Schlüsselwort-Indizes , S( , Volltext-Suche, ), , Sentiment- und Themenergebnisse ,( , berechnet über Einbettungsanker , ohne LLM-, ). , Inkrementale Re... If-None-Match / If-Modified-Since Kopfzeilen.-Unveränderte Seiten geben HTTP zurück und überspringen die Wiederaufbereitung.-Für Server ohne ETag-Unterstützung,-SHAM256-Inhalt hasches fangen Duplikate.-

Einmal gekribbelt, ,-Abfrage komplett offline,:-Abfragen

doomsummarizer scroll "how does authentication work?" --name example-docs

Das --name Flagge Routen zu den lokalen KB anstelle von Web-Quellen Die gleichen drei ,-'layer Retrieval Brände , : , FTS , 5 , voll , - text pre ,- , Filter , HNSW Suche , , , Entitätsprofil HNSK8 , Sie sind Gewerkschaft , und gereihte .. , gleiche Reduktion Pipeline ,...

Der Speicher ist leichtgewichtig.:-SQLite für Metadaten und FTS-5-Indizes,-DuckDB mit der VSS-Erweiterung für HNSW-Vektorindizes.-Keine externen Dienste,-Keine Docker-,-keine API-Schlüssel.-Eine gekrochene Wissensbasis von Hunderten Seiten passt in ein paar Megabytes und Abfragen in Millisekunden.-

Zusammenstellen

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...

Die Ideen, die es bewirkten

Dies sind die Einsichten, die sie in Ihren eigenen Systemen verwenden.

  1. Reduzieren, bevor Sie generierenDer Standardweg benötigt nur einen LLM-Anruf, weil die Pipeline das schwere Heben deterministisch erledigt. Reduzierte RAG ist das Muster, das die Embeddings, ,, PageRank-,, heuristics, und Qualitätstore so sauberen Eingang produziert, dass auch kleine Modelle gut synthetisieren
  2. Sentinel---getriebenes QuellroutingEin kleines Modell interpretiert Abfragen in strukturierte Intentionen., , dann YAML- ,- ,gesteuertes Routing wählt und vibe , - , qualifiziert Quellen , . , Das Sentinel ist billig genug, um jede Anfrage anzurufen ,. ,
  3. Maximale Ähnlichkeit für zusammengesetzte AbfragenEin Artikel, der einen Teil deiner Frage nagelt, ist besser als eine Hälfte, die alles zusammenpasst.
  4. Ranks kombinieren – nicht PunkteMit RRF können Sie Signale mit inkompatiblen Skalen fusionieren.
  5. Vibes als EinbettungenJeder Text kann eine Retrieval-Dimension sein ,. , es einbetten , , , Score gegen sie , , , Gewicht es in RRF , . , Keine speziellen Fälle erforderlich ,
  6. Entitätsprofile als VektorenNicht Entity-String zählend Seltene Entities dominieren das Profil Die gemeinsamen Entities werden zu Rauschen und die Suche nach HNSW entdeckt verwandte Artikel in O.(®log N.MSC7
  7. Beschränkter Fuzzy-Kontext ziehen: deterministisches Kontextmanagement ermöglicht die parallele Sektionsgenerierung – .-Ausführung von Zusammenfassungen – , – negative Eingabeaufforderung –,-Entitätskontinuität – ,- und Driftdetektion – erhalten Kohärenz ohne LLM-Kompressionsanrufe – .-
  8. Deterministisch, wo möglichTextRank ersetzt die LLM-Zusammenfassung... Evidence-Zuweisung ersetzt die Auswahl von LLM.

Aufkommen

Verwandte Artikel

Auch

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.