Powrót do strony głównej

PageIndex w RAG: zamiana wyszukiwania wektorowego

PageIndex zastępuje wyszukiwanie wektorowe w RAG hierarchicznym TOC budowanym LLM. Analiza skalowalności, eksperymenty z modelami lokalnymi (qwen3:14b — 69% accuracy). Instrukcja uruchomienia i poprawek dla PDF.

PageIndex: RAG bez wektorowych baz danych — testy i uruchomienie
Advertisement 728x90

PageIndex jako alternatywa dla wyszukiwania wektorowego w RAG: analiza i uruchomienie lokalne

PageIndex proponuje zastąpienie wyszukiwania wektorowego w RAG hierarchiczną strukturą dokumentu. Dokument jest segmentowany na strony, LLM buduje drzewo spisu treści z podsumowaniami węzłów. Zapytanie wyszukiwania jest kierowane do LLM w celu wyboru odpowiednich węzłów, po których następują wyodrębnione strony jako kontekst. Bez chunkingu, embeddingów i wektorowych baz danych.

Ograniczenia przy skalowaniu

PageIndex jest zoptymalizowany dla pojedynczych dokumentów. Dla kolekcji proponują:

  • Filtrowanie według metadanych (w opracowaniu, analogicznie do magazynów wektorowych).
  • Wyszukiwanie według wygenerowanych opisów (dla małej objętości).
  • Wyszukiwanie semantyczne (powrót do wektorowych embeddingów).

Spis treści z podsumowaniami kompresuje kontekst 4–5 razy. Alternatywy takie jak TF-IDF lub BM25 wymagają indeksowania. Przechowywanie spisu treści dla tysięcy dokumentów nie zostało rozwiązane. LLM zastępuje tutaj wyszukiwanie według podobieństwa wyszukiwaniem według trafności, analogicznie do czytania złożonego tekstu przez spis treści.

Google AdInline article slot

Deklarowana dokładność 98,7% na FinanceBench (w porównaniu z ~90% wyszukiwania wektorowego) jest osiągana dzięki rozumowaniu. Koszt jest dziesiątki razy wyższy. Testowano na gpt-4o i gpt-5.4.

Eksperymenty z modelami lokalnymi

Testowano na artykule akademickim o Cyberpunk 2077 (PDF, ~17k tokenów). Potok Markdown jest analogiczny do MarkdownTextSplitter z LangChain – podział według nagłówków.

Potok PDF automatycznie wyodrębnia nagłówki, ale z problemami:

Google AdInline article slot
  • Błędy wyjść JSON – przetwarzanie tekstu (usuwanie bibliografii, cudzysłowów).
  • Próg dokładności 60% – obniżony przez env ACCURACY_THRESHOLD.
  • Niska dokładność z powodu dopasowania węzłów i fragmentów przez LLM – zwiększono MAX_TOKENS z 20k.

Modele:

  • gemma3:27b – halucynuje spis treści (dokładność <60%).
  • gpt-oss:20b – dokładność 57–63%, stabilnie.
  • qwen3:14b – dokładność 69,57%, ale błędy JSON.

Czas na GPU 16GB: ~30 min (korekcja błędów dominuje).

Przykład spisu treści (gpt-oss:20b, dokładność 0.63):

Google AdInline article slot
{
  "doc_name": "2077.pdf",
  "structure": [
    {
      "title": "Wprowadzenie",
      "node_id": "0000",
      "start_index": 1,
      "end_index": 3,
      "summary": "Artykuł bada, jak gra wideo Cyberpunk 20...",
      "text": "Perspektywa Cyberpunk 2077 na przewidywanie i..."
    },
    {
      "title": "Przegląd literatury",
      "node_id": "0001",
      "start_index": 3,
      "end_index": 3,
      "summary": "Częściowy dokument przedstawia przegląd literatury ...",
      "text": "umieszczając Cyberpunk 2077 w szerszym kontekście ...",
      "nodes": [
        // ... podwęzły
      ]
    }
    // ... pozostałe węzły
  ]
}

Konfiguracja i uruchomienie lokalne

Instalacja: liteLLM==1.82.0 (nowsze wersje są podatne na ataki). Nie używać pip install pageindex – to dla API.

Notatniki: MinimalPageindexLocalPDF.ipynb, MinimalPageindexLocalMD.ipynb.

Modyfikacje utils.py: OLLAMA_HOST, OLLAMA_TIMEOUT.

page_index.py: ACCURACY_THRESHOLD, MAX_TOKENS.

Proces:

  • Ładowanie dokumentu (PDF/MD).
  • LLM buduje spis treści (find_toc_pages).
  • Segmentacja na strony/wiersze.
  • Budowanie drzewa węzłów z podsumowaniami.
  • Korekcja dokładności.
  • Wyszukiwanie: LLM wybiera węzły według zapytania → wyodrębnianie stron → finalny RAG.

PageIndex integruje LLM w pobieraniu dla śledzonego wyszukiwania z odnośnikami do stron/działów. Nadaje się do złożonych dokumentów, ale jest zasobożerny dla produkcji.

Co jest ważne

  • Skalowanie: Brak gotowego rozwiązania dla dużych kolekcji bez wyszukiwania wektorowego.
  • Dokładność: Zależy od modelu; lokalne (qwen3:14b) dają 69%, ale z błędami.
  • Koszt: +8–9% dokładności za x10–xN zasobów w porównaniu z wektorowym RAG.
  • Formaty: PDF z automatycznym wykrywaniem nagłówków; MD według struktury markdown.
  • Modyfikacje: Konieczne env dla progów i tokenów na słabym sprzęcie.

— Editorial Team

Advertisement 728x90

Czytaj dalej