mrkeyoor.com_
Thu 17 Sept 22:02 UTC
AI Toolsevaluationupdated 26 Aug 2026

PageIndex review

PageIndex builds a hierarchical tree from a document and lets a language model navigate that structure to answer questions, instead of splitting text into fixed chunks and searching a vector database. Its Python SDK can index and chat locally with your own model connection, or use a hosted service for OCR, image understanding, line-level citations, and corpus-scale features.

+59stars / 7d
Verdict

Our PageIndex run passed 345 tests with 0 failures in 181 seconds, while 50 tests were skipped and pip-audit found 1 vulnerability. Try it when long, structured PDFs defeat chunk-and-vector retrieval and you can pay for or host the model calls that tree search requires. Choose a broader RAG framework when you need custom retrieval stages, or the hosted product when scans and image understanding are non-negotiable.

We ran it

Lab card: what happened when we ran PageIndexScreenshot of PageIndex (pageindex.ai)
Install✓ · 43s94 packages · 226 MB
Build✓ · 7s
Tests✓ · 181s345 passed · 0 failed · 50 skipped of 345 (pytest)
Known vulns1(pip-audit)
Repo161 files~34,594 lines of source · 29.8 MB · 8 CI workflows · tests dir

Answers from our run

Does PageIndex build from source?

Dependencies installed in 43 seconds (94 packages), and the build succeeded in 7 seconds. We cloned commit 416e304 into a clean Debian container with 3 CPUs and no project-specific setup.

Do PageIndex's tests pass?

Yes: 345 of 345 passed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does PageIndex have known vulnerabilities in its dependencies?

pip-audit flagged 1 known advisory in the dependency tree at the time of our run.

Who should not use PageIndex?

Local-only users processing scans or image-heavy PDFs: the README reserves OCR and image understanding for PageIndex Cloud.

What are the alternatives to PageIndex?

LlamaIndex, RAGFlow, Haystack. Our PageIndex run passed 345 tests with 0 failures in 181 seconds, while 50 tests were skipped and pip-audit found 1 vulnerability.

Setup4/5Small SDK start, with model credentials and document costs afterward
Docs4/5Clear local-cloud split, APIs, tools, and current release guidance
Community4/5Same-day release and push, with active issue discussion
Maturity3/5345 tests passed, while local and cloud capabilities still diverge

Discussed on

  1. hnShow HN: PageIndex – Vectorless RAG192 points
  2. hnShow HN: A Vectorless LLM-Native Document Index Method14 points
  3. hnShow HN: Vectorless RAG11 points
  4. hnShow HN: RAG, No Vectors11 points
  5. hnShow HN: Human-like RAG — no vectors11 points

Who it’s for

Teams answering detailed questions over long, text-heavy PDFs with clear section structure.
Developers dissatisfied with similarity search when the relevant passage uses different words from the question.
Python applications that want one client for local document storage, chat, and agent tools.
Agent builders who need OpenAI, Anthropic, or MCP-shaped tool adapters around document retrieval.

Who it’s NOT for

Local-only users processing scans or image-heavy PDFs: the README reserves OCR and image understanding for PageIndex Cloud.
Teams seeking retrieval without model calls: Flash avoids an LLM for initial structure extraction, but models still write summaries and perform tree search.
Operators requiring an open-source multi-user server: the repository offers an in-process local SDK, while private hosted deployment is a sales contact.
Large workspaces that need paginated document listing or incremental document updates today: both are open requests.
Buyers assuming every cloud feature exists locally: the comparison table marks line-level citations, file-system indexing, and the hosted MCP server as cloud-only.

Setup reality

Our Python sandbox installed 94 packages in 43 seconds and used 226 MB on disk. The build completed in 7 seconds. pytest finished in 181 seconds with 345 passed, 0 failed, and 50 skipped. pip-audit reported 1 known vulnerability.

Local mode needs Python 3.10 or newer, a storage path, and a configured model backend for summaries and chat; that can be a provider key or a compatible local endpoint. Cloud mode adds a PageIndex API key and sends documents to the hosted service. Anthropic and Claude integrations use optional package extras.

The checkout measured 29.8 MB, 161 files, and roughly 34,594 source lines. It included a tests directory and 8 CI workflow files but no Dockerfile. The successful suite is reassuring for the SDK, though our lab did not submit documents to a paid model, test retrieval accuracy, exercise OCR, or verify the hosted service.

Tree search answers a different retrieval question

PageIndex rejects the usual pattern of cutting a document into fixed chunks, embedding each chunk, and finding nearby vectors. It creates a hierarchy of titled sections and summaries, then asks a language model to navigate that tree for relevant pages. This can help when the answer is contextually relevant but does not share obvious vocabulary with the question. The returned path is tied to explicit document sections rather than an opaque similarity score.

The default Flash mode extracts PDF structure from layout statistics rather than asking a model to invent the tree. Models still write node summaries and can expand or merge the structure. At query time, a model reasons through the tree and reads page content. Calling the method vectorless is accurate about the index, but it does not mean model-free, free of provider costs, or deterministic. Answer quality still depends on document parsing, tree quality, summaries, the query model, and prompts.

