गहरी Pockets के बिना गहरे अनुसंधान
जब ‘"’‘Deep Research’‘"’ प्रीमियम एआई उपकरणों में उतरा, तो मैं उत्सुक था। ’:’ यह क्या है?
इस दृष्टिकोण में ह्रास चरण की मजबूती से संतोषजनक परिणामों को उत्पन्न करने के लिए एक बड़े ऊँचे मॉडल की आवश्यकता समाप्त होती है
विशेष रूप से, मैं पहले से ही कई अनिवार्य निर्माण खंडों को प्राप्त कर चुका था।
missing component was not a lack of capability, but rather understanding how to effectively apply these existing elements
वाणिज्यिक उपकरणों में-, “Deep Research” सामान्यतः एक कार्य का अर्थ होता है
या
महत्वपूर्ण
या
एक अनुसंधान दृष्टिकोण की योजना के नीचे सारांशः, multi करता है। - चरण खोज करता है; / ब्राउज़ करता है. / अनेक स्रोतों पर पढ़ता है।
मूल्य का एक बड़ा हिस्सा इनपुट को सुधारना है।
उदाहरण ओपनएआई गहन अनुसंधान, जेमिनी गहरा अनुसंधान, और जटिलता गहन अनुसंधान (उसके UI में भी कहा जाता है
DoomSummarizer एक ही कार्यप्रणाली का अनुसरण करता है।
यदि ह्रास चरण मजबूत है, तो आपको अच्छा परिणाम प्राप्त करने के लिए एक बड़ा मॉडल की जरूरत नहीं है
बीच सुस्पष्टRAG और DocSummarizer श्रृंखला, मैं पहले से ही निर्माण खंडों का अधिकांश था।
अनुपस्थित टुकड़ा था orchestrationकैसे आप इन सभी संकेतों को ले जाते हैं और उन्हें एक छोटा मॉडल के साथ किसी सुसंगत चीज़ में सम्मिलित करते हैं
That's DoomSummarizer
लेकिन यह लेख उपकरण के बारे में नहीं है।
यह है भाग 5 DocSummarizer श्रृंखला के
अगर आप मूल कार्य पहले चाहते हैं
यह भी एक है समय बाकस उपकरण.
मानक आरएजी पहले से ही सेमेंटिक रिट्रीव करता है
दर्द अंतिम कदम है।
क्या अगर आप अधिक काम करते हैं पहले एलएलएम कुछ भी देखता है
कि, ', पैटर्न है आप उत्पन्न करने से पहले कम करें. कच्चे दस्तावेज ले लो और निश्चित रूप से उन्हें उनके अनिवार्य संकेतों के लिए कम कर दें।
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 एन सेक्शनों के लिए कॉल
इस पैटर्न पर अधिक विवरण के लिए देखें कम RAG.
किसी भी चीज़ को कम करने से पहले क्वेरी को खोज कार्यों के रूप में जाना चाहिए
एक छोटा स्थानीय sentinel मॉडल (0.6B मेरे मामले में-, JSON मोड-में, तापमान-0.1) कच्ची क्वेरी को एक संरचनात्मक अभिप्राय के रूप में व्याख्या करता है।
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
sentinel संरचनात्मक क्षेत्र निकालता है
स्रोत चयन छह चरणों में होता है
"from HackerNews" → hn सीधा अंदर जाता हैresearch या deep_dive अभिप्राय अभिलेख जोड़ेंgnews:OpenAI)परिणाम प्रति स्रोत परिपथ विच्छेदन के साथ समांतर रूप से लाया गया स्रोत पहचानकर्ता
वे किसी API hit करने से पहले खोज शब्द परिवर्धित करें --vibe doom उपसर्ग प्रश्नों के साथ "problems concerning risk issues in, किसी भी श्रेणी के होने से पहले वापस आने वाली वस्तुओं को पुनर्रूपित करना
यदि आप प्रतिरोध बिट्स पर पृष्ठभूमि चाहते हैं सेवानिवृत्ति के लिए पॉली का उपयोग करना (परिपथ ब्रेकर्स कतार प्रणाली में बैकप्रेसर (रेट सीमा और बैकप्रेस
अधिकतर खोज प्रणालियां इसे एक प्रश्न के रूप में व्यवहार करते हैं
sentinel जटिल प्रश्नों को विघटित करता है
{
"is_composite": true,
"subqueries": [
"What's new in AI safety?",
"What are the latest AI regulations?"
]
}
दिलचस्प विकल्प यह है कि क्या आगे होता है स्थानीय रूप से ML मॉडल चला रहे हैं). लेखों को प्राप्त करने के दौरान अधिकतम कोसाइन समानता सभी सबक्यूरी एम्बेडिंग्स में , औसत नहीं है
क्यों अधिकतम? एक वस्तु जो पूरी तरह से उत्तर देता है M SK1AI सुरक्षा" को नहीं दंडित किया जाना चाहिए ' नियमों के बारे में कुछ न कहने के लिए " मापन इसे औसत आंशिक मिलानों के अधीन गाड़ना होगा \ . अधिकतम समानता का अर्थ होता है | : यदि एक वस्तु की nail कोई भी आपके प्रश्न का हिस्सा, यह बढ़ता है
मेरे पास छह रैंकिंग संकेत हैं
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 बिंदुओं को हजारों तक चला जाता है।
यहाँ कुंजीशब्द संकेत है BM25 बहुविध क्षेत्रों के माध्यम से (BMM SK2F). यदि आप BM पर पृष्ठभूमि चाहते हैं DocSummarizer भाग 3.
पारस्परिक रैंक फ्यूजन (Cormack et alM SK1 2009) इस को कच्चे अंकों को उपेक्षा करके हल करता है दर्जे: score = Σ weight × 1/(k + rank) (से k=60).
अगर आप आरआरएफ पर पूरा पृष्ठभूमि चाहते हैं क्वेरी प्रकार के लिए वज़न अनुकूलित करेंsentinel अभिप्राय पता लगाता है
यह एक मजाक के रूप में शुरू हुआ।
एक "vibe" है प्रथम श्रेणी-- वर्ग रैंकिंग सिग्नल पुनर्प्राप्ति पाइपलाइन में सम्मिलित
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
जब आप एक वीब सेट करते हैं तो तीन बातें होती है
मनपसंद वीब समान रूप से काम करते हैं --vibe "contemplative philosophical"आपका पाठ क्वेरी उपसर्ग और वरीयता लक्ष्य दोनों बन जाता है
यह एक गलती है जो मैंने पहले किया था
दो लेखों में दोनों में उल्लेख किया गया है "California
भागीदार इकाई गणना
फ़िक्स entities को वेक्टरों के रूप में सोचना था
यह है सीमित अस्पष्टता पैटर्नएनईआर मॉडल इकाइयों को प्रस्तावित करता है, लेकिन निर्णायक वज़न से निर्णय होता है, क्या महत्वपूर्ण है
प्रत्येक दस्तावेज को एक भारित इकाई प्रोफ़ाइल (a 384-dim भेक्टर एनकोडिंग जो इकाईयां दिखाई देते हैं और वे कितनी अलग-अलग हैं):
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
आईडीएफ कुंजी है।
स्मार्ट भाग संतृप्त TF. कच्चे उल्लेख गणना के बजाय 1 + log(mentions)एक लंबे लेख में वर्णित इकाई को एक बार उल्लेखित एक इकाई का वजन नहीं मिलता।
अस्तित्व प्रोफाइलें केवल दस्तावेजों को समझने के लिए नहीं हैं पुनर्प्राप्ति आयामप्रत्येक Documen HNSW ग्राफ में अनुक्रमित हो जाता है।
अगर आप HNSW और DuckDB VSS, पर अधिक विवरण चाहते हैं तो देखें अंश 2: न्यूनतम व्यवहार्य 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
यह दो चरणों में कार्य करता है
पुनःप्राप्ति के दौरानजब sentinel क्वेरी से 2+ इकाइयों को निकालता है, तो यह एक ही TF के प्रयोग से क्वेरि इकाई प्रोफाइल का संगणन करता है।
श्रेणीकरण के बाद: उच्चतम | 5 | रैंकित वस्तुओं के उनके अस्तित्व प्रोफाइलों को एक समग्र भेक्टर में औसतन किया गया है |. | यह समग्र खोज संबंधित लेखों के लिए करता है कि शब्दकुञ्जी और सम्मिलित परत पूरी तरह से छूट गए हैं . | खोजे गए लेख निम्नतम रैंकिंग वस्तु के ठीक नीचे प्राप्त होते हैं |मस्क4 | और खोजा के रूप में चिह्नित *इकाइयों के माध्यम से "*यह उन प्राथमिक स्रोतों को पकड़ता है जो समाचार लेख संदर्भित करते हैं लेकिन नहीं
यूनियन के माध्यम से तीन पुनर्प्राप्ति परतें एकजुट होती हैं।
फ़ैलबैक पथ (कोर्पोरेट के लिए अभी भी अस्तित्व प्रोफाइल नहीं हैHAVING shared_count >= 2यह काम करता है, लेकिन यह O के बजाय O --backfill-entity-profiles कमांड मौजूदा कॉर्पोरेशन को HNSW पथ में स्थानांतरित करता है.
यह सामान्य पथ है scroll "AI safety and regulation" यह छिपता है. घटाना चरण के बाद आपके स्रोतों को श्रेणीबद्ध में विसर्जन करता है।
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
कमी चरण कठिन काम करता है
[E1] Title | topic | relevance जिसमें सामग्री बजट में काट दी गई हैएक LLM कॉल . यह है कि ' के प्रतिफल कम RAGचयन:,ranking, deduplication, and budgeting all happen before the LLM sees anything
लंबा--template blog-articleएक अलग जानवर है
जवाब है **प्रतिबंधित अस्पष्ट संदर्भ खींचना**These are deterministic mechanisms that maintain cross-section coherence while allowing parallel generation
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
एलएलएम कॉलों की गणना करें 1 (सेंसिल रूपरेखा 1 आरंभिक एन (बौडी सेक्शन्स 1 (निर्धारण एमएसके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
समांतर मोड में , अंतःप्रणाली पहले उत्पन्न करता है | ( | आधाररेखा सेट करता है\ ), | मुख्य भाग समांतर रूप से चलाता है SemaphoreSlim एकरूपता को शीर्षित करने के लिए, प्रत्येक intro विषयों को छोड़ कर लेकिन एक दूसरे पर नहीं है, और निष्कर्ष अंतिम चला जाता है
अनुक्रमिक मोड अधिक सुसंगतता प्रदान करता है (each section excludes all previous concepts cumulatively
प्रत्येक धारा को साक्ष्य की आवश्यकता है, लेकिन नहीं कोई भी साक्ष्य. प्रत्येक खंड को एक मिश्रित अंक मिलता है विषयवस्तु समानता (विभाग से कोसाइन दूरी 25% सारिता (सेगमेंट कैसे सूचनात्मक है अनुच्छेद प्रासंगिकता (source article की कुल प्रासंगिकता कितनी है।
तो दरवाज़े
LLM लक्ष्य शब्द गिनती प्रमाण गुणवत्ता के आधार पर समायोजन करती है।
प्रमाण LLM तक पहुंचने से पहले यह propositions (inspired by the Dense-X पुनःप्राप्ति कागजप्रत्येक खंड को परमाणु तथ्य के छह प्रकार में विभाजित किया जाता है दावे (सामान्य तथ्यात्मक दावे उद्धरण स्रोत से प्रत्यक्ष सांख्यिकी (संख्या और मापन परिभाषाएं ("X Y है प्रक्रियाएँ ( नामित इकाई तथ्य (एक विशिष्ट इकाई पर केन्द्रित
प्रत्येक अनुभाग को semantic समानता का प्रयोग करते हुए अनुच्छेदों में ~15 प्रस्तावों, दोहराया जाता है | ( | नहीं स्ट्रिंग मिलान |). | LLM स्रोत द्वारा समूहित संरचनात्मक गोली बिंदुओं को प्राप्त करता है
जब LLM एक खंड लिखता है, तो कम करने के चरण ने इसे दिया है
एक छोटा मॉडल इस प्रकार के पूर्व से अच्छा काम कर सकता है
जब आलेख साक्ष्य पाइपलाइन के लिए काफी लंबा होते हैं, तो मुझे उन्हें दबाने की जरूरत है।
TextRank (Mihalcea & Tarau, 2004) यह deterministically करता है
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
प्रत्येक वाक्य एक सम्मिलन प्राप्त करता है . ग्राफ किनारे बनते हैं 0.15 से ऊपर पाईयरवाइज समानताएँ केंद्रीय वाक्यों, जो सबसे अधिक अन्य सब से जुड़े होते हैं
कुंजी विवरण: चुने गए वाक्य लौटाए जाते हैं मूल दस्तावेज क्रम मेंयह वर्णन प्रवाह को सुरक्षित करता है
कोई LLM कॉल नहीं है TensorPrimitives (System.Numerics.Tensorsआरंभ समय पर चुना गया
लेखों में अन्य लेखों को संदर्भित किया जाता है।
DoomSummarizer लिंक्स का अनुसरण करता है, लेकिन चयनात्मकता सेM SK1 प्रत्येक उम्मीदवार लिंक को प्राप्त अंक मिलता है :
link_score = 0.7 × query_relevance(anchor_context) + 0.3 × segment_salience
जहां सेगमेंट सॉलिएन्स को जोड़ा जाता है
प्रासंगिकता तल के नीचे लिंक्स (0.15) छोड़ दिए गए हैं. प्रणाली पत्रकारिता की उल्टी पिरामिड मनोवैज्ञानिक पद्धति का अनुसरण करती है
परिणाम सामग्री हैshes और ETags के साथ कैश किए जाते हैं प्रतिक्रिया कैशिंग.
अभी तक वर्णन किया गया सब कुछ वेब फ़ैचिंग को मानता है
crawl एक वेबसाइट को स्थानीय ज्ञान आधार में शामिल करता है।
doomsummarizer crawl https://docs.example.com --name example-docs --depth 3 --max-pages 200
Everything gets persisted: full contentM SK1 ONNX embeddings, entity profiles , SQLite FTSMST4 keyword indexes MSC5fullMSP6text searchMSCP7 sentiment and topic scores MSCP8computed via embeding anchorsSCP9 no LLMSMP10 Incremental reSPP11crawls send If-None-Match / If-Modified-Since हेडर. अपरिवर्तित पृष्ठ HTTP लौटाते हैं | 304 | और पुनःप्रसंस्करण छोड़ें |. | बिना ETag समर्थन वाले सर्वर के लिए |
एक बार crawled, क्वेरी पूरी तरह ऑफ़लाइन
doomsummarizer scroll "how does authentication work?" --name example-docs
--name स्थानीय केबी को वेब स्रोतों की बजाय फ्लैग पथों को इंगित करें।
भंडारण हल्का है।
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...
ये अंतर्दृष्टि हैं
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.