# DocSummarizer Part 2 - Genom att använda verktyget

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

[![GitHub-utsläpp](https://img.shields.io/github/v/release/scottgal/mostlylucidweb?filter=docsummarizer*&label=docsummarizer)](https://github.com/scottgal/mostlylucidweb/releases?q=docsummarizer)
[![.NET](https://img.shields.io/badge/.NET-8.0%20%7C%2010.0-512BD4)](https://dotnet.microsoft.com/)

Det här är **Del 2** av DocSummarizer-serien. Se [Del 1](/blog/building-a-document-summarizer-with-rag) för arkitektur och mönster, [Del 3](/blog/docsummarizer-advanced-concepts) för den djupa tekniska dykning in i inbäddar och återtaganden, eller [Del 4](/blog/docsummarizer-rag-pipeline) att använda NuGet biblioteket för att bygga sina egna RAG-apps.

> **Förvandla dokument eller URLs till bevis-grundade sammanfattningar | - | för människor eller AI-agenter |- | utan att skicka något till molnet**

Alla påståenden är spårbara. Alla fakta citerar dess källa . Själva-contained binaryM SK3 kör 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 handlar om**: installering , nyckelmodi | | ( | Auto | МSK3 | BertRag | / |Bert

**Vad den inte täcker**: Den fulla kommandoreferensen

För den kompletta dokumentationen, ,, se [README](https://github.com/scottgal/mostlylucidweb/blob/main/Mostlylucid.DocSummarizer/README.md). För hur det fungerar internt, se [Del 3](/blog/docsummarizer-advanced-concepts).

[TOC]

## Varför finns detta?

De flesta summerare ger dig text. Det här ger dig *bevis*.

- **Varje claim inkluderar `[chunk-N]` citationer** tillbaka till källmaterial
- **Förtroende nivåer** (
- **Strukturerad JSON-output** för agentintegration, ,, CI-rör, , eller MCP-server
- **Kwaliteitsmått** fånga hallucinationer innan de flyr

Om du behöver *tillit* en sammanfattning - eller mata den till ett annat system - som är viktigt

## Mönster

- **🚀 BertRag Pipeline**: Tillverkning-grad BERT extraktion → uppfinning → LLM-synthes
- **🤖 Auto-läger**: Smarta Modusval baserad på dokument och fråga
- **⚡ Bert Modus**: Rent extraktiv sammanfattning - inget LLM behövs
- **Evidens-Grounded Output**: Citationer
- **Flera former**: Auto, BertRag, BertM SK3 BertHybridMska4 MapReduceMske5 RagM Ska6 Iterativ
- **Apparaten**: Rent JSON för LLM-agenter, MCP-serverM SK2 CI-kontroller
- **13 Templates**: avvikande , pröss, , kort, M SK3 enlig, , kular,, ansvarig, MST6 detaljerad, MSV7 tekniskt,MST8 akademiskt,MSV9 citationer, MSP10, bokförslag, MSS11, möte, MSM12, strikt
- **Stora Dokument**: Handler 500+ sidor med hierarkisk bearbetande
- **Fetching på nätet**: säkerhet-hardenerad ( SSRF skyddM SK3 HTML sanitiseringMSC4
- **Spelningsstil**: Hjärnlös webblader för JavaScript- skickade sidor (SPAsM SK3 React-apps)
- **ONNX Embeddings**: Noll - konfigurera lokala inbäddar | - | modeller automatiskt |- | ladda ner på första användning
- **Kvaliteanalys**: Halluktionsdetektion , väsenextraktion
- **Robust LLM**: PollyM SK1based retry with jitter backoff + circuit breaker
- **Lokalt Bara**: Inget lämnar maskinen

## Att använda som ett LLM-verktyg

Den `tool` kommandot är speciellt konstruerat för integration med AI-agenter, MCP servern, och andra automatiserade systemM SK2 Det utsätter strukturerad JSON för att stdout med bevis

### 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'
```

### verktygs-utgångsstrukturen

verktygsbevelet ger tillbaka 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"
  }
}
```

### Vad kan jag göra med det här?

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

| Option | Kort | Beschreibung |
|--------|-------|-------------|
| `--url` | `-u` | URL att hämta och summera |
| `--file` | `-f` | Att sammanfatta |
| `--query` | `-q` | Optionell fokusfråga |
| `--mode` | `-m` | Summariseringsmöjlighet ( Automatiskt , BertRagM SK3 Bert, BertHybridMska5 MapReduceMske6 RagM Ska7 Iterativt) |
| `--model` | | Ollama-modellen för att använda |
| `--config` | `-c` | Konfigurationspfad

### Nyckel till designprinciper

- **Evidensgrundering**: Varje claim inkluderar `evidence` IDs som referenserar källskivor
- **Konfidensnivåer**: Krävande bedöms `high`, `medium`, eller `low` baserat på stödjande bevis
- **Klara utgång**: Den `executive` summary har inga citationsmarkörer för att se det enkelt ut
- **Metadata**: Bewerkingsstatistiker hjälper med avbugning och kvalitetbedömande
- **Fehler i hantering**: Misslyckanden återvänder `success: false` med en `error` meddelande

### Integrationsexempler

**Python skrip:**

```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']}")
```

**Kolledning:**

```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'
```

## Vinnig Start

### Download Pre-byggda binärer

Pre-byggda infödda executables är tillgängliga från [GitHub-utsläpp](https://github.com/scottgal/mostlylucidweb/releases?q=docsummarizer):

| Platten | Arkitektur | | | ladda ner |
|----------|--------------|----------|
| Windows `docsummarizer-win-x64.zip` |
| Windows | ARM `docsummarizer-win-arm64.zip` |
| Linux | x64 | `docsummarizer-linux-x64.tar.gz` |
| Linux | ARM `docsummarizer-linux-arm64.tar.gz` |
| macOS `docsummarizer-osx-x64.tar.gz` |
| macOS `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örberedelser

#### Bert Modus ( Inga yttre tjänster)

För rent extraktiv summerning, **inga externa tjänster nödvändiga**:

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

ONNX-modeller automatiskt-download från HuggingFace på första användning (~23MBM SK2 Omgångar i ~3-5 sekunderMSC4

#### LLM-läger (Auto, BertRagM SK2 MapReduce , etcMSC4

För LLM-motoriserad sammanfattning , Ollama är nödvändigt:

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

> **Spodspets**: För snabbare sammanfattningar (~3s jämfört med `--model qwen2.5:1.5b`

#### facultativt: Dokling (Binärformat

Erforderliga för PDF, DOCX, XLSXM SK2 PPTX , HTMLMska4 bilder MSC5PNGM Ska6JPGMskar7TIFFMskan8 CSVMsaka9 VTTMaskan10 och AsciiDoc-DaterMskka11 **Markdown och enkla textdater kan läsas direkt - inget dokumentering krävs.**

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

#### Optionellt: Qdrant (Persistent vektorförvarandeM SK2

Det är inte standardmässigt nödvändigt. - BertRag använder i-memory-vektorer

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

Sedan konfigurera i `docsummarizer.json`:

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

#### Optional: Ollama-beläggningar

Om du föredrar Ollama för inbäddar 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
```

Den förväntade utgången 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.
```

> **Beteckning**: Dokling och Qdrant som visar att ✗ är bra för Markdown

## Användning

### Standardbeteende

Running `docsummarizer` utan argument kommer:

1. Leta efter `README.md` i det nuvarande kataloget
2. sammanfatta det med **Auto-läge** (smart-modusval
3. Druk sammanfattningen till konsolen med en fin panel-UI
4. Auto- spara 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
```

### Grundbeteckningar

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

## Summariseringsmodi

verktyget utvecklades från " bara MapReduce " till en hel pipeline

### Auto (Default)

Kieser den rätta metoden baserat på vad du vill ha.

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

### BertRag (Produktion

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

1. **Utvinna** - analysera dokumentet i segmenter , lägga in dem med BERT
2. **Ta tillbaka** - Hitta de relevanta segmenten
3. **Synthesera** - 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 sträcker sig tillbaka till ett källsegment

### Bert (FastM SK1 Nej LLM)

Rent extraktion med hjälp av lokala ONNX-modeller. Ingen LLM sändning alls

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

**Varför använda den:** Fungerar offline. Grönar tillbaka i ~3-5 sekunder . Deterministiskt | ( | Samma inmatning |= | samma utputning ♫ ). | Bra nog för snabb skanning

### Berthybrid

BERT-extrakter, LLM-polisser . Mellanrumbet mellan Bert och BertRag

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

### MapReduce / Rag / Iterativ

De ursprungliga modellerna. fungerar fortfarande, men BertRag erbjöd dem för de flesta användande fallen

- **Reduktion**: Parallell chunking, bra för 100% yta
- **Rag**: Vektorsökningen, bra för koncentrerade frågor (legas - BertRag gör det här bättre
- **Iterativ**: Sekvationell bearbetande , bara 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åga Modus

Istället för att sammanfatta

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

### Att hämta web-URL

sammanfatta webbsidor direkt utan att ladda ned:

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

**Ondersteund innehåll**: HTML | ( | städat | ), | PDF | , | markering |, | bilder | SKS5 | OCR | SMk6 | kontorsdokument | MSN | Large images automatically resized

**säkerhet**: SSRF skydd , DNS återkoppelning skydd, , innehåll, M SK3 typ av gating, , dekompressionsbomb skydd.

**JavaScript-överlämnade sidor**: Använd `--web-mode Playwright` för SPAs och React-apps (automatiskt - installerar Chromium vid första användning).

### Strukturerad Modus

Extrahera maskinen- läsbar JSON istället för prose:

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

Extrakts: entityder , funktioner, nyckelflödenM SK3 fakta Mska4 med tillitnivåer Mska5 osäkerhetenM Ska6 citera passagerMka7

### Summary- Templates

```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 | Words | | | Det bästa |
|----------|-------|----------|
| `default` | ♫ ~300 ♫ ♫| ♫ En balanserad sammanfattning med ämnena ♫
| `prose` | ♫ ~400 ♫ ♫| ♫ Klara flertal ♫
| `brief` |
| `oneliner` |
| `bullets` | automatiskt | Bullet point list | | 5-7 | Items
| `executive` | ~150 ♫ ♫ | ♫ Executive briefing with recommendations ♫
| `detailed` |
| `technical` | ♫ ~350 ♫ ♫| ♫ Teknikdokument med implementeringsdetails ♫
| `academic` | ♫ ~250 ♫ ♫| ♫ Akademisk abstrakt format ♫
| `citations` | automatiskt | Nyckelcitater med enbart källkodscitater
| `bookreport` | ~500 | | | bokrapport |  | bestämning | , | tecken | , | kurva |, | tema
| `meeting` |  ~200
| `strict` |  ~60

För att se alla tillgängliga templater med Beschreibungar:

```bash
docsummarizer templates
```

### Modell Benchmarking

Vergleicha 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"
```

Benchmarkkommandot analyserar dokumentet en gång, sen kör varje modell på samma bitar för att göra en rättvis jämförelse . utgången visar timing , ordtal M SK3 och ord MSC4 sekund för varje modell Mska5

### Batchprocessing

Fördela 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
```

### Kommandot-Rysoptioner

| Option | Kort | Beschreibung | Standard |
|--------|-------|-------------|---------|
| `--file` | `-f` | Gidsväg till dokumentet (DOCX, PDFM SK3 MD
| `--directory` | `-d` | Gidsväg till katalog för slagprocessing
| `--url` | `-u` | Web-URL för att få fram och summera
| `--web-enabled` | | Aktivera att få fram webbsidor ♫ ♫ ( ♫ är nödvändigt för ♫ `false` |
| `--mode` | `-m` | Summariseringsmöjlighet : Automatiskt , BertRagM SK3 Bert, BertHybridMska5 MapReduceMske6 RagM Ska7 Iterativt Mska8 `Auto` |
| `--structured` | `-s` | Använd strukturerad JSON extraktionsmodi | `false` |
| `--focus` | | Fokusfrågan för RAG-läger ♫ ♫ | ♫ Ingen ♫
| `--query` | `-q` | sökmodi istället för sammanfattning | Ingen |
| `--model` | | Ollama-modellen för att använda | `llama3.2:3b` |
| `--verbose` | `-v` | Se detaljerad utveckling med live UI | `false` |
| `--config` | `-c` | Gidsväg till Konfigurationsdatet | Omedelbart
| `--output-format` | `-o` | utgångsformatet : konsolen , text, , markering `Console` |
| `--output-dir` | ♫ | ♫ utgångskatalog för lêerutsläpp ♫ ♫ Current dir ♫
| `--extensions` | `-e` | Dateiextensioner för slagläger | | | Alla dokumenteringsformat |
| `--recursive` | `-r` | Processkataloger rekursivt | `false` |
| `--template` | `-t` | Syntaxbetecknings- -( default , brief , bullets , executive , etc `default` |
| `--words` | `-w` | Bestämde ordtal ( överrider templaten | | ) |

| `--embedding-backend` | | Embedding backend: OnnxM SK3 Ollama | `Onnx` |
| `--embedding-model` | | Modell namn på ONNX | |  | RAG-läger `AllMiniLmL6V2` |
| `--web-mode` | | Web-fetch-läger: EnkeltM SK3 Playwright | `Simple` |
| `--analyze` | `-a` | Runa kvalitetanalys på sammanfattningen | `false` |

## Summariseringsmodi

### Reduktion av kartan (Empfohlen )

Det är bäst för komplexa sammanfattningar med hela dokumentskydd.

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

**Hur det fungerar**:

1. Splitter dokument i strukturella chunks (med underkategorier)
2. sammanfattar varje del parallellt med hjälp av LLM
3. Reducer sammanfattningar till Executive Summary med citat
4. Validaterar alla citationer som referens till verkliga chunks

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

För väldigt långa dokument där sammansatta chunkbeteckningar överträffar modellen's kontextfenster, MapReduce använder automatiskt hierarkisk reduktionM SK2

1. **Batchning**: Summaryr i lager som passar in i sammanhanget
2. **Intermediat minskning**: Reducer varje lager till en sammanfattad summary
3. **slutgiltiga minskning**: Merger mellanförteckningar till slutresultatet
4. **Rekursiv**: Om mellanmålen fortfarande är för storaM SK1 lägger till fler nivåer

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

Detta bevarar den fulla dokumentationen oberoende av längden. - varje chunk bidrar till den slutliga sammanfattningen.

**Förmågor**: snabb , komplett täckning , parallell processing M SK3 hanterar vilken dokumentlängd som helst
**Olyckor**: Kan misslyckas med korsning - sektioner

### RAG (Best for Focused Queries)

Det bästa 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. Indekserar dokumentskivor som vektorbäddar i Qdrant
2. Extraherar nyckelämnen från dokumentens titre
3. Retriever relevanta chunks per tema med hjälp av semantisk sök
4. Syntheserar koncentrerad sammanfattning med citat

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

| Scenario | | | bästa mode ||
|----------|-----------|
| "Sämma hela dokumentet
"" Vad säger detta om säkerhet? ""
| 500-bokhandboken, behöver allting | | | MapReduce
| 500-bokhandboken, kräver särskild sektion | | | RAG |
| Bra snabba resultat , inte möjliga

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

**Förmågor**: Topic
**Olyckor**: Kan missa innehåll utanför fokusområdet , kräver Qdrant

### Iterativ

Det bästa för berättelsedokument där kontexten strömmar i ordning

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

**Varning**: långsammare och kan förlora kontext på långa dokument

## Den stora dokumentführern

### Att välja den rätta metoden

| Dokumentets typ | | | mål | | | sätt | МSK3 | varför ||
|---------------|------|------|-----|
| Technische specifikation (50+ sidor) | Tillvägagångsförfattning | | | Reduktion av kartan || | Hela omfång |
| Den nya | / | Berättelse ♫ | | Executive summary | | MapReduce ♫
| Rättsöverenskommelse | Executive summary | MapReduce | Kan | ' | Missklagar | |
| Rätts contract | | | " | Zahlungsbedingungen | ?" | МSK4 | RAG |
| API-docs ♫ (200 ♫ sidor ♫ МSK2 ♫ ♫
| forskningssatsen | översiktfull | | | MapReduce | | 3 | Strukturerad | 4 | behöver allt | 5

### Fiction vs Non-Fiction

| innehållstyp | bästa modet
|--------------|-----------|-------|
| **Fiction/Berättelse** | MapReduce | Plott kräver sekvenserad kontext |
| **Teknikdokument** | Båda | | | MapReduce för överblick |, | RAG för specifikation |
| **lagliga/överdrag** | Reduktion av kartan | Varje klausl spelar roll |
| **Instruktioner** | RAG ♫ ♫ | ♫ Vanligtvis frågar man efter specifika ♫

### Förmågor

| Dokumentsstorlek | | | MapReduce | | | RAG | МSK3 | Anteckningar
|---------------|-----------|-----|-------|
| 10 sidor | ♫ ♫ 15 ♫
| 50 sidor | | | МSK3s | | |
| 200 sidor | ♫ ♫ 3-5 ♫ min | | ♫
| 500+ sidor ♫ ♫ | ♫

## Konfiguration

### Generera standardkonfiguration

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

### Konfigurationsdatet

Konfigurationen är automatiserad.

1. `--config` alternativ
2. `docsummarizer.json` i det nuvarande gids
3. `.docsummarizer.json` ( gömd file)
4. `~/.docsummarizer.json` (användaren hem  )

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
  }
}
```

### Bearbetande alternativ

| Option | Standard | Beschreibung |
|--------|---------|-------------|
| `maxLlmParallelism` | ♫ 8 ♫ ♫| ♫ Samma LLM-delar ♫
| `maxHeadingLevel` | 2 | | | Splitt på H | 1/ | H , 2 | bara . | Set till 3 | för finare granularitet
| `targetChunkTokens` | 0 | |  | automatiserad | 3 | 4 | Target chunk size | 5 | 6 | 7 | Automatiserad
| `minChunkTokens` | 0 ♫ ♫ ( ♫ automatiserat ♫

## Utgångsformat

### sammanfattningsstruktur

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

**Träg mätningar**: Omfattning (% inbegripande sektioner ), Citationsgrad (citationer/bulletM SK5 Fördelade skräddar ♫ ( ♫ RAG kan hoppa över vissa ♫). ♫

## Rekommendationer för modeller

| Modell | | | Storlek | МSK2 | Spod || | Jakt |
|-------|------|-------|---------|----------|
| `qwen2.5:1.5b` | 986MB | Väldigt snabbt ♫ (~3s ♫) ♫ | ♫ Bra ♫ | ♫ Görligt optimerat ♫| ♫
| `gemma3:1b` | | | 815 | MB | МSK2 | Fast | 3 | 4 | 5 | Fair | 6 | Alternativ liten modell |
| `llama3.2:3b` | 2GB | Medel (~15s) | | 5 | Mycket bra | | **Default** - bra balans |
| `ministral-3:3b` | 2.9GB | Medel (~20s) | | 5 | Mycket bra | | | Kvalite | - | fokuserad ||
| `llama3.1:8b` | 4.7GB | långsamt (~45s) | | 5 | Utmärkt | | | Hög | - | Kvalitesuppfattningar

> **Tipp**: För snabbare sammanfattningar (~3s jämfört med `--model qwen2.5:1.5b`. För kritiska dokument där kvalitet spelar större roll `--model llama3.1:8b`.

## bygga från källan

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

# Build
dotnet build

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

### Self-Inbyggda byggnader

För produktionsimplementering utan att behöva .NET runtime installering:

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

utgång: `bin/Release/net9.0/<runtime>/publish/docsummarizer`

## Troubleshooting

### "Kan inte koppla till Ollama

- Se till att Ollama kör: `ollama serve`
- Kontrollmodellerna drars ut: `ollama list`

### "Docling-tjänsterna är inte tillgängliga

- Det här är **som bara behövs för PDF/DOCX-Dater**
- För Markdown- filer, kan du ignorera den här felen
- Att fixa: `docker run -p 5001:5001 quay.io/docling-project/docling-serve`

### "Kdrantuppkoppling fel

- Det här är **som bara krävs för RAG-läger** (`--mode Rag`)
- För MapReduce-modus (default), kan du ignorera den här felen
- Att fixa: `docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant`

### "Kircuitbreaker är öppen

- Ollama är överfull eller har kraschat
- Vänta 30 sekunder till att kretsbrytare ska återställa , eller starta igen Ollama
- verktyget använder Pollys motståndskraftspolitiker och kommer att

### "wsarecv

- Detta är ett känt Ollama-problem på Windows (GitHub #13340)
- verktyget auto- hanterar detta med återproberad logik och kopplings återhämtning
- Om persistent, fortsätter Ollama och försöker igen

### "LLM generation tog slut

- Höj tidutbrottet i konfigurationen
- Splittra väldigt stora dokument
- kolla om Ollama inte är överfull med andra begäran

### Repetitiv eller lågt-Kataluppfattningar

**Symptom**: Bullet points echo the prompt

**Saken**: Modell som kämpar med efterfrågan eller innehållet för långt

**Fixera**: Standard `qwen2.5:1.5b` hanterar de flesta dokument väl. För problematiska dokument, försök `--model llama3.2:3b`. Se [Rekommendationer för modeller](#model-recommendations).

### sammanfattning Ignor dokumentinnehåll

Om sammanfattningen verkar generisk eller inte

- Modellet kan ha hallucinationer - kontroll `Citation rate` i spårresultatet
- Försök RAG-läge (`--mode Rag`) som baserar sammanfattningar i uppfunna chunks
- Använda `--verbose` för att se vilka bitar som processas

### Citationer saknas eller inte är korrekta

Om sammanfattningar saknas `[chunk-N]` citationer:

- Små modeller prioriterar innehåll jämfört med citationsformatering
- Sprängarna är optimerade för hastigheten, inte strikt citation conformitet
- För strikta citat, använder större modeller som `llama3.2:3b`
- Kontroller `Citation rate` i spår - högre värden indikerar bättre spårbarhet

## Performance-tips

- **Reduktion** för hastighet (parallela chunks)
- **`qwen2.5:1.5b`** för hastighet, **`llama3.2:3b`** för saldot, **`llama3.1:8b`** för kvalitet
- **Inbäddar för ONNX** (default) är snabbare än Ollama för RAG-läger
- Nedre **`maxLlmParallelism`** om du upplever avbrott

## resurser

- [källkod](https://github.com/scottgal/mostlylucidweb/tree/main/Mostlylucid.DocSummarizer)
- [GitHub-utsläpp](https://github.com/scottgal/mostlylucidweb/releases?q=docsummarizer)
- [Dokling](https://github.com/docling-project/docling) / [Docling-Serve](https://github.com/docling-project/docling-serve)
- [Qdrant](https://qdrant.tech/) - Lokala vektordatabas
- [Ollama](https://ollama.ai/) / [Ollamascharp](https://github.com/awaescher/OllamaSharp)
- [Polly](https://github.com/App-vNext/Polly) - .NETs motståndskraft och tillfälliga handlingar
- [Spectre.Konsole](https://spectreconsole.net/) - vackra terminalgränssnitt

## Seri Navigation

- **[Del 1: Att bygga en dokumentuppfattare med RAG](/blog/building-a-document-summarizer-with-rag)** - Architekturen och mönsterna
- **[Del 2: Att använda verktyget](/blog/docsummarizer-tool)** (den här artikeln
- **[Del 3: avancerade koncept](/blog/docsummarizer-advanced-concepts)** - djupt dyka in i BERT

### Binärligt

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