This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
Thursday, 29 January 2026
Глибокі дослідження без глибоких кишень.
Коли "Deep Research" приземлився на високоякісних штучних інтелектівM SK2 я був цікавим : що це за штука МSK4 власне, МSK5 Я розтягнув її на шматки МСК6 І як тільки я зрозумів архітектуру М СК7 я зміг усвідомити, що М С К 8 я вже збудував більшість з неї М S К 9
В такому підході стійкість кроку до зниження eliminує потребу у великих, дорогих моделях, щоб отримати задовольняючі результати
Зокрема, МСК0 Я вже мав багато важливих будівельних блоків, МSK1, в тому числі багато МСК2, пошук джерел, МСК3, видобуток об 'єктів, ММСК4, графи знань, МНСК5 і вбудова, МПСК6, рейтинги на основі, МУСК7, які поширюються з lucidRAG та серії DocSummarizer.
Відсутня складова була не браком можливостей, а розумінням, як ефективно застосовувати ці існуючі елементи.
У комерційних інструментах
або
Значајне
або
Конnotativlow, що планує дослідницький підхід, робить багатоM SK1вишук кроків/обкладання /читування через багато джерел MSC4частенько веб МSK5 ваш завантаженийMska6зв 'язані файлиM Ska7 потім пише довший звіт з цитатамиMска8
Більшою частиною цінності є покращення вхідних даних: МСК0, більше свіжих сигналів, МСК1, вище, МSK2, джерело сигналу, ніж будь-яка модель; МСК3, скорочення тренувальних даних; МSK4, дата відліку; ,, ground claims in evidence. МSK6, і зменшення шансів, що модель зробить все правильно. МСК7
Приклади: Дослідження на основі OpenAI, Дослідження про жінку, і Дослідження Perplexity Deep ( також називається МSK1моди дослідженняM SK2 в їхньому інтерфейсі /docs).
DoomSummarizer слідує за тим самим робочим процесом ,, але він’ є розроблений таким чином, що більша частина M SK2 читає МSK3 знизує МSK4 робота є детерміністичною і локальноюMSC5, а LLM використовується в основному для синтезу.
Якщо знизити крок є сильним, то вам не потрібна велика модель, щоб отримати хороший результат.
Між lucidRAG і серію DocSummarizer, У мене вже було більшість будівельних блоківM SK1 мультипліденція - пошук джерел МSK3 видобуток об 'єктів М SK4 графи знань M SK5 введення - рейтинг з базою на МSK7
Поганий шматок був "'", МSK1 , оркестрування. Як ви візьмете всі ці сигнали і поєднаєте їх у щось узгоджене з крихітною моделью
Те, що's DoomSummarizerM SK1 Названо після прокрутки проколу, тому що він прокручує прокол, тож ви не маєте ' мусите МSK4 Помічати його на ваші джерела M SK5 встановити вібрацію
Але ця стаття не про інструмент, а про ідеї, які роблять його дієвим.
Це Частина 5 з серии DocSummarizer.
Якщо ви хочете побудувати ланцюг спочатку:
Це також Устром із коробкою часу.
Стандартний РАG вже робить семантичне відтворення: уривок документів, вміщує їхM SK2 і дістає верхні -k найпохожіші уривкиMSC4
Біль - це останній крок. МСК0, ви все ще закидаєте шумний пакет фрагментів в LLM і просите його узгоджувати екліпи. МSK2, важить джерела, МSK3 та зберігати послідовну нитку. МСК4. Це працює. М СК5, але це підштовхує вас до великих контекстних вікон та дорогих моделей. M СК6
Що, якби ви зробили більше роботи до цього LLM бачить все.
МSK0 - це модель . зменшити перед тим, як генерувати. Візьміть сирові документи і детерміністично скоротить їх до їхніх основних сигналів : вбудовані МSK2 ранги M SK3 виділені сегменти М SK4 профілі об 'єктів . До того часу, як ЛЛ побачить що-небудь
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
Фаза зниження є детерміністичною МСК0 вбудовані коди МSK1 рейтинги , виділення об 'єктів МСК3 TextRank М СК4 відлік сегментів M СК5 Ніяких LLM дзвінків MСК6
Синтез є єдиним кроком LLM. Для стандартного запиту зменшені сигнали достатньо чисті, щоб один дзвінок робить роботу. Для довгихM SK1формних документів, офіцер планує структуру, а головна модель генерує секції паралельноN+3 виклики N секцій).
Для більш детального опису цієї моделі, читайте Reduced RAG.
Перед тим, як щось зменшиться,, запит має стати пошуковим актом.
Невелика локальна модель sentinel (0.6B у моєму випадку, tryb JSONM SK2 температура 0.1) інтерпретує сирове запитання в структурований намір МSK4 тоді YAML МSK5 керований джерелом роутер перетворює цей намір на бетонні приймачі \ .
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
В 'язник виділяє структуровані поля:
Вибір джерела відбувається в шести етапах:
"from HackerNews" → hn йде прямо вresearch або deep_dive наміри додавати архівgnews:OpenAI)Результат:: M SK1 идентификатори джерел приймаються паралельно з розривом вихідного кола.
Виби змінюють терміни пошуку перед тим, як вони потрапляють до будь-якого API. НаприкладM SK1 --vibe doom запити про префикси з "реагування на проблеми ризикує проблемами в МSK1, переосмислення того, що повертається до рейтингу перед тим, як він з 'являється
Якщо ви хочете відобразити фон на бітах стійкості, см. Використовуючи Polly для звільнення (розривники схемиM SK1 і Вказівний тиск в системах чергування (limitation rate and backpressureM SK1
Більшість пошукових систем сприймають: " Що ' є новим у галузі безпеки ШІ і якими є останні нормативні акти МSK2 як одне запитання МSK3 Це СМС4 два МСК5 Якщо розглядати це як одне, то розчиняють обидві СМС6
Сентенель розкладає складні питання:
{
"is_composite": true,
"subqueries": [
"What's new in AI safety?",
"What are the latest AI regulations?"
]
}
Цікавим варіантом є те, що відбувається далі. Кожна підзапроска отримує власний вбудований ONNX (гляньте NX: Програмування моделей ML локально). Коли я встановлюю бал ArticlesM SK1 Я беру Максимальна схожість косину серед усіх вбудованих підзапросів, не середнійM SK1
Чому max? Artykuł, який чудово відповідає за M SK1безпеку штучного інтелекту " не повинен МSK3 бути караним за те, що нічого не говорить про МSK4регуляції M SK5 Перетягування покладає його під середньостатистичних частинних комбінацій будь-яке частина вашого питання, він зростаєМSK1 АльтернативаM SK2 середнє оцінювання, винагороджує легкі статті, які невідомо торкаються всьогоMSC4
У мене є шість сигналів рейтингу. Вони мають зовсім інші шкалиM 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 точки рухаються на тисячі. Схожість косину M SK1 до 1. Frischeness decays exponentially
Ключевим сигналом тут є BM25 по багатьох полях M SK1BM25FMSC3 Якщо ви хочете, щоб фон на BM 25, бачите DocSummarizer Part 3.
Об 'єднання рангів (Cormack et alM SK1 2009) вирішує це, не звертаючи уваги на сирові показники МSK3 кожен сигнал класифікує елементи незалежно М SK4 тоді ви поєднуєте ранги: score = Σ weight × 1/(k + rank) (с k=60).
Якщо ви хочете повний фон на РРФ, Частка МSK1 покриє йогоM SK2 Тут поворот є вага адаптується до типу запиту. Сенітель розпізнає наміри ,, а зірер перетворюється на саму себе МSK2
Це почалося як жарт.
"vibe перший сигнал рейтингу класу МСК0 . вбудований у ретривалий канал:
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
Три речі відбуваються, коли ви встановлюєте вібрацію:
Custom vibes працюють однаково. --vibe "contemplative philosophical"- Ваш текст стає як префіксом запиту, так і ціллю рейтингу . Система не розрізняє МSK2 заздалегідь визначені з нашими за замовчанням МSK3 Вона просто вміщує все, що ви йому даєте
Тут: МСК0 - помилка, яку я зробив спочатку . : - розрахунок спільних об 'єктів між документами .
Два статті обговорюють: "КалифорнияM SK1
Число об 'єднаних podmiotів: M SK1 Через це пов' язані! Очевидно неправильні .
Треба було думати про сутності як про вектори, а не про струниM SK1
Це обмежений візерунок неясності: модель NER запропонує об 'єкти ,, але детерміністичне вагу вирішує, що має значення МSK2
Кожен документ отримує вважений профіль об 'єкта (a МSK1dim векторний кодування які entités з 'являються і наскільки вони відрізняються):
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
ІДФ є ключемМSK0 "КаліфорніяM SK2 виникає в тоннах статей МSK3 нижчий ІДF М SK4 слабкий сигнал . ♫ МSK6 Відкрита штучний інтелект МСК7 характерна МСК8 високий ІДР М СК9 домінує в профілі MСК10 Зараз пошук схожості працює ММСК11 кластер OpenAI статей разом МПСК12 кластері сільськогосподарських статей окремо МНСК13 Поширений MМСК14 Каліфорнія\ МАСК15 стає шумом МУСК16
Розумна частина: Насилення TF. Замість необробленого підрахунку, я використовую 1 + log(mentions). Об 'єкт, згаданий МSK1 разів у довгому artykule, не має МSK2 не отримує 50× маси одного з них, згадуваного один раз МСК4 він отримує \ ~5×. Це запобігає потопленню плити котла
Профіліエンтів - це не тільки для розуміння документів, вимір пошуку. Кожний докуменM SK1t' профіф об 'єкту indeksується в графі HNSW МSK3DuckDBMSC4с VSS розширеннямMスク5 що дозволяє OMSSK6log NMСК7 відкриття речей, пов' язаних із семантичною теорією, які б повністю пропустили пошук по ключевым словам .
Якщо ви хочете більше інформації про HNSW та DuckDB VSS, читайте GraphRAG частина 2: Minimal Viable Graph RAG.
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
Це працює на двох етапах:
Під час пошуку: коли вартовий витягує МSK1 об 'єкти з запиту,, то комп' ютер обчислює профиль об' єктів запиту за допомогою тієї ж формули TFMSC3IDFM SK4 Це шукає в індексі HNSW статті з подібними відбитками пальців об 'єкту , з мінімальною схожістю на МSK6 Artykuł про мSK7OpenAI проблеми з безпекоюMСК8 поверхневі, навіть якщо він ніколи не згадує точних термінів питанняМСК9 тому що його profil об 'єктів MMСК10 домінує високим показникомМ СК11IDP МСК12Open AIM СК13 МКСК14 \МСК15безпека\МССК16 близький до запиту
Після рейтингу: найвищі МSK1 рейтинговані речі мають середні профілі в сукупному векторі . Цей сукупний пошук шукає пов 'язаних статей, які повністю пропустили ключове слово та вбудовані шари МSK3 Найдені статті отримують балівку просто нижче найнижчого рейтингового елементу МСК4 і позначені так, як виявлено "за допомогою podmiotівM SK1. Це захоплює головні джерела, на які звертаються новини, але не
Три шари розпізнавання об 'єднуються через union: Лаценний ключевое слово співпаде M SK1 вбудова HNSW співпадає ∪ профілі об' єктів HN SW співпадє МSK3 Союз навмисно ширший, ніж перехрестя МSK4 Він ловить речі, які могли б видаватися будь-якими одними сигналами
Путь зворотнього зв 'язку ( для корпорацій, у яких немає профіферів об' єктів, але ) використовує код об 'єктів SQLHAVING shared_count >= 2). Це працюєM SK1, але це 's OMSC3N²) замість OМSK5log NMNK6 --backfill-entity-profiles команда мігрує існуючі корпорації на шлях HNSW.
Це звичайний шлях. scroll "AI safety and regulation" hits this. After the reduce phase distils your sources into ranked, deduplicatedM SK2 entityMska3profiled segmentsMска4 synthesis is a single callM Ska5
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
Фаза скорочення робить важку роботу. Коли LLM бачить щосьM SK1 він отримує:
[E1] Title | topic | relevance з змістом, скороченим до бюджетуОдин LLM: МСК0 , що "'" - це винагорода зменшений рівень RAG: вибір МSK1 рейтинг , відокремлення МSK3 і бюджетування все відбувається до того, як ЛЛМ побачить щось
Довгий-форм M SK1--template blog-article) - це інший божевільник . Ви МSK2 генеруєте мультипліковий МSK3 секційний документ з десятків джерел мSK4 і вам потрібна послідовність по всіх секціях без дорогих LLM комп ’ ютерних połączeń
Відповідь: обмежене просте перетягування контексту. Це детерміністичні механізми, які зберігають послідовність перетинів -, водночас дозволяючи паралельне генерування МSK2
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
Перерахуйте LLM дзвінки: 1 (сантинельний контурM SK1 МSK2 1 МSK0intro) M SK2 N МSK0body sections) M SK2 1 МSK0конkluzія) M SK2 N+3. Чотири з шести фаз - детермінативни
Проблема з генерацією паралельних секцій - це когерентність.. Якщо секції не знають, що інші секції сказали. , ви отримуєте повторення і дрейф. МSK3 Зазвичай регулює послідовне генерування з повним контекстом.
Натомість, each section gets a обмежений контекст що МСК0 будується детерміністично .
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
У паралельному режимі , інтро генерує перший ( встановлює базову лінію МSK2 частини тіла запускаються одночасно SemaphoreSlim закінчити співпадіння, кожен із яких не включає в себе вступні теми, але не один одного ), і висновок виходить на останній раз M SK2 виключаючи все ).
Последовательний режим дає більшу послідовність ( кожна секція виключає всі попередні концепти кумуляційно ), але паралельна є МSK2x швидша для великих документів МSK3
Кожен відділ потребує доказів, але не будь-яке докази. Кожен сегмент отримує композитний балM SK1 60% схожість тем ( відстані косину до секції ' вбудова тематики МSK2 25% привабливість ( наскільки інформаційним сегментом є 15% важливість статті ( наскільки відповідним є загальноприйнятий текст джерела ). Ці оцінки повністю детерміністичними МSK2 Жоден ЛЛМ не вирішує, що
А потім ворота
LLM регулює кількість слів на основі якості доказів. Сильні докази M SK1 лагідність МSK2 МSK3 \2+ джерела, | 4+ сегментиMSC7 | МSK8 повний відсоток слівMSL9 слабкі докази ♫ ( глянцевість ♫< ♫ ♫ МSK12 ♫ розсіяні ♫МSK13 \ \ МSK14 \ 60% \ з цілями ♫ Ми уникаємо галюцинацій, коли докази є тонкими \
До того, як докази дістаються до LLM , це ' атоmised в propositions МSK2 вдохновлені Хворий-X Довідникeach segment is broken into six types of atomic fact roszczenia (загальне усвідомлення фактівM SK1 цитати (прямо від джерелаM SK1 статистика МSK0номера та метрики), визначення ("X - YM SK1 процеси (штовп МSK1по мSK2шт МSK3 і факти ( зосереджена на певному об 'єкті
Кожна секція отримує ~15 пропозиції , відокремлені через секції, використовуючи семантичні подібності МSK2не співпадіння струн МSK3 LLM отримує структуровані кулі точки, груповані за джереломM SK4 не сирові абзаци.
До того часу, як LLM пише секцію,, знижний етап дав йомуM SK1
Невелика модель може виконувати чудову роботу з таким типом підготування
Коли статті надто довгі для потоку доказів, я мушу їх стиснути. Але я не хочу витрачати LLM на підсумки.
TextRank (Mihalcea МSK1 TarauM SK2 2004) робить це детерміністично:
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
Кожна речення отримує вбудовані. Поперечно схожості вище M SK1 стають крапочками графу. PageRank знаходить найбільше центральний речення, ті, що найбільш пов 'язані з усіма іншими . Це речення, які найкраще представляють документ
Key detail: вибрані речення повертаються в оригіналному порядку. Це зберігає розповідальний потік . Ви отримуєте koherentний підсумок МSK2 не випадковий пакет важливих речень
Жодного LLM дзвінка. Забігає в мілісекундіM SK1 Схожість косину SIMD- прискорюється за допомогою TensorPrimitives (System.Numerics.Tensors) МSK1AVXM SK2 AVX -512, або ARM NEON, вибрані в часі запуску МSK5
Articles reference other articles. those reference often contain the best evidence - the primary source that a news article summarisesM SK2
DoomSummarizer слідує за зв 'язками , але вибірково. Кожна з кандидатів отримує балиM SK2
link_score = 0.7 × query_relevance(anchor_context) + 0.3 × segment_salience
Там, де з 'єднується сегментова привабливість
Ссылки, що знаходяться за межами релевантності (0.15) пропущені МSK1 Система слідує журналістичному зворотньому пираміаду эвристики МSK2 важливі зв 'язки мають тенденцію з' являтися в ранньому віці
Результати зберігаються в кэші за допомогою хешів контенту та ETags. Другий запуск швидкийM SK1 Погляньте Caching відповідей , ETags, та умови.
Все, що описано до цього часу, припускає пошук в Інтернеті. Але ви можете повністю пропустити веб.
crawl вводить веб-сайт у локальну базу знань. Він робить широтуM SK1перший клік MSC2BFS) з семянної URLМSK4 враховуючи глибину та обмеження сторінокMスク5 з пристосовальним обмеженням частоти, що вимірює запізнення на основі часів реагування сервера
doomsummarizer crawl https://docs.example.com --name example-docs --depth 3 --max-pages 200
Все залишається незмінним: повний змістM SK1 вбудовані на NX , профілі об 'єктів МSK3 SQLite FTS M SK4 індекси ключевых слов ( повне - пошук тексту MSC7 показники почуття та тем Mska8 обчислені за допомогою вбудованих якорів M Ska9 без LLM MSKA10 Посилання зростаючих результатів If-None-Match / If-Modified-Since заголовки. Невимінні сторінки повертають HTTP 304 і перекидають переробкуM SK2 Для серверів без підтримки ETag, SHAMSC4 content hashes catch duplicates
Як тільки заглиблено, питання повністю відключено:
doomsummarizer scroll "how does authentication work?" --name example-docs
І --name маршрути на локальний кіб замість веб-ресурсів. ті ж три - спалахи відтворення ланцюгаM SK2 FTS5 повне M SK4 передвиборні тексти МSK5 фильтр М SK6 введення пошуку HNSWМSK7 профілі об 'єкту пошуку HNSW . Вони є союзамиMSC9 поєднані та класифікованіMNK10 той самий редукційний трубопровід
Утримка легка: SQLite для метадань та FTSM SK1 індекси, DuckDB з VSS розширенням для векторних індексів HNSWMSC3 Ніхто не надає сторонніх послуг , немає ДокеруMST5 немає API-клавішів МST6 База знань, що складається з сотень сторінок, вміщується в кілька мегабайт і за queries в милісекундіMst7
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...
Ось що ми розуміємо. МСК0 Візьміть їх, МСК1 Застосуйте в своїх власних системах
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.