Back to discovery
Knowledge & RAG

Page Index

πŸ“‘ PageIndex: Document Index for Vectorless, Reasoning-based RAG

Worth exploring for

Data-connected agents and retrieval workflows

In our collection

3 releases

Source

Official GitHub release feed

Follow the changes

The release trail

Atom feed

Original notes, ready to explore. Open a release to see what changed.

Page Indexv0.2.18

From the release notes

The PageIndex SDK, local or cloud β€” vectorless, reasoning-based RAG, end to end. Much faster indexing β€” the PageIndex Flash engine gets the tree from layout stats: no LLM involved for the structure generation itself, LLMs only write the node summaries, and tree expansion proposes a wave of nodes concurrently. client = PageIndexClient() client.submit_document("report.pdf") client.chat("What does the report conclude?") Index, to chat, to agent integration, one client. Local mode needs no server, no vector DB, no PageIndex API key. Highlights Flash engine: the local default (mode="standard" keeps the classic LLM pipeline). Embedded bookmarks are consumed when trustworthy, and tree optimization is on by default β€” optimize="merge" for the deterministic LLM-free pass, "full" (default) adds LLM expand, which runs a wave of nodes concurrently instead of one round-trip at a time. One complete surface, local and cloud: PageIndexLocalClient(storage_path=...) is the same client as cloud β€” submit, tree, page content, chat, and agent tools all present in both modes, so code moves between them unchanged. Cloud documents, your own model: api_key decides where your documents live; a configured chat model decides who answers β€” and the two combine. PageIndexClient(api_key="pi-...", chat_model="openai/gpt-5.2") runs the same in-process document-QA engine over the live cloud tool set. Page content flows through your process to your provider on your credentials; doc_id targets at the prompt level; enable_citations stays with the managed chat. Agent integration: the cloud MCP tool contract, in-process β€” client.agent_tools() (plain functions), as_openai_tools(), as_anthropic_tools(), as_claude_mcp(), plus one-call openai_agent_config() / anthropic_runner_config() / claude_agent_config() bundles and agent_instructions() for the system prompt. Cloud clients get the live server tool set over the MCP bridge (read-only endpoint by default); local clients get the in-process subset with the same schemas and envelopes β€” agent prompts port unchanged. Chat surfaces: chat() β€” question in, answer out, on any backend; chat(stream=True) shows the run as it happens, thinking and tool calls woven into the text, or as typed events via .events; chat(protocol="responses" | "messages") drives the OpenAI Responses or Anthropic Messages API natively with that protocol's own shapes, and chat_completions() keeps the OpenAI-compatible envelope β€” all with doc_id targeting, streaming, honest usage accounting, and prompt-cache continuity across turns. Transcripts append verbatim: a protocol lane's output goes back into the next request unchanged. Model & connection knobs: index_model / chat_model, index_backend / chat_backend (and per-call backend) passed verbatim to each lane β€” LiteLLM-routed providers, keyless OpenAI-compatible servers, Azure/Bedrock/Vertex included. index= / chat= slots: the grouped spelling of the flat arguments β€” a string shorthand or a mapping (index={"model": ..

Page Indexv0.2.17

From the release notes

The PageIndex SDK, local or cloud β€” vectorless, reasoning-based RAG, end to end. Much faster indexing β€” the PageIndex Flash engine gets the tree from layout stats: no LLM involved for the structure generation itself, LLMs only write the node summaries, and tree expansion proposes a wave of nodes concurrently. client = PageIndexClient() client.submit_document("report.pdf") client.chat("What does the report conclude?") Index, to chat, to agent integration, one client. Local mode needs no server, no vector DB, no PageIndex API key. Highlights Flash engine: the local default (mode="standard" keeps the classic LLM pipeline). Embedded bookmarks are consumed when trustworthy, and tree optimization is on by default β€” optimize="merge" for the deterministic LLM-free pass, "full" (default) adds LLM expand, which runs a wave of nodes concurrently instead of one round-trip at a time. One complete surface, local and cloud: PageIndexLocalClient(storage_path=...) is the same client as cloud β€” submit, tree, page content, chat, and agent tools all present in both modes, so code moves between them unchanged. Cloud documents, your own model: api_key decides where your documents live; a configured chat model decides who answers β€” and the two combine. PageIndexClient(api_key="pi-...", chat_model="openai/gpt-5.2") runs the same in-process document-QA engine over the live cloud tool set. Page content flows through your process to your provider on your credentials; doc_id targets at the prompt level; enable_citations stays with the managed chat. Agent integration: the cloud MCP tool contract, in-process β€” client.agent_tools() (plain functions), as_openai_tools(), as_anthropic_tools(), as_claude_mcp(), plus one-call openai_agent_config() / anthropic_runner_config() / claude_agent_config() bundles and agent_instructions() for the system prompt. Cloud clients get the live server tool set over the MCP bridge (read-only endpoint by default); local clients get the in-process subset with the same schemas and envelopes β€” agent prompts port unchanged. Chat surfaces: chat() β€” question in, answer out, on any backend; chat(stream=True) shows the run as it happens, thinking and tool calls woven into the text, or as typed events via .events; chat(protocol="responses" | "messages") drives the OpenAI Responses or Anthropic Messages API natively with that protocol's own shapes, and chat_completions() keeps the OpenAI-compatible envelope β€” all with doc_id targeting, streaming, honest usage accounting, and prompt-cache continuity across turns. Transcripts append verbatim: a protocol lane's output goes back into the next request unchanged. Model & connection knobs: index_model / chat_model, index_backend / chat_backend (and per-call backend) passed verbatim to each lane β€” LiteLLM-routed providers, keyless OpenAI-compatible servers, Azure/Bedrock/Vertex included. index= / chat= slots: the grouped spelling of the flat arguments β€” a string shorthand or a mapping (index={"model": ..

Page Indexv0.2.16

From the release notes

The PageIndex SDK, local or cloud β€” vectorless, reasoning-based RAG, end to end. Much faster indexing β€” the PageIndex Flash engine gets the tree from layout stats: no LLM involved for the structure generation itself, LLMs only write the node summaries, and tree expansion proposes a wave of nodes concurrently. client = PageIndexClient() client.submit_document("report.pdf") client.chat("What does the report conclude?") Index, to chat, to agent integration, one client. Local mode needs no server, no vector DB, no PageIndex API key. Highlights Flash engine: the local default (mode="standard" keeps the classic LLM pipeline). Embedded bookmarks are consumed when trustworthy, and tree optimization is on by default β€” optimize="merge" for the deterministic LLM-free pass, "full" (default) adds LLM expand, which runs a wave of nodes concurrently instead of one round-trip at a time. One complete surface, local and cloud: PageIndexLocalClient(storage_path=...) is the same client as cloud β€” submit, tree, page content, chat, and agent tools all present in both modes, so code moves between them unchanged. Cloud documents, your own model: api_key decides where your documents live; a configured chat model decides who answers β€” and the two combine. PageIndexClient(api_key="pi-...", chat_model="openai/gpt-5.2") runs the same in-process document-QA engine over the live cloud tool set. Page content flows through your process to your provider on your credentials; doc_id targets at the prompt level; enable_citations stays with the managed chat. Agent integration: the cloud MCP tool contract, in-process β€” client.agent_tools() (plain functions), as_openai_tools(), as_anthropic_tools(), as_claude_mcp(), plus one-call openai_agent_config() / anthropic_runner_config() / claude_agent_config() bundles and agent_instructions() for the system prompt. Cloud clients get the live server tool set over the MCP bridge (read-only endpoint by default); local clients get the in-process subset with the same schemas and envelopes β€” agent prompts port unchanged. Chat surfaces: chat() β€” question in, answer out, on any backend; chat(stream=True) shows the run as it happens, thinking and tool calls woven into the text, or as typed events via .events; chat(protocol="responses" | "messages") drives the OpenAI Responses or Anthropic Messages API natively with that protocol's own shapes, and chat_completions() keeps the OpenAI-compatible envelope β€” all with doc_id targeting, streaming, honest usage accounting, and prompt-cache continuity across turns. Transcripts append verbatim: a protocol lane's output goes back into the next request unchanged. Model & connection knobs: index_model / chat_model, index_backend / chat_backend (and per-call backend) passed verbatim to each lane β€” LiteLLM-routed providers, keyless OpenAI-compatible servers, Azure/Bedrock/Vertex included. index= / chat= slots: the grouped spelling of the flat arguments β€” a string shorthand or a mapping (index={"model": ..

A collected snapshot, not the complete archive.

Keep connecting the dots

LlamaIndex

Connect agents to private data, retrieval systems, and tools with a broad framework for context-aware applications.

Knowledge & RAG
Haystack

Design production-ready pipelines and agents for search, retrieval-augmented generation, and question answering.

Knowledge & RAG
Deer Flow

An open-source long-horizon SuperAgent harness that researches, codes, and creates. With the help of sandboxes, memories, tools, skill, subagents and message gateway, it handles different levels of tasks that could take minutes to hours.

Knowledge & RAG