Local and cloud modes solve different document problems

The local SDK stores document data under a chosen path and exposes submission, structure inspection, page content, chat, and agent tools. It is designed for text-heavy PDFs. The cloud path adds hosted OCR, image retrieval and understanding, line-level citations, a file-system layer for large corpora, and an MCP server. One client can address either side, but the capability table is clear that local mode does not include every hosted feature.

This split is the main buying decision. A clean annual report with selectable text is a credible local candidate. A scanned contract, diagram-heavy technical manual, or mixed image archive needs OCR and visual handling, which the README assigns to Cloud. PageIndex also offers dedicated or private deployment through direct contact rather than a self-hosted server package in the repository. Teams with residency rules should settle that boundary before uploading documents.

What happened when we ran it

Our fresh Python 3.12 sandbox installed 94 packages in 43 seconds. They occupied 226 MB, and the build completed in 7 seconds. The checkout at commit 416e304 was 29.8 MB, with 161 files and roughly 34,594 source lines. That is a manageable SDK-sized repository rather than a large distributed search service.

pytest ran for 181 seconds and reported 345 passed with 0 failed; 50 tests were skipped. We are preserving the harness wording because its total is reported as 345 even though skipped tests are listed separately. pip-audit found 1 known vulnerability, but the measurement does not identify its package or severity. The project had a tests directory and 8 CI workflow files, with no Dockerfile.

This clean test result does not measure retrieval accuracy. Our sandbox had no secrets, so it did not pay a provider, submit a document to PageIndex Cloud, exercise OCR, or compare answers with vector search. It verifies installation, build, and the available local suite. Before adoption, run a labeled question set over your own PDFs and record answer correctness, citations, provider cost, latency, and failure behavior.

One SDK can speak several agent protocols

Model connections use LiteLLM naming. Local mode can call hosted providers through their keys or a compatible local endpoint. Index and chat models can differ, and release 0.2.11 separates index and chat backends more explicitly. This flexibility creates a privacy decision: local PageIndex storage does not make the workflow local if page content is sent to an external model provider. Map each processing lane and credential before describing a deployment as private.

Fresh issues identify scale and document-shape limits

Release v0.2.11 and the latest repository push both landed on August 25, 2026. The release added the unified local and cloud SDK, Flash indexing, agent adapters, stricter configuration validation, and clearer error propagation. GitHub lists 159 open issues and pull requests combined; a search excluding pull requests found 68 open issues.

Current reports give useful trial cases. list_documents() returns every document instead of offering pagination, which can hurt large workspaces. Incremental index updates for large documents remain a request. Other reports concern duplicate summaries for sibling nodes on one page, overly long fallback titles, a missing leaf-node key, non-strict model JSON crashing a build, and concurrent model requests hitting HTTP 429. Verify the issues that match your document and provider setup.

The published accuracy claim is not our measurement

The README links a separate benchmark repository and reports results for financial-document questions. We did not reproduce those figures, so they should be read as the project's evaluation rather than a MrKeyoor finding. Retrieval tests are particularly sensitive to document selection, question construction, answer grading, model version, and provider behavior. A finance score does not establish performance on legal exhibits, medical scans, or an internal engineering manual.

A useful pilot needs questions whose answers and source pages are known beforehand. Include cases with tables, appendices, repeated headings, cross-section references, and wording that differs from the query. Compare PageIndex with a competent vector or hybrid baseline. Also record abstentions and unsupported answers. The method earns its place only if the tree improves decisions on your documents, not because its architecture sounds more human.

Choose it for structured PDFs, not general RAG plumbing

LlamaIndex and Haystack expose many retrieval components, stores, loaders, and evaluation paths. They require more design but give teams control over chunking, ranking, metadata, and orchestration. RAGFlow is closer to a shared document application and puts more emphasis on parsing and OCR. PageIndex is narrower: a tree-based document index, reasoning retrieval, and a convenient agent-facing SDK.

Our 345 passing tests make the local package easy to trial. The local-cloud boundary is well stated, the repository is current, and setup does not require a vector database. The method still consumes model calls, local mode does not solve scans, and some workspace operations remain rough. Start with a fixed set of long, text-heavy PDFs. If it beats your current retrieval on answer correctness and source traceability, keep it; otherwise the broader frameworks leave more room to adjust the pipeline.

Alternatives

ProjectWhat it isPick it when
LlamaIndex gh↗A broad data framework for indexing, retrieving, and building agents over private sources.pick this instead when you need many loaders, retrievers, vector stores, and workflow choices rather than one tree-search method.
RAGFlow gh↗A document RAG system with parsing, OCR, retrieval, chat, and a server interface.pick this instead when scanned-document ingestion and a shared application matter more than an in-process Python SDK.
Haystack gh↗A Python framework for composing retrieval, generation, tools, and evaluation pipelines.pick this instead when you want to assemble and evaluate a custom retrieval pipeline from interchangeable components.

Sources

  1. PageIndex README
  2. PageIndex v0.2.11 release
  3. PageIndex documentation
  4. PageIndex open issues

More ai tools reviews

rowboat · skills · superpowers-zh · yolov5 · eve · MemOS · the whole board →