Hierarkisk sammanfattning
Progressiv komprimering: kapitel → avsnitt → dokumentsammanfattning.
Hierarkisk sammanfattning är en gratis lektion i AI-promptteknik på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för AI-promptteknik, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AI-promptteknik innehåller totalt 4 lektioner.
Vad är hierarkisk sammanfattning?
Hierarkisk sammanfattning speglar själva dokumentets struktur. I stället för att behandla alla chunkar lika komprimeras innehållet nivå för nivå:
- Sidor → sektionssammanfattningar
- Sektioner → kapitel sammanfattningar
- Kapitel → dokumentsammanfattning
Varje nivå är en komprimerad representation av nivån under. Det är så människor sammanfattar böcker — genom att läsa kapitel, skapa mentala sammanfattningar och sedan integrera dem.
När hierarkisk sammanfattning bör användas
Hierarkisk sammanfattning är rätt val för:
- Böcker: över 200 sidor med tydlig kapitelstruktur
- Forskningsartiklar: abstract, inledning, metod, resultat, diskussion
- Juridiska avtal: sektioner med definierade rubriker (definitioner, skyldigheter, uppsägning)
- Tekniska rapporter: sammanfattning för ledningen → resultat → bilagor
Det är överdrivet för korta artiklar. Det fungerar bäst när dokumentet har en naturlig trädstruktur.
Dokumentets trädstruktur
Modellera dokumentet som ett träd:
- Rot: slutlig sammanfattning
- Nivå 1-noder: kapitel sammanfattningar
- Nivå 2-noder: sektionssammanfattningar
- Löv: råtext från sidor eller chunkar
Sammanfattningen går underifrån och upp: löv → nivå 2 → nivå 1 → rot. Varje nods sammanfattning härleds enbart från sammanfattningarna av dess underordnade noder.
from dataclasses import dataclass, field
from typing import List, Optional
@dataclass
class DocNode:
title: str
content: str = ''
summary: str = ''
children: List['DocNode'] = field(default_factory=list)
# Example: book with 3 chapters, each with 3 sections
book = DocNode(
title='My Book',
children=[
DocNode('Chapter 1', children=[
DocNode('Section 1.1', content='...raw text...'),
DocNode('Section 1.2', content='...raw text...'),
]),
DocNode('Chapter 2', children=[
DocNode('Section 2.1', content='...raw text...'),
])
]
)Sammanfattning underifrån och upp
Gå igenom trädet underifrån och upp. Lövnoder sammanfattas utifrån sitt råinnehåll. Interna noder sammanfattas utifrån sammanfattningarna av sina underordnade noder.
import openai
client = openai.OpenAI(api_key='sk-...')
def summarize_text(text, role='section'):
resp = client.chat.completions.create(
model='gpt-4o',
messages=[
{'role': 'system',
'content': f'Summarize this {role} in 3-5 sentences.'},
{'role': 'user', 'content': text}
]
)
return resp.choices[0].message.content
def summarize_tree(node, depth=0):
role = ['document', 'chapter', 'section', 'page'][min(depth, 3)]
if not node.children:
node.summary = summarize_text(node.content, role)
else:
for child in node.children:
summarize_tree(child, depth + 1)
combined = '\n\n'.join(
f'{c.title}:\n{c.summary}' for c in node.children
)
node.summary = summarize_text(combined, role)
return node.summarySuccessiv komprimering
Successiv komprimering innebär att varje nivå minskar informationsdensiteten. En bra tumregel:
- Sida (2000 token) → sektionssammanfattning (200 token) — 10 gångers komprimering
- Sektionssammanfattning (200 token) → kapitel sammanfattning (100 token) — 2 gångers komprimering
- Kapitel sammanfattningar (5 × 100 token) → dokument (150 token) — 3 gångers komprimering
Totalt: ett dokument på 10 000 token komprimeras till cirka 150 token samtidigt som huvudargumentet bevaras. Be varje nivå upprätthålla komprimeringsförhållandet.
PAGE_PROMPT = 'Summarize this page in 2-3 sentences (under 80 words).'
SECTION_PROMPT = 'Given these page summaries, write a section summary in 3-4 sentences (under 120 words).'
CHAPTER_PROMPT = 'Given these section summaries, write a chapter summary in 4-5 sentences (under 150 words).'
DOC_PROMPT = 'Given these chapter summaries, write an executive summary of the entire document (under 200 words).'Bevara sammanhanget mellan nivåerna
En risk med hierarkisk sammanfattning är att sammanfattningar på samma nivå kan motsäga eller upprepa varandra, och dessa fel förstärks uppåt i hierarkin. Strategier för att bevara sammanhanget:
- Inkludera den överordnade sektionens rubrik i prompten så att modellen känner till kontexten
- Be modellen undvika att upprepa fakta som redan angetts i tidigare sektionssammanfattningar
- Be uttryckligen modellen att lösa eventuella motsägelser i det slutliga reduce-steget
def summarize_sections_for_chapter(chapter_title, section_summaries):
content = '\n\n'.join(
f'Section: {s["title"]}\n{s["summary"]}'
for s in section_summaries
)
prompt = (
f'Chapter: {chapter_title}\n\n'
'Below are summaries of each section. '
'Write a unified chapter summary without repeating '
'the same facts from multiple sections.\n\n' + content
)
resp = client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': prompt}]
)
return resp.choices[0].message.contentForskningsartikelns hierarki
Forskningsartiklar har en naturlig hierarki: Abstract → Inledning → Metod → Resultat → Diskussion → Slutsats. Varje avsnitt har en tydlig roll, så använd avsnittsspecifika prompter:
SECTION_PROMPTS = {
'abstract': 'Summarize the paper abstract: what problem, method, and result?',
'introduction': 'Summarize the introduction: what gap does the paper address?',
'methods': 'Summarize the methods: what approach was used?',
'results': 'Summarize the results: what were the key findings and metrics?',
'discussion': 'Summarize the discussion: what do the results mean?',
'conclusion': 'Summarize the conclusion and future work.'
}
def summarize_paper(sections_dict):
section_summaries = {}
for section, text in sections_dict.items():
prompt = SECTION_PROMPTS.get(section, 'Summarize this section.')
section_summaries[section] = call_llm(prompt, text)
return section_summariesDet juridiska avtalets hierarki
Juridiska avtal följer en klausulhierarki: definitioner → skyldigheter → rättsmedel → uppsägning → tillämplig lag. Hierarkisk sammanfattning måste bevara:
- Exakta belopp (betalningsbelopp, tidsfrister)
- Parternas namn (kund, leverantör, licensgivare)
- Villkorsformuleringar (om inte, utom när, under förutsättning att)
Be modellen flagga varje klausul med ett numeriskt belopp eller villkor som den sammanfattar, så att det inte råkar utelämnas.
LEGAL_PROMPT = '''Summarize this contract clause in plain English.
Preserve: all monetary amounts, dates, party names, and conditionals.
Flag any obligation with [OBLIGATION] and any amount with [AMOUNT].'''
def summarize_clause(clause_text):
resp = client.chat.completions.create(
model='gpt-4o',
messages=[
{'role': 'system', 'content': LEGAL_PROMPT},
{'role': 'user', 'content': clause_text}
]
)
return resp.choices[0].message.contentLagra hierarkiska sammanfattningar
Lagra hela sammanfattningsträdet, inte bara rotsammanfattningen. Detta möjliggör:
- Detaljerad visning — visa kapitel sammanfattningen och sedan sektionssammanfattningen vid behov
- Retrieval — matcha en användarfråga mot sektionssammanfattningar, inte bara mot hela dokumentet
- Uppdatering — när en sektion ändras behöver Ni bara sammanfatta den grenen av trädet på nytt
import json
def tree_to_dict(node):
return {
'title': node.title,
'summary': node.summary,
'children': [tree_to_dict(c) for c in node.children]
}
def save_tree(node, path):
with open(path, 'w') as f:
json.dump(tree_to_dict(node), f, indent=2)
print(f'Saved summary tree to {path}')Inkrementella uppdateringar
När ett dokument uppdateras möjliggör den hierarkiska strukturen inkrementell omsammanfattning. Sammanfatta endast den ändrade noden och dess överordnade noder på nytt — alla syskongrenar förblir giltiga.
För en bok med 10 kapitel där kapitel 3 revideras: sammanfatta avsnitten i kapitel 3, därefter kapitel 3 och sedan boken på nytt. Beräkna om 3 noder i stället för alla noder.
def update_node(node, updated_child_title):
# Re-summarize the changed child
for child in node.children:
if child.title == updated_child_title:
summarize_tree(child) # re-summarize from leaves
break
# Re-summarize current node from updated children
combined = '\n\n'.join(
f'{c.title}:\n{c.summary}' for c in node.children
)
node.summary = summarize_text(combined)
return node.summaryPlatt jämfört med hierarkisk sammanfattning
Platt map-reduce jämfört med hierarkisk sammanfattning:
- Platt: enklare, ignorerar dokumentets struktur, bättre för enhetliga dokument (nyhetsartiklar)
- Hierarkisk: respekterar strukturen, möjliggör detaljnivåer, ger bättre sammanhang för strukturerade dokument
I praktiken kombinerar Ni båda: använd platt map-reduce inom varje kapitel (många sidor) och sedan hierarkisk sammanfattning mellan kapitlen. Detta är den mest robusta metoden för dokument från verkligheten.
Kunskapskontroll
I vilken riktning går sammanfattningsprocessen genom dokumentträdet vid hierarkisk sammanfattning?
Sammanfattning: hierarkisk sammanfattning
Hierarkisk sammanfattning speglar dokumentets struktur för bättre resultat:
- Modellera dokumentet som ett träd: sidor → sektioner → kapitel → dokument
- Sammanfatta underifrån och upp: löven först, roten sist
- Varje nivå tillämpar successiv komprimering för att bevara sammanhanget
- Bäst för böcker, forskningsartiklar och juridiska avtal med tydlig hierarkisk struktur
- Lagra hela trädet för att möjliggöra drill-down-retrieval och inkrementella uppdateringar
Nästa lektion: bevara kontexten mellan chunkar med överlappning och löpande sammanfattningar.
Lär dig AI-promptteknik med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 53
- Lektioner
- 199
Vanliga frågor
Är lektionen ”Hierarkisk sammanfattning” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen AI-promptteknik, inklusive ”Hierarkisk sammanfattning”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i AI-promptteknik innehåller totalt 4 lektioner.
Vad lär jag mig i ”Hierarkisk sammanfattning”?
Progressiv komprimering: kapitel → avsnitt → dokumentsammanfattning. Ni övar på AI-promptteknik med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig AI-promptteknik?
Du behöver inga förkunskaper. Utbildningen i AI-promptteknik på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Hierarkisk sammanfattning”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här AI-promptteknik-lektionen?
Ja. Varje AI-promptteknik-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Strategier för uppdelning av långa texter
- Map-Reduce-mönstret för sammanfattning
- Hierarkisk sammanfattning
- Bevara kontext mellan textdelar