PageIndex jako alternativa vektorového vyhledávání v RAG: analýza a lokální spuštění
PageIndex nabízí nahrazení vektorového vyhledávání v RAG hierarchickou strukturou dokumentu. Dokument je segmentován na stránky, LLM vytváří strom obsahu (TOC) s výtahy uzlů. Vyhledávací dotaz je směrován do LLM pro výběr relevantních uzlů, za nimiž následují extrahované stránky jako kontext. Bez chunkingu, embeddingů a vektorových databází.
Omezení při škálování
PageIndex je optimalizován pro jednotlivé dokumenty. Pro kolekce navrhují:
- Filtrování podle metadat (ve vývoji, podobně jako u vektorových úložišť).
- Vyhledávání podle generovaných popisů (pro malý objem).
- Sémantické vyhledávání (vrací se k vektorovým embeddingům).
TOC s výtahy komprimuje kontext 4–5krát. Alternativy jako TF-IDF nebo BM25 vyžadují indexaci. Ukládání TOC pro tisíce dokumentů není vyřešeno. LLM zde nahrazuje vyhledávání podle podobnosti vyhledáváním podle relevance, podobně jako čtení složitého textu přes obsah.
Deklarovaná přesnost 98,7 % na FinanceBench (oproti ~90 % vektorového vyhledávání) je dosažena díky uvažování. Náklady jsou desítkykrát vyšší. Testováno na gpt-4o a gpt-5.4.
Experimenty s lokálními modely
Testováno na akademickém článku o Cyberpunk 2077 (PDF, ~17k tokenů). Markdown pipeline je podobný MarkdownTextSplitter z LangChain – dělení podle nadpisů.
PDF pipeline extrahuje nadpisy automaticky, ale s problémy:
- Chyby JSON výstupů – zpracování textu (odstranění seznamů literatury, uvozovek).
- Práh přesnosti 60 % – snížen přes env ACCURACY_THRESHOLD.
- Nízká přesnost kvůli LLM párování uzlů a fragmentů – zvýšen MAX_TOKENS z 20k.
Modely:
- gemma3:27b – halucinuje TOC (přesnost <60 %).
- gpt-oss:20b – přesnost 57–63 %, stabilně.
- qwen3:14b – přesnost 69,57 %, ale JSON chyby.
Čas na GPU 16GB: ~30 min (oprava chyb dominuje).
Příklad TOC (gpt-oss:20b, přesnost 0,63):
{
"doc_name": "2077.pdf",
"structure": [
{
"title": "Úvod",
"node_id": "0000",
"start_index": 1,
"end_index": 3,
"summary": "Článek zkoumá, jak videohra Cyberpunk 20...",
"text": "Perspektiva Cyberpunk 2077 na predikci a..."
},
{
"title": "Přehled literatury",
"node_id": "0001",
"start_index": 3,
"end_index": 3,
"summary": "Částečný dokument představuje přehled literatury ...",
"text": "kontextualizace Cyberpunk 2077 v širším ...",
"nodes": [
// ... poduzly
]
}
// ... další uzly
]
}
Nastavení a spuštění lokálně
Instalace: liteLLM==1.82.0 (novější verze jsou zranitelné). Nepoužívat pip install pageindex – to je pro API.
Notebooky: MinimalPageindexLocalPDF.ipynb, MinimalPageindexLocalMD.ipynb.
Úpravy utils.py: OLLAMA_HOST, OLLAMA_TIMEOUT.
page_index.py: ACCURACY_THRESHOLD, MAX_TOKENS.
Proces:
- Načtení dokumentu (PDF/MD).
- LLM vytvoří TOC (find_toc_pages).
- Segmentace na stránky/řádky.
- Vytvoření stromu uzlů s výtahy.
- Korekce přesnosti.
- Vyhledávání: LLM vybere uzly podle dotazu → extrakce stránek → finální RAG.
PageIndex integruje LLM do vyhledávání pro sledovatelné vyhledávání s odkazy na stránky/sekce. Vhodné pro složité dokumenty, ale náročné na zdroje pro produkci.
Co je důležité
- Škálování: Neexistuje hotové řešení pro velké kolekce bez vektorového vyhledávání.
- Přesnost: Závisí na modelu; lokální (qwen3:14b) dává 69 %, ale s chybami.
- Náklady: +8–9 % přesnosti za x10–xN zdrojů ve srovnání s vektorovým RAG.
- Formáty: PDF s auto-detekcí nadpisů; MD podle markdown struktury.
- Úpravy: Nutné env pro prahy a tokeny na slabém hardwaru.
— Editorial Team
Zatím žádné komentáře.