# DocSummarizer Del 2 - Använda verktyget

<!--category-- AI, LLM, RAG, C#, Docling, Ollama, Qdrant, Tools -->
<datetime class="hidden">2025-12-21T11:00</datetime>

[![Utgivning från GitHub](https://img.shields.io/github/v/release/scottgal/mostlylucidweb?filter=docsummarizer*&label=docsummarizer)](https://github.com/scottgal/mostlylucidweb/releases?q=docsummarizer)
[![.NET (netto)](https://img.shields.io/badge/.NET-9.0-512BD4)](https://dotnet.microsoft.com/)
[![Ansökan ska innehålla följande uppgifter:](https://img.shields.io/badge/version-3.1.0-blue)](https://github.com/scottgal/mostlylucidweb/releases?q=docsummarizer)

Det här är **Häfte 2** i DocSummarizer serien. Se [Häfte 1](/blog/building-a-document-summarizer-with-rag) för arkitektur och mönster, eller [Häfte 3](/blog/docsummarizer-advanced-concepts) för den djupa tekniska dykningen i inbäddningar och hämtning.

> **Förvandla dokument eller webbadresser till faktabaserade sammanfattningar - för människor eller AI agenter - utan att skicka något till molnet.**

Varje påstående är spårbart, alla fakta anger dess källa, fristående binär, körs helt på din maskin.

```bash
# Human-readable summary
docsummarizer -f contract.pdf

# JSON for agents/pipelines
docsummarizer tool -u "https://docs.example.com"
```

**Vad den här artikeln behandlar**: Installation, nyckellägen (Auto/BertRag/Bert), mallar och vanliga användningsfall.

**Vad det inte täcker**: Fullständig kommandoreferens, inställningsalternativ, felsökning, arkitekturdetaljer.

För fullständig dokumentation, se [INLEDNING](https://github.com/scottgal/mostlylucidweb/blob/main/Mostlylucid.DocSummarizer/README.md). För hur det fungerar internt, se [Häfte 3](/blog/docsummarizer-advanced-concepts).

[TOC]

## Varför detta existerar

De flesta sammanfattningar ger dig text. *bevis*.

- **I varje påstående ingår `[chunk-N]` hänvisningar** Tillbaka till källmaterial
- **Förtroendenivåer** (högt/medelhögt/lågt) baserat på bevisning
- **Strukturerad JSON-utmatning** för agentintegration, CI-rörledningar eller MCP-servrar
- **Kvalitetsmått** Fånga hallucinationer innan de rymmer.

Om du behöver *Tillit* En sammanfattning - eller mata den till ett annat system - som är viktig.

## Kännetecken

- **och BertRag Pipeline**: Produktionskvalitet BERT extraktion → hämtning → LLM syntes
- **Automatiskt läge**: Smart läge val baserat på dokument och fråga
- **på Bert- läge**: Ren extraherande sammanfattning - ingen LLM behövs, fungerar offline (~3-5s)
- **Avrundad utmatning av bevis**: Citeringar, konfidensnivåer, spårbara påståenden
- **Flera lägen**: Auto, BertRag, Bert, BertHybrid, MapReduce, Rag, Iterativ
- **Verktygsläge**: Ren JSON för LLM-agenter, MCP-servrar, CI-kontroller
- **13 Mallar**: standard, prosa, kort, oneliner, kulor, verkställande, detaljerad, teknisk, akademiska, citeringar, bokrapport, möte, strikt
- **Stora dokument**: Hanterar 500+ sidor med hierarkisk bearbetning
- **Webbhämtning**: Säkerhetshärdad (SSRF-skydd, HTML-sanering)
- **Uppspelningsrätt läge**: Huvudlös webbläsare för JavaScript-renderade sidor (SPA, React apps)
- **ONNX-inbäddningar**: Zero-config lokala inbäddningar - modeller automatisk nedladdning vid första användning
- **Kvalitetsanalys**: Detektion av hallucination, extraktion av entiteter
- **Motståndskraftig LLM**: Polly-baserade försök med jitter backoff + brytare
- **Endast lokalt**: Ingenting lämnar din maskin

## Använda som ett LLM-verktyg

och `tool` kommando är speciellt utformad för integration med AI-agenter, MCP-servrar och andra automatiserade system. Det ger strukturerade JSON att stdout med bevis-grundade påståenden - perfekt för att bygga RAG rörledningar eller agent verktyg.

### Grundläggande verktygsanvändning

```bash
# Summarize a URL and get JSON output
docsummarizer tool --url "https://example.com/docs.html"

# Summarize a local file
docsummarizer tool -f document.pdf

# With a focus query
docsummarizer tool -f contract.pdf -q "payment terms and conditions"

# Pipe to jq for processing
docsummarizer tool -f doc.pdf | jq '.summary.keyFacts'
```

### Verktygsutmatningsstruktur

Verktygskommandot returnerar strukturerad JSON med bevisspårning:

```json
{
  "success": true,
  "source": "https://example.com/docs.html",
  "contentType": "text/html",
  "summary": {
    "executive": "Brief summary of the document.",
    "keyFacts": [
      {
        "claim": "The system supports 10,000 TPS.",
        "confidence": "high",
        "evidence": ["chunk-3", "chunk-7"],
        "type": "fact"
      }
    ],
    "topics": [
      {
        "name": "Architecture",
        "summary": "The system uses microservices...",
        "evidence": ["chunk-1", "chunk-2"]
      }
    ],
    "entities": {
      "people": ["John Smith"],
      "organizations": ["Acme Corp"],
      "concepts": ["OAuth 2.0", "REST API"]
    },
    "openQuestions": ["What is the disaster recovery plan?"]
  },
  "metadata": {
    "processingSeconds": 12.5,
    "chunksProcessed": 15,
    "model": "qwen2.5:1.5b",
    "mode": "MapReduce",
    "coverageScore": 0.95,
    "citationRate": 1.2,
    "fetchedAt": "2025-01-15T10:30:00Z"
  }
}
```

### Verktygskommandoalternativ

```bash
docsummarizer tool [options]
```

tillval  och kort beskrivning  på plats
|--------|-------|-------------|
| `--url` | `-u` på webbadressen för att hämta och sammanfatta
| `--file` | `-f` Fil för att sammanfatta
| `--query` | `-q` Obligatorisk fokusfråga
| `--mode` | `-m` Sammanfattande läge (Auto, BertRag, Bert, BertHybrid, MapReduce, Rag, Iterative)
| `--model` Ollama modell att använda
| `--config` | `-c` Inställningsfilsökväg

### Principer för utformning

- **Bevisupptagning**: Varje fordran inkluderar `evidence` ID:n som refererar till källbitar
- **Förtroendenivåer**: Fordringar är betygsatta `high`, `medium`, eller `low` på grundval av bevisning som ligger till grund för detta beslut,
- **Ren utmatning**: för `executive` sammanfattning har inga citeringsmarkörer för enkel visning
- **Metadata**: Bearbetningsstatistik hjälper till med felsökning och kvalitetsbedömning
- **Felhantering**: Misslyckanden återvänder `success: false` med en `error` meddelande

### Exempel på integration

**Pythonskript:**

```python
import subprocess
import json

result = subprocess.run(
    ["docsummarizer", "tool", "-u", "https://example.com/api-docs"],
    capture_output=True, text=True
)
data = json.loads(result.stdout)

if data["success"]:
    for fact in data["summary"]["keyFacts"]:
        if fact["confidence"] == "high":
            print(f"- {fact['claim']}")
```

**Skalledning:**

```bash
# Extract high-confidence facts only
docsummarizer tool -f doc.pdf | jq '[.summary.keyFacts[] | select(.confidence == "high")]'

# Get just the executive summary
docsummarizer tool -u "https://example.com" | jq -r '.summary.executive'
```

## Snabbstart

### Ladda ner förbyggda binärer

Förbyggda inhemska körbara program finns tillgängliga från [Utgåvor av GitHub](https://github.com/scottgal/mostlylucidweb/releases?q=docsummarizer):

Ladda ner ladda ner ladda ner
|----------|--------------|----------|
Fönster  på x64 `docsummarizer-win-x64.zip` |
Fönster  på ARM64 `docsummarizer-win-arm64.zip` |
Obligatoriskt för Linux  på x64 `docsummarizer-linux-x64.tar.gz` |
Obligatoriskt för Linux  på ARM64 `docsummarizer-linux-arm64.tar.gz` |
och macOS  på x64 (Intel) `docsummarizer-osx-x64.tar.gz` |
ARM64 (Apple Silicon) `docsummarizer-osx-arm64.tar.gz` |

```bash
# Download and extract (Linux/macOS)
curl -L -o docsummarizer.tar.gz https://github.com/scottgal/mostlylucidweb/releases/download/docsummarizer-v3.1.0/docsummarizer-linux-x64.tar.gz
tar -xzf docsummarizer.tar.gz
chmod +x docsummarizer

# Download and extract (Windows PowerShell)
Invoke-WebRequest -Uri "https://github.com/scottgal/mostlylucidweb/releases/download/docsummarizer-v3.1.0/docsummarizer-win-x64.zip" -OutFile "docsummarizer.zip"
Expand-Archive -Path "docsummarizer.zip" -DestinationPath "."
```

### Förutsättningar

#### Bert Mode (inga externa tjänster)

För ren utvinningssammanfattning, **Inga externa tjänster krävs**:

```bash
docsummarizer -f document.md -m Bert
```

ONNX modeller automatisk nedladdning från HuggingFace vid första användning (~23MB). Returnerar i ~3-5 sekunder.

#### LLM Modes (Auto, BertRag, MapReduce, etc.)

För LLM-driven summering krävs Ollama:

```bash
# Install Ollama from https://ollama.ai
ollama pull llama3.2:3b        # Default model - good balance of speed/quality
ollama serve
```

> **Hastighetstips**: För snabbare sammanfattningar (~3s vs ~15s), använd `--model qwen2.5:1.5b`

#### Valfritt: Dockning (binära format)

Krävs för PDF, DOCX, XLSX, PPTX, HTML, bilder (PNG/JPG/TIFF), CSV, VTT och AsciiDoc-filer. **Markering och enkla textfiler läses direkt - ingen dockning krävs.**

```bash
docker run -d -p 5001:5001 quay.io/docling-project/docling-serve
```

#### Valfritt: Qdrant ( Persistent Vector Storage)

Krävs inte som standard - BertRag använder vektorer i minnet. Aktivera Qdrant för ihållande lagring för att undvika att återinbädda dokument i efterföljande körningar:

```bash
docker run -d -p 6333:6333 -p 6334:6334 qdrant/qdrant
```

Anpassa sedan in `docsummarizer.json`:

```json
{
  "bertRag": {
    "vectorStore": "Qdrant",
    "collectionName": "docsummarizer",
    "persistVectors": true
  }
}
```

#### Valfritt: Ollama-inbäddningar

Om du föredrar Ollama för inbäddningar istället för ONNX:

```bash
ollama pull nomic-embed-text   # Or mxbai-embed-large
# Then use: --embedding-backend Ollama
```

### Verifiera beroenden

```bash
docsummarizer check --verbose
```

Förväntad effekt visar en formaterad tabell:

```
              Dependency Status              
╭─────────┬────────┬────────────────────────╮
│ Service │ Status │ Endpoint               │
├─────────┼────────┼────────────────────────┤
│ Ollama  │   OK   │ http://localhost:11434 │
│ Docling │ Optional │ http://localhost:5001 │
│ Qdrant  │ Optional │ localhost:6333        │
╰─────────┴────────┴────────────────────────╯

        Default Model Info         
╭────────────────┬────────────────╮
│ Property       │ Value          │
├────────────────┼────────────────┤
│ Name           │ llama3.2:3b    │
│ Family         │ llama          │
│ Parameters     │ 3.2B           │
│ Context Window │ 128,000 tokens │
╰────────────────┴────────────────╯

Ready to summarize! Ollama is available.
```

> **Anmärkning**: Dockning och Qdrant som visar  till är bra för arbetsflöden endast Markdown.

## Användning

### Förvalt beteende

Kör `docsummarizer` utan några argument kommer att

1. Leta efter `README.md` i aktuell katalog
2. Sammanfatta det med hjälp av **Automatiskt läge** (val av smartläge)
3. Skriv ut sammanfattningen till konsolen med en trevlig panel UI
4. Spara automatiskt till `readme.summary.md`

```bash
# Summarize README.md in current directory
docsummarizer

# Shows a formatted panel with:
# - Document info table (file, mode, model)
# - Progress indicators during processing
# - Summary panel with the result
# - Topics tree if available
# - Saved: readme.summary.md
```

### Grundläggande sammanfattning

```bash
# Just run it - Auto mode picks the best approach
docsummarizer -f document.pdf

# Fast mode - no LLM, pure extraction (~3-5s)
docsummarizer -f document.pdf -m Bert

# Production mode - best quality with validated citations
docsummarizer -f document.pdf -m BertRag

# Focused on specific topic
docsummarizer -f manual.pdf -m BertRag --focus "installation steps"

# Verbose progress
docsummarizer -f document.pdf -v
```

## Sammanställningsläge

Verktyget utvecklades från "bara MapReduce" till en full pipeline. Här är vad varje läge faktiskt gör:

### Automatisk (förval)

Väljer rätt läge baserat på vad du ber om. Använd detta om du inte har en anledning att inte.

```bash
docsummarizer -f doc.pdf
```

### BertRag (Produktion)

Det här är vad du vill ha för produktion.

1. **Extrahera** - Tolkning av dokumentet i segment, bädda in dem med BERT
2. **Hämta** - Hitta de relevanta segmenten (semantisk sökning + salience scoring)
3. **Syntetisk storlek** - LLM skriver en flytande sammanfattning från dessa segment

```bash
docsummarizer -f doc.pdf -m BertRag
docsummarizer -f doc.pdf -m BertRag --focus "payment terms"
```

**Varför använda den:** Varje påstående spårar tillbaka till en källa segment. Ingen hallucination. Skalar till någon dokumentstorlek. LLM bara körs i slutet (billig).

### Bert (Snabb, ingen LLM)

Ren extraktion med lokala ONNX-modeller, inget LLM-samtal alls.

```bash
docsummarizer -f doc.pdf -m Bert
```

**Varför använda den:** Fungerar offline. Returnerar i ~3-5 sekunder. Deterministisk (samma indata = samma utdata). Tillräckligt bra för snabbsökning.

### BertHybrid Ordförande

BERT-extrakt, LLM-lack. Mellanmark mellan Bert och BertRag.

```bash
docsummarizer -f doc.pdf -m BertHybrid
```

### KartaReduce / Rag / Iterativ

De ursprungliga lägena. Fungerar fortfarande, men BertRag ersatte dem för de flesta användningsfall.

- **KartaReduce**: Parallell kapning, bra för 100% täckning
- **Släpkärra**: Vector search, bra för fokuserade frågor (legacy - BertRag gör detta bättre)
- **Iterativt**: Sekventiell bearbetning, endast för små dokument

```bash
docsummarizer -f doc.pdf -m MapReduce  # Full coverage
docsummarizer -f doc.pdf -m Rag --focus "query"  # Legacy focused mode
```

### Frågeläge

I stället för att sammanfatta, ställ frågor om ett dokument:

```bash
docsummarizer -f manual.pdf --query "How do I install the software?"
```

### Webbadresshämtning

Sammanfatta webbsidor direkt utan att ladda ner:

```bash
# Summarize a web article
docsummarizer --url "https://example.com/article.html" --web-enabled

# Summarize a remote PDF
docsummarizer --url "https://example.com/document.pdf" --web-enabled

# With structured JSON extraction
docsummarizer --url "https://example.com/api-docs.html" --web-enabled --structured
```

**Innehåll som stöds**: HTML (sanitized), PDF, Markdown, bilder (OCR), Office-dokument. Stora bilder ändras automatiskt.

**Säkerhet**: SSRF-skydd, DNS-rebindande skydd, innehållsliknande gating, dekompressionsbombskydd, HTML-sanering.

**JavaScript-renderade sidor**: Användning `--web-mode Playwright` för SPA och React-appar (auto-installationer Krom vid första användningen).

### Strukturerat läge

Extrahera maskinläsbar JSON istället för prosa:

```bash
docsummarizer -f document.pdf --structured -o Json
```

Utdrag: enheter, funktioner, nyckelflöden, fakta (med konfidensnivåer), osäkerheter, koncisa passager.

### Sammanfattande mallar

```bash
# Use a template
docsummarizer -f doc.pdf --template executive
docsummarizer -f doc.pdf -t bullets

# Specify custom word count with template:wordcount syntax
docsummarizer -f doc.pdf -t bookreport:500
docsummarizer -f doc.pdf -t executive:100

# Or use --words to override any template's default
docsummarizer -f doc.pdf -t detailed --words 300
```

Template  med ord  på bästa sätt
|----------|-------|----------|
| `default` på ~300  på balanserad sammanfattning med ämnen (2 stycken)
| `prose` på ~400  på ren flerpunktsprosa - inga metadata
| `brief` Kort sammanfattning på 2-3 meningar
| `oneliner` Sammanfattning av enkel mening
| `bullets` Skottpunktslista (5-7 objekt)
| `executive` på ~150  på Executive information med rekommendationer
| `detailed` på ~1000  på ett heltäckande sätt med alla ämnen
| `technical` på ~350  på tekniska dokument med genomförandedetaljer  på
| `academic` på ~250  på Akademiskt abstrakt format  på engelska
| `citations` på auto  på nyckelcitat med källciteringar endast  på
| `bookreport` på ~500  på bok rapport (inställning, tecken, tomt, teman)  på
| `meeting` på ~200  på Möteskommentarer (beslut, åtgärder, frågor)
| `strict` på ~60  på Token-effektiva, 3 kulor max, ingen säkring

För att se alla tillgängliga mallar med beskrivningar:

```bash
docsummarizer templates
```

### Förlaga till benchmarking

Jämför modeller på samma dokument med hjälp av `benchmark` underkommando:

```bash
docsummarizer benchmark -f doc.pdf -m "qwen2.5:1.5b,llama3.2:3b,ministral-3:3b"
```

Kommandot benchmarking tolkar dokumentet en gång, kör sedan varje modell på samma bitar för rättvis jämförelse. Utmatning visar timing, ordräkning och ord/sekund för varje modell.

### Bearbetning av tillverkningssatser

Behandla hela kataloger:

```bash
# Use BertRag for quality
docsummarizer -d ./documents -m BertRag -v

# Fast offline batch (no LLM needed)
docsummarizer -d ./documents -m Bert -o Json --output-dir ./summaries

# Process only PDFs recursively
docsummarizer -d ./documents -e .pdf --recursive -v
```

### Kommandoradsväljare

Förvalt alternativ  och kort beskrivning  på grund av förvalda värden
|--------|-------|-------------|---------|
| `--file` | `-f` Sökväg till dokument (DOCX, PDF, MD)  på engelska
| `--directory` | `-d` Sökväg till katalog för batch-bearbetning
| `--url` | `-u` Webbadress för att hämta och sammanfatta
| `--web-enabled` Aktivera webbhämtning (krävs för --url) `false` |
| `--mode` | `-m` Sammanfattande läge: Auto, BertRag, Bert, BertHybrid, MapReduce, Rag, Iterative `Auto` |
| `--structured` | `-s` Använd strukturerat JSON-extraktionsläge `false` |
| `--focus` Inriktningsfråga för RAG-läge
| `--query` | `-q` och frågeläge istället för summering
| `--model` Ollama modell att använda `llama3.2:3b` |
| `--verbose` | `-v` på Visa detaljerade framsteg med live UI `false` |
| `--config` | `-c` Sökväg till inställningsfil  med automatisk upptäckt
| `--output-format` | `-o` Utmatningsformat: Konsol, Text, Markering, Json `Console` |
| `--output-dir` Utmatningskatalog för filutmatningar
| `--extensions` | `-e` på Filtillägg för batch-läge  på alla dockningsformat
| `--recursive` | `-r` Processkataloger rekursivt `false` |
| `--template` | `-t` En sammanfattning av mallen (standard, kort, kulor, verkställande, etc.) `default` |
| `--words` | `-w` Obligatoriskt antal målord (överskrider mall)

| `--embedding-backend` Inbäddad backend: Onnx, Ollama `Onnx` |
| `--embedding-model` ONNX-modellnamn (RAG-läge) `AllMiniLmL6V2` |
| `--web-mode` Webbhämtningsläge: Enkelt, Playwright `Simple` |
| `--analyze` | `-a` till Kör kvalitetsanalys på sammanfattning  på `false` |

## Sammanställningsläge

### MapReduce (rekommenderas)

Bästa för omfattande sammanfattningar med fullständig dokumenttäckning.

```bash
docsummarizer -f document.pdf -m MapReduce -v
```

**Hur det fungerar**:

1. Dela upp dokumentet i strukturella bitar (per rubrik)
2. Sammanfattar varje bit parallellt med LLM
3. Reducerar sammanfattningar till sammanfattningar med citeringar
4. Validerar alla citeringar referens verkliga bitar

**Hierarkisk reduktion för långa dokument**:

För mycket långa dokument där den kombinerade bitsammanfattningen överskrider modellens sammanhangsfönster använder MapReduce automatiskt hierarkisk reduktion:

1. **Slagning**: Gruppsammanfattningar i partier som passar in i sammanhanget
2. **Intermediär minskning**: Reducerar varje sats till en kondenserad sammanfattning
3. **Slutlig minskning**: Sammanställer delsammanfattningar i slutresultatet
4. **Rekursiv**: Om intermediärer fortfarande är för stora, lägger till fler nivåer

```
100 chunks → 100 summaries → 5 batches → 5 intermediate summaries → final
```

Detta bevarar full dokumenttäckning oavsett längd - varje bit bidrar till den slutliga sammanfattningen. Verktyget uppskattar tokens (~4 tecken / token) och riktar 60% sammanhangsfönster utnyttjande per minskning pass.

**Förmåner**: Snabb, komplett täckning, parallell bearbetning, hanterar dokumentlängd
**Nackdelar**: Kan missa tvärsnittsanslutningar, långsammare för mycket långa dokument

### RAG (bästa för fokuserade frågor)

Bäst när du behöver fokusera på specifika ämnen eller har en riktad fråga.

```bash
docsummarizer -f document.pdf -m Rag --focus "pricing and payment terms" -v
```

**Hur det fungerar**:

1. Indexerar dokumentbitar som vektorbäddar i Qdrant
2. Extraherar viktiga ämnen från dokumentrubriker
3. Hämtar relevanta bitar per ämne med semantisk sökning
4. Synthesizes fokuserad sammanfattning med citeringar

**När du ska använda RAG över MapReduce**:

Scenario  på bästa sätt
|----------|-----------|
på "Summarisera hela detta dokument"  på kartanReduce
"Vad säger det här om säkerhet?"
500-sidig manual, behöver allt  på kartanReduce (hierarkisk)
på 500 sidor manual, behöver specifik avsnitt  på RAG
på Behöver snabba resultat, har inte Qdrant  på kartanReduce

RAG är **inte** om hantering av långa dokument - MapReduce hanterar det med hierarkisk reduktion. RAG handlar om **Relevansfiltrering**: när du vill ignorera 90% av ett dokument och fokusera på vad som är viktigt för din specifika fråga.

**Förmåner**: Ämnesfokuserad, semantisk förståelse, återanvändning index, snabbare för fokuserade frågor
**Nackdelar**: Kan missa innehåll utanför fokusområdet, kräver Qdrant, långsammare initial indexering

### Iterativt

Bästa för berättande dokument där kontexten flödar sekventiellt.

```bash
docsummarizer -f story.pdf -m Iterative -v
```

**Varning**: Långsammare och kan förlora sammanhang på långa dokument (>10 bitar).

## Stor dokumentguide

### Välja rätt läge

på dokumenttyp  på mål  och läge  på grund av detta
|---------------|------|------|-----|
Tekniska specifikationer (50+ sidor)  en fullständig sammanfattning  på kartanReduce  med fullständig täckning
på Novel/Narrative  med fullständig sammanfattning  på kartanReduce  och behöver tidskontext
till Juridiskt avtal  och fullständig sammanfattning  på kartanReduce  på sidan Kan inte missa klausuler
• Lagligt kontrakt • "Betalningsvillkor?" • RAG • Fokusera på specifika avsnitt
på API-dokument (200 sidor)  på "Hur fungerar auth?"
på forskningsrapport  och fullständig sammanfattning  på kartanReduce  med struktur, behöver allt

### Fiktion vs icke- fiktion

på innehållstyp  på bästa sätt . Anteckningar .
|--------------|-----------|-------|
| **Fiktion/Narrativ** på kartanReduce  och Plot kräver sekventiellt sammanhang
| **Tekniska dokument** på båda sidor av kartanReduce for overview, RAG for specifics
| **Rättsliga/avtal** på kartanReducera alla klausuler som är viktiga
| **Handböcker** på RAG  på Vanligen fråga efter detaljer

### Prestanda

på dokumentstorlek  på kartanReducera RAG-anteckningar
|---------------|-----------|-----|-------|
10 sidor 15s 20s båda snabbt
på 50 sidor 45s 30s  på RAG snabbare om det är fokuserat
på 200 sidor 3-5 min  på 1–2 min på Hierarkisk reduktion
på 500+ sidor 10–15 min  på 2-3 min Överväg flera RAG-frågor

## Inställning

### Skapa standardinställning

```bash
docsummarizer config --output myconfig.json
```

### Inställningsfil

Inställningen är automatiskt upptäckt från:

1. `--config` alternativ
2. `docsummarizer.json` i aktuell katalog
3. `.docsummarizer.json` (dold fil)
4. `~/.docsummarizer.json` (användarhem)

Exempel `docsummarizer.json`:

```json
{
  "embeddingBackend": "Onnx",
  "onnx": {
    "embeddingModel": "AllMiniLmL6V2"
  },
  "ollama": {
    "model": "llama3.2:3b",
    "embedModel": "mxbai-embed-large",
    "baseUrl": "http://localhost:11434",
    "temperature": 0.3,
    "timeoutSeconds": 1200
  },
  "docling": {
    "baseUrl": "http://localhost:5001",
    "timeoutSeconds": 1200,
    "pdfBackend": "pypdfium2",
    "pagesPerChunk": 10,
    "maxConcurrentChunks": 4,
    "enableSplitProcessing": true
  },
  "qdrant": {
    "host": "localhost",
    "port": 6333,
    "collectionName": "documents"
  },
  "processing": {
    "maxHeadingLevel": 2,
    "targetChunkTokens": 1500,
    "minChunkTokens": 200,
    "maxLlmParallelism": 2
  },
  "output": {
    "format": "Console",
    "verbose": false,
    "includeTrace": false
  },
  "webFetch": {
    "enabled": false,
    "mode": "Simple",
    "timeoutSeconds": 30,
    "userAgent": "Mozilla/5.0 DocSummarizer/1.0"
  },
  "batch": {
    "fileExtensions": [".pdf", ".docx", ".md", ".txt", ".html"],
    "recursive": false,
    "continueOnError": true
  }
}
```

### Hanteringsalternativ

Obligatoriskt förvald beskrivning
|--------|---------|-------------|
| `maxLlmParallelism` Ollama köer (Ollama köer, så högre värden bara kö)
| `maxHeadingLevel` på endast H1/H2. Ställ in till 3 för finare granularitet
| `targetChunkTokens` 0 (auto) 0 = automatisk beräkning (~25% av sammanhangsfönstret)
| `minChunkTokens` 0 (auto)  på minsta möjliga före sammanslagningen. 0 = 1/8 av målet

## Utmatningsformat

### Sammanfattning

```C:\Blog\mostlylucidweb\Mostlylucid\Markdown\docsummarizer-tool.md
## Executive Summary
- Key finding 1 with specific details [chunk-0]
- Important point 2 with numbers and dates [chunk-3]
- Critical requirement 3 [chunk-5]

## Section Highlights
- Introduction: Overview of the system architecture [chunk-0]
- Requirements: Technical specifications detailed [chunk-3]
...

## Open Questions
- What is the timeline for Phase 2?
- How does the fallback mechanism work?

### Trace

- Document: document.pdf
- Chunks: 12 total, 12 processed
- Topics: 5
- Time: 21.4s
- Coverage: 100%
- Citation rate: 1.20
```

**Spårmått**: Täckning (% avsnitt ingår), Citeringshastighet (citeringar / bult), Chunks bearbetade (RAG kan hoppa över några).

## Förlaga till rekommendationer

på modell  på storlek  på hastighet  och kvalitet  på användningsfallet  på plats
|-------|------|-------|---------|----------|
| `qwen2.5:1.5b` på 986MB  och mycket snabb (~3s)
| `gemma3:1b` 815MB  på snabb (~10s)  på ett rättvist sätt  på en alternativ liten modell
| `llama3.2:3b` 2GB  på medellång (~15s)  på mycket bra **Förval** - bra balans
| `ministral-3:3b` 2.9GB  på medellång (~20s)  på ett mycket bra sätt, kvalitetsfokuserad
| `llama3.1:8b` Slow (~45s)  på 4,7GB (~45s) 

> **Tips**: För snabbare sammanfattningar (~3s vs ~15s), använd `--model qwen2.5:1.5b`. För kritiska dokument där kvalitet betyder mer, använd `--model llama3.1:8b`.

## Bygg från källa

```bash
# Clone the repository
git clone https://github.com/scottgal/mostlylucidweb.git
cd mostlylucidweb/Mostlylucid.DocSummarizer

# Build
dotnet build

# Run
dotnet run -- --help
```

### Självbevarade byggnader

För produktion utan krav på .NET runtime installation:

```bash
# Build self-contained executable (Windows x64)
dotnet publish -c Release -r win-x64 --self-contained

# Build for Linux
dotnet publish -c Release -r linux-x64 --self-contained

# Build for macOS
dotnet publish -c Release -r osx-x64 --self-contained
```

Utmatning: `bin/Release/net9.0/<runtime>/publish/docsummarizer`

## Felsökning

### "Kan inte ansluta till Ollama"

- Se till att Ollama kör: `ollama serve`
- Kontrollera att modellerna dras: `ollama list`

### "Doclingtjänst inte tillgänglig"

- Det här är **krävs endast för PDF/DOCX-filer**
- För Markdown-filer kan du ignorera detta fel
- För att fixa: `docker run -p 5001:5001 quay.io/docling-project/docling-serve`

### "Qdrantanslutning misslyckades"

- Det här är **endast krävs för RAG-läge** (`--mode Rag`)
- För MapReduce- läge (standard), kan du ignorera detta fel
- För att fixa: `docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant`

### "Circuit breaker är öppen"

- Ollama är överbelastad eller har kraschat
- Vänta 30 sekunder för brytaren att återställa, eller starta om Ollama
- Verktyget använder Polly resilience policys och kommer auto-retry

### "Wsarecv" eller anslutningsfel (Windows)

- Detta är en känd Ollama fråga om Windows (GitHub #13340)
- Verktyget automatiskt hanterar detta med försök logik och anslutning återhämtning
- Om ihållande, starta om Ollama och försök igen

### "LLM-generationen har gått ut"

- Öka tidsgränsen i konfigurationen
- Dela upp mycket stora dokument
- Kontrollera att Ollama inte är överbelastad med andra förfrågningar

### Repetitiva eller lågkvalitativa sammanfattningar

**Symtom**: Kul poäng ekar prompten ("Återvänd endast kul poäng", "Reglen är...") i stället för att sammanfatta innehållet.

**Orsak**: Modell kämpar med snabb eller innehåll för länge.

**Rätta**: Standardvärdet `qwen2.5:1.5b` hanterar de flesta dokument bra. För problematiska dokument, försök `--model llama3.2:3b`. Se också [Förlaga till rekommendationer](#model-recommendations).

### Sammanfattning Ignorerar dokumentinnehåll

Om sammanfattningen verkar generisk eller inte refererar till specifikt innehåll:

- Modellen kan vara hallucinerande - kontroll `Citation rate` i spårutgång
- Försök med RAG- läge (`--mode Rag`) som motiverar sammanfattningar i återvunna bitar
- Användning `--verbose` för att se vilka bitar som bearbetas

### Omnämnanden saknas eller är ogiltiga

Om sammanfattningar saknas `[chunk-N]` Hänvisningar:

- Små modeller prioriterar innehåll framför citeringsformatering
- Prompterna är optimerade för hastighet, inte strikt citering överensstämmelse
- För strikta citeringar, använd större modeller som `llama3.2:3b`
- Kontrollera `Citation rate` I spår – högre värden tyder på bättre spårbarhet

## Prestandatips

- **KartaReduce** för hastighet (parallellbitar)
- **`qwen2.5:1.5b`** för hastighet, **`llama3.2:3b`** för balans, **`llama3.1:8b`** för kvalitet
- **ONNX-inbäddningar** (standard) är snabbare än Ollama för RAG-läge
- Lägre **`maxLlmParallelism`** om du upplever timeout

## Resurser

- [Källkod](https://github.com/scottgal/mostlylucidweb/tree/main/Mostlylucid.DocSummarizer)
- [Utgåvor av GitHub](https://github.com/scottgal/mostlylucidweb/releases?q=docsummarizer)
- [Dockning](https://github.com/docling-project/docling) / [Dockning tjänar](https://github.com/docling-project/docling-serve)
- [Qdrant Ordförande](https://qdrant.tech/) - Lokal vektordatabas
- [Ollama Ordförande](https://ollama.ai/) / [OllamaSharp Ordförande](https://github.com/awaescher/OllamaSharp)
- [Polly Ordförande](https://github.com/App-vNext/Polly) - .NET motståndskraft och tillfällig felhantering
- [Spectre.Console](https://spectreconsole.net/) - Vacker terminal UI

## Serienavigering

- **[Del 1: Bygga ett dokumentsammanställning med RAG](/blog/building-a-document-summarizer-with-rag)** - Arkitekturen och mönster
- **[Del 2: Använda verktyget](/blog/docsummarizer-tool)** Snabbstartsguide
- **[Del 3: Avancerade begrepp](/blog/docsummarizer-advanced-concepts)** - Djupdyk i BERT, ONNX, inbäddningar och hybridsökning

### Relaterade

- [CSV-analys med lokala LLM](/blog/analysing-large-csv-files-with-local-llms)
- [Webbinnehåll med LLMs](/blog/fetching-and-analysing-web-content-with-llms)