Zpět na domů

Problémy attention LLM v dlouhém kontextu

Článek rozebírá degradaci pozornosti v LLM na dlouhých kontextech: efekt Lost-in-the-Middle, růst halucinací a architektonické příčiny. Jsou popsány techniky chunking, reranking a verification pro RAG-systémy. Benchmarky 2025-2026 potvrzují problémy i u modelů s 1M tokeny.

LLM ztrácejí fakta uprostřed kontextu: opravy pro RAG
Advertisement 728x90

Proč LLM zapomínají fakta v dlouhém kontextu: analýza pozornosti a halucinací

LLM modely založené na transformerech trpí degradací pozornosti v dlouhých kontextech: primacy a recency bias oslabují zpracování středu textu. To vede k efektu Lost-in-the-Middle, nárůstu halucinací a ztrátě přesnosti i při oknech o milionu tokenů. V článku najdete příčiny problému a techniky pro produkční RAG systémy.

Problémy self-attention na dlouhých sekvencích

Self-attention v transformerech má kvadratickou složitost O(n²), což omezuje délku kontextu. Optimalizace jako FlashAttention, RoPE a ALiBi snižují náklady, ale zavádějí pozicní posuny:

  • Primacy bias: začátek kontextu se pamatuje nejlépe.
  • Recency bias: konec kontextu je také dostupný.
  • Střed se ztrácí: tokeny uprostřed získávají oslabenou pozornost kvůli causal masking a útlumu v positional embeddings.

Zvětšení okna kontextu neodstraňuje bias, ale rozšiřuje 'mrtvou zónu' uprostřed. Model neuznává mezery, ale generuje věrohodné, leč nepravdivé informace.

Google AdInline article slot

Efekt Lost-in-the-Middle v číslech

Výzkum Nelsona Liua (Stanford, 2023) ukázal U-křivku přesnosti: pokles o 30–50 % pro informace uprostřed 20–30 dokumentů. V letech 2025–2026 MIT a další laboratoře potvrdily přetrvávání efektu u modelů s 1M+ tokeny.

Benchmarky se vyvíjely:

  • Needle-in-a-Haystack: test hledání faktu v dlouhém textu.
  • U-NIAH (2026): porovnání long-context LLM a RAG.
  • NeedleBench, BABILong, LooGLE: ověření syntézy z rozptýlených částí.

Vectara Hallucination Leaderboard (HHEM-2.3, 2026) zaznamenává nárůst halucinací na 32K+ tokenech: model spojuje fragmenty A a C, ignoruje B a vymýšlí chybějící.

Google AdInline article slot

Mechanismus halucinací v dlouhém kontextu

OpenAI (2025, 'When More Becomes Less') poznamenal: větší kontext zvyšuje inferenci, ale snižuje kvalitu. Model vyplňuje mezery 'věrohodnými' souvislostmi. MIT (2025) dodal: jistota jazyka roste úměrně halucinacím – čím méně faktů, tím přesvědčivější výmysl.

Řetězec: dlouhý kontext → šum → rozostření pozornosti → absence faktu → RLHF trénink na 'vždy odpovídat' → kreativní halucinace.

Chunking strategie pro RAG

Efektivní RAG začíná správným rozdělením dokumentů. Vyhněte se výchozím splitterům – použijte cílené přístupy:

Google AdInline article slot
  • RecursiveCharacterTextSplitter (LangChain): chunky 400–512 tokenů, overlap 10–20 %. Spolehlivý pro strukturované texty.
  • SemanticChunker: rozdělení podle embeddingů, +15–20 % přesnosti na složitých datech.
  • HierarchicalNodeParser (LlamaIndex): hierarchie 2048 → 512 → 128 tokenů pro postupné vyhledávání.

Předávejte modelu 3–5 relevantních chunků místo 100K tokenů odpadu.

Příklad implementace chunkingu s rerankingem:

from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.retrievers import ContextualCompressionRetriever
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain_community.vectorstores import FAISS

# Recursive + overlap
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=512,
    chunk_overlap=100,
    separators=["\n\n", "\n", ". ", " ", ""]
)

# Semantic splitter
embeddings = HuggingFaceEmbeddings(model_name="sentence-transformers/all-mpnet-base-v2")
semantic_splitter = SemanticChunker(embeddings)

# Reranking
compressor = CrossEncoderReranker(model_name="BAAI/bge-reranker-large")
compression_retriever = ContextualCompressionRetriever(
    base_compressor=compressor,
    base_retriever=vectorstore.as_retriever(search_kwargs={"k": 20})
)

Vytáhneme 20 chunků, reranker ponechá top-5 – sníží šum.

Verification a agentic workflows

Po retrieval přidejte vrstvy ověření:

  • Self-Consistency / CoVe: generujte odpověď, poté otázky pro samokontrolu.
  • Critic Agent: samostatná LLM validuje odpověď na kontext.
  • Symbolic verification: Knowledge Graph nebo Pydantic pro data, čísla, jména.

Agentic workflow (standard 2026):

  • Planner: rozděluje úkol.
  • Retriever Agent: vyhledávání podle podúkolů.
  • Executor: generování.
  • Verifier: iterativní kontrola.

Minimální verification loop:

from langchain.agents import create_react_agent, AgentExecutor
from langchain.tools import Tool

def verify_answer(answer: str, context: str) -> str:
    prompt = (
        "Zkontroluj, zda odpověď odpovídá kontextu. "
        "Odpověz YES/NO + vysvětlení.\n"
        f"Context: {context}\n"
        f"Answer: {answer}"
    )
    return llm.invoke(prompt)

tools = [Tool(name="Verifier", func=verify_answer, description="Kontroluje odpověď na shodu s kontextem")]
agent = create_react_agent(llm, tools, prompt=react_prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True, max_iterations=5)

Hybrid neuro-symbolic pro high-stakes domény

V právu, medicíně, financích kombinujte LLM + Knowledge Graph + symbolic verifier. Snížení halucinací o 60–80 % (výzkumy 2025), ale vyžaduje infrastrukturu.

Co je důležité:

  • Dlouhý kontext zesiluje Lost-in-the-Middle a halucinace kvůli attention bias.
  • Chunking (recursive/semantic) + reranking – 70 % úspěchu RAG.
  • Verification layers (CoVe, critic agents) jsou v produkci povinné.
  • Agentic workflows se vyplatí při rizicích reputace.
  • Hybridní přístup pro regulované domény.

— Editorial Team

Advertisement 728x90

Číst dál