Grep or Embeddings? Agentic Search Over Company Documents — George He, LlamaIndex

Slide chapters

22 slide and demo groups · Timestamps are approximate.

Search and trustworthy results

George He frames enterprise document search around a harder question: how to turn grep, embeddings, or both into results people can trust.

Text in image
LLAMAPARSE · RETRIEVAL
ai engineer world's fair · live demo

RETRIEVAL FOR ENTERPRISE AGENTS

Everyone talks about search.
What about the results?

The debate is how to search — grep, embeddings, or both. The harder question: turning it into a result you can trust.

agent> search --hybrid "refund window" | grep -n | read | cite

SPEAKER
George He · Head of Engineering

WHEN
July 2 · AI Engineer World's Fair

Interface text:
File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
Work
New Chrome available

From the debate to a live demo

George He moves from the grep-versus-embeddings debate through agent tools and enterprise indexing challenges, with a live demo planned if time allows.

Text in image
OVERVIEW · THE ROADMAP
what we'll cover

THE PLAN
From the debate to a live demo.

01 The debate
Grep, embeddings, or both — and when an agent actually needs a vector index.

02 Build a harness
Don't choose for the agent — give it the tools and let it decide how to look.

03 The five tools
Hybrid retrieval, grep & read, and multimodal page reads with LlamaParse.

04 The enterprise tax
Multi-tenant search, permissions, and keeping the index fresh.

05 Inside the index
Distributed parsing and vector storage that scale to every tenant.

06 Live demo & Q&A
Watch the agent search, grep, read, verify, and cite — then your questions.

Interface text:
LlamaParse
File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
Work
New Chrome available

The retrieval debate

Agents can search files with grep and read, or retrieve and rerank indexed embeddings. George He frames these as two approaches that can also be combined.

Text in image
01 · THE DEBATE                                      two camps

THE QUESTION EVERYONE'S DEBATING

When (and why) do agents
need [struck through: a vector index] context?

Models are good now — so a wrong answer usually means the wrong document, not a bad model. That's a retrieval problem, with two popular fixes.

TEAM GREP
Drop the vector database. Give the agent a filesystem and let it list, grep, and read files — the way a developer would.

TEAM EMBEDDINGS
Index everything up front. Embed each chunk, find the closest matches to the question, rerank, and hand the top results to the model.

Interface text:
File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
Work
New Chrome available

The case for grep

Claude Code replaced an early RAG and local vector database approach with file search. Boris Cherny cites simpler operation and fewer security, privacy, staleness, and reliability issues; files stay the source of truth.

Text in image
02 · TEAM GREP
claude code

THE STRONGEST CASE FOR GREP

Anthropic took RAG out
of Claude Code.

They built Claude Code on RAG, then ripped it out for plain file search — glob, grep, read.

• Nothing to keep in sync — the files themselves are the source of truth.
• No second copy of your private code sitting in a vector store.
• It looks the way you would: file names, then matching lines, then the whole file.

Boris Cherny, creator of Claude Code. His wins — security, privacy, freshness, reliability — are what a local filesystem gives for free.

Boris Cherny
@bcherny

👋 Early versions of Claude Code used RAG + a local vector db, but we found pretty quickly that agentic search generally works better. It is also simpler and doesn’t have the same issues around security, privacy, staleness, and reliability.

8:56 PM · Jan 31, 2026 · 1.1M Views
via x.com/@bcherny

Interface text:
Everyone talks about docume[illegible]
LlamaParse
LlamaParse
chrome how to remove top co[illegible]
File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
Work
New Chrome available

Why grep works for code

Code repositories are usually small and structured, with symbols and paths that guide search. Their files are already plain text and on disk; company documents can lose all four advantages.

Text in image
03 · THE CATCH
read the fine print

BUT THERE'S A CATCH

But that only worked because it's code.

Grep did well because code is straightforward: small, already plain text, and you know the words to look for. Company data isn't.

CODE IS
Small
a repo fits on one machine

CODE IS
Structured
symbols, imports, paths

CODE IS
Plain text
you know the words to search

CODE IS
On disk
already sitting in a folder

Lose any one of these and grep starts to struggle. Company documents lose all four at once.

Interface text:
File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
Work
New Chrome available

The enterprise document corpus

Millions of files across thousands of customers demand server-side search that stays current, respects permissions, and handles layouts, tables, and scanned pages.

Text in image
04 · THE REAL CORPUS
enterprise docs

WHAT COMPANY DATA ACTUALLY LOOKS LIKE

There's no folder to grep.

Millions of files across thousands of customers — contracts, filings, scanned PDFs, spreadsheets, slide decks. Four problems you don't have with code:

SCALE
It's on a server and far too big to list or walk — the search has to run there.

FRESHNESS
It keeps changing — documents get updated, and the index can't be answering from an old copy.

SECURITY
Not everyone sees everything — each search has to respect who's allowed to see what.

FORMAT
It's not plain text — there's layout, tables, scanned pages, and charts.

Interface text:
Everyone talks about docume…
LlamaParse
LlamaParse
chrome how to remove top c…
File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
Work
New Chrome available

Anthropic’s hybrid playbook

Claude Code loads CLAUDE.md files up front and uses glob and grep to retrieve other files on demand. The slide argues for giving the agent tools and letting it choose per question.

Text in image
05 · THE TWIST
plot twist

HERE'S THE PART PEOPLE SKIP

Anthropic's own playbook is already hybrid.

ANTHROPIC · "EFFECTIVE CONTEXT ENGINEERING" 2025

"Claude Code employs this hybrid model: CLAUDE.md files are dropped into context up front, while glob and grep retrieve files just-in-time."

• It's both: CLAUDE.md loaded up front, glob and grep to pull the rest on demand.
• So the win isn't a smarter search — it's the harness: hand the agent every tool, and let it choose per question.

Source: anthropic.com/engineering/effective-context-engineering-for-ai-agents

Interface text:
Everyone talks about docume[illegible]
LlamaParse
LlamaParse
chrome how to remove top c[illegible]
File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
Work
New Chrome available

The role of corpus size

For tens to hundreds of files, list and read may suffice. As the corpus grows, the slide moves from grep to hybrid search, then semantic-first search to narrow down millions of files.

Text in image
06 · THE REAL VARIABLE
corpus size

A MORE USEFUL WAY TO THINK ABOUT IT

It mostly comes down to
how much data you have.

grep + read     hybrid     semantic-first

10s–100s of files     thousands     millions, multi-tenant

Not much data
Just list the files and read them. An index would only get in the way.

More data
Grep still works, but it starts missing things when questions are vague. Add semantic search.

Lots of data
Too big to walk. Now you need semantic search just to narrow it down.

Same agent, same tools — the right approach shifts as the data grows. So don't lock one in. Let the agent decide.

Interface text:
Everyone talks about docume…
LlamaParse
LlamaParse
chrome how to remove top co…
File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
Work
New Chrome available

The cost of context

The slide cites ~40 GB of GPU memory for one 128K context and > 2× slower time to first token per doubling. Retrieval pays for selected chunks on each query instead of resending the whole corpus.

Text in image
06 · THE COST
context isn't free

“WHY NOT JUST FEED IT EVERYTHING?”

More context, bigger bills.

Every token in the window costs GPU memory and compute — on every query. Stuffing the whole corpus into context is the most expensive way to retrieve.

GPU MEMORY · ONE 128K CONTEXT
~40 GB
and it grows with every token — NVIDIA

TIME TO FIRST TOKEN
> 2×
slower for every 2× of context — Meta

AND YOU PAY IT
every query
re-sent each request — vs an index you build once

Retrieval flips it: find the handful of chunks that matter and pay for those — not the whole corpus, on every call.

Interface text:
Everyone talks about docume…
LlamaParse
LlamaParse
chrome how to remove top c…
File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
Work
New Chrome available

Five tools, five questions

Retrieval searches broadly across the index; list_files, grep, and read help inspect the files it finds. Page screenshots give the agent a view of layouts and charts.

Text in image
08 · THE HARNESS
5 tools

EACH ONE ANSWERS A QUESTION THE AGENT HAS

Five tools, five questions.

“Where do I even look?”
retrieval
Hybrid vector + keyword search across the whole index. The broad first pass.
SEMANTIC · BREADTH

“What's in this folder?”
list_files
Lists files in a directory, with paging and name matching.
FILESYSTEM

“Where's the exact line?”
grep
Regex search inside files, with the surrounding context.
LEXICAL · PROOF

“What does it actually say?”
read
Reads a file in chunks by offset, and tells you how much is left.
LEXICAL · PROOF

“What does the page look like?”
get_page_screenshot
Pulls up the actual page image when layout or a chart matters.
MULTIMODAL

The same five tools, server-side, over any LlamaParse Index — search broadly, then verify in the files.

Interface text:
Everyone talks about docume…
LlamaParse
LlamaParse
chrome how to remove top c…
File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
Work
New Chrome available

Hybrid retrieval: vector and keyword

Hybrid retrieval blends vector and keyword results with reciprocal rank fusion, then reranks them. In Azure AI Search’s 2023 benchmark, NDCG@3 rises from 40.6 for keyword search to 60.1 after reranking.

Text in image
TOOL 01 · HYBRID RETRIEVAL
Inside the tool: vector + keyword.

VECTOR SEARCH
Finds meaning and paraphrase — but can miss an exact "Section 7(b)."

KEYWORD SEARCH · BM25
Nails exact terms — but ask for the "refund window" when the file says "returns in 30 days," and it finds nothing.

The retrieval tool runs both, blends them by reciprocal rank fusion, and reranks the top — one ranked list, two complementary signals.

RETRIEVAL QUALITY · NDCG@3
keyword: 40.6
vector: 43.8
+ fusion: 48.4
+ rerank: 60.1
+48%
Higher is better. Azure AI Search benchmark, 2023.

This is hybrid search — both signals inside one tool. Different from the agent choosing retrieval vs grep; the pattern holds across Azure, BEIR & Cohere.

08 · TOOLS · PRECISION
list · grep · read

Interface text:
File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
Work
New Chrome available

Finding exact words

The agent lists files, greps for a refund window, then reads the matching policy around line 40 to recover the literal text. Each call runs server-side and stays scoped to one project.

Text in image
08 · TOOLS · PRECISION
list · grep · read

TOOLS 02–04 · PRECISION

Sometimes you need the exact words.

A relevant chunk is usually close enough. But for a clause or an exact number, the agent needs the literal text — so it reads the files.

agent> list_files(contains="refund")
  3 files · refund-policy.pdf, terms.docx, returns.pdf
agent> grep("refund.{0,20}days")
  refund-policy.pdf:42 · "...full refund within 30 days..."
agent> read(refund-policy.pdf, from_line=40)
  "Customers may return any item for a full refund within 30 days..."

Same primitives as a coding agent's grep — but server-side, and every call stays scoped to one project.

Interface text:
Everyone talks about docume…
LlamaParse
LlamaParse
chrome how to remove top c…
File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
Work
New Chrome available

A page is more than its text

LlamaParse returns each page as text, an image, layout spans and a quality score. The agent can inspect the screenshot when a chart or other visual content cannot be understood from text alone.

Text in image
08 · TOOLS · LLAMAPARSE
parsed pages

TOOL 05 · LLAMAPARSE
A page is more than its text.

LlamaParse reads messy real-world documents — layout, tables, charts — and hands back each page as a rich object, not a wall of text:

text
the page as clean markdown

page image
a screenshot the model can look at

layout spans
every block + where it sits (bbox)

parse quality
a 0–1 confidence score

Many messy formats in → one clean, structured object out.

The get_page_screenshot tool hands that image straight to the model. Grep can't read a chart; the agent can just look at it.

Interface text:
Everyone talks about docume…
LlamaParse
LlamaParse
chrome how to remove top c…
File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
Work
New Chrome available

Measuring parse quality

ParseBench scores 14 parsers across five dimensions, from table structure and content faithfulness to visual grounding, charts and formatting. The slide reports LlamaParse Agentic leading at 84.9%.

Text in image
08 · TOOLS · PARSEBENCH
parse quality, measured

MEASURING PARSE QUALITY
How good is the parse, really?

We measured parse quality. ParseBench scores 14 parsers on what agents need — where text-similarity and TEDS fall short.
LlamaParse Agentic leads at 84.9%.

5 Novel OCR metrics in ParseBench

Tables — GTRM
What: Record-based table structure accuracy
Why: TEDS overweights structure, underweights semantic header correctness

Content faithfulness — CFS
What: Rule-based text completeness scoring
Why: Text similarity misses omissions and hallucinations

Visual Grounding — EPR
What: Joint localization-classification-attribution pass rate
Why: Ground needs content attribution, not just detection

Charts — ChartDataPointMatch
What: Exact chart data-point verification
Why: No prior metric for structured chart data extraction

Semantic Formatting — SFS
What: Meaning-bearing formatting preservation score
Why: Formatting carries meaning agents must preserve

Open benchmark · ~2,000 human-verified enterprise pages, 167k+ rules across finance, insurance & government.
llamaindex.ai/blog/parsebench

Interface text:
Everyone talks about docume[illegible]
LlamaParse
LlamaParse
chrome how to remove top c[illegible]
File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
Work
New Chrome available

Hybrid retrieval results

A 50/50 keyword-semantic search for “cash flow” returns text chunks alongside their source page screenshots, giving an agent a way to inspect the context around a result.

Text in image
alphabet
Healthy

Overview  Details  Code

Hybrid retrieve  Find  File grep  File read  View code

Query
cash flow

Top K
10

Metadata filters
Advanced options

Hybrid balance
Keyword 50%  50% Semantic
Run retrieve

Results  10 chunks
#1
Grep  Read

*Free cash flow.* We define free cash flow as net cash provided by operating activities less capital expenditures. We consider free cash flow to be a liquidity measure that provides useful information to management and investors about the amount of cash generated by the business that, after the acquisition of property and equipment, including information technology assets and land and buildings, can be used for strategic opportunities, including investing in our business, making strategic acquisitions, and strengthening the balance sheet. Analysis of free cash flow also facilitates management's comparisons of our operating results to competitors' operating results. A limitation of using free cash flow versus the

GOOGL-2015-Q1-earnings-release.pdf (synced) [illegible]  chunk #14  pages 9
chars 38917–40362
Page screenshot

Indexed files
Showing 1–20 of 135
Search files...
GOOGL-10-K-2022-02-02...
GOOG-legacy-10-Q-2005...
GOOG-legacy-10-K-2016-...
GOOG-legacy-10-K-2007-...
GOOG-legacy-10-Q-2009...
GOOGL-10-Q-2020-10-30...
GOOG-legacy-10-K-2012-...
GOOGL-10-Q-2026-04-3...
GOOGL-10-Q-2021-07-28...

SOURCE  alphabet
LAST SYNCED  06/29/26
CREATED  06/29/26
INDEX ID  [illegible]

Interface text:
Indexes > alphabet
alphabet  Chat  Sync now
staging.llamaindex.ai/project/[illegible]/index/[illegible]
Work  New Chrome available

19:27Demo milestone

Page screenshot preview

The expanded Page 9 preview shows the cash-flow table and source text behind a retrieved chunk, giving an agent visual context for the result.

Text in image
Page 9

Reconciliation from net cash provided by operating activities to free cash flow (in millions, unaudited):
Three Months Ended March 31, 2015
Net cash provided by operating activities: $6,617
Less: purchases of property and equipment: (2,927)
Free cash flow: $3,690
Net cash used in investing activities (a): $(7,304)
Net cash used in financing activities: $(391)

(a) Includes purchases of property and equipment.

Free cash flow. [illegible]

Interface text:
Indexes > alphabet
alphabet
Overview  Details  Code
Hybrid retrieve  Find  File grep  File read
Query: cash flow
Top K: 10
Close  Download
staging.llamaindex.ai/[illegible]

19:37Demo milestone

File grep results

File grep finds “cash flow” in a selected filing and returns character offsets. He explains that an agent can use an offset and a desired length to read a specific portion of a file.

Text in image
File grep
Regex-search one file's text.

File
GOOGL-2015-Q1-earnings-rele...

Regex pattern
cash flow

Context characters
0

Run grep

cash flow
#7  chars 34420–34429
cash flow
#8  chars 34447–34456
cash flow
#9  chars 34546–34555
cash flow
#10  chars 34976–34985
cash flow
#11  chars 35115–35124

Interface text:
Indexes > alphabet
alphabet
Healthy
Overview  Details  Code
alphabet  Chat  Sync now
SOURCE  alphabet
LAST SYNCED  06/29/26
CREATED  06/29/26
INDEX ID  dec-bk57qvmyr1t11xxupf9...
Hybrid retrieve  Find  File grep  File read
Indexed files
Showing 1–20 of 135
Search files...
GOOGL-10-K-2022-02-02...
GOOG-legacy-10-Q-2005...
GOOG-legacy-10-K-2016-...
GOOG-legacy-10-K-2007-...
GOOG-legacy-10-Q-2009...
GOOGL-10-Q-2020-10-30...
GOOG-legacy-10-K-2012-...
GOOGL-10-Q-2026-04-3...
GOOGL-10-Q-2021-07-28...
Everyone talks about docume...
LlamaParse
Chrome how to remove top c...
staging.llamaindex.ai/project/[illegible]/index/[illegible]
Work
New Chrome available

19:54Demo milestone

Reading an indexed file

File read returns 1,000 characters from an Alphabet filing at offset 500. He explains that these tools let an agent inspect remote files without downloading all their contents.

Text in image
alphabet
Healthy

Overview
Details
Code

SOURCE: alphabet
LAST SYNCED: 06/29/26
CREATED: 06/29/26
INDEX ID: dec-bk57qvmyr1t11xxupf9…

Hybrid retrieve
Find
File grep
File read

File read
Read a file's raw parsed text.

File: GOOGL-10-K-2022-02-02.htm …
Offset: 500
Max length: 1000
Run read

GOOGL-10-K-2022-02-02.htm (synced) 1000 chars
[illegible] · 1,000 chars
Copy

r)**

Delaware | 61-1767919
--- | ---
(State or other jurisdiction of incorporation or organization) | (I.R.S.
Employer Identification No.)

1600 Amphitheatre Parkway
Mountain View, CA 94043
(Address of principal executive offices, including zip code)

(650) 253-0000
(Registrant's telephone number, including area code)

Securities registered pursuant to Section 12(b) of the Act:

Indexed files
Showing 1–20 of 135
Search files...
GOOGL-10-K-2022-02-02...
GOOG-legacy-10-Q-2005...
GOOG-legacy-10-K-2016-...
GOOG-legacy-10-K-2007-...
GOOG-legacy-10-Q-2009...
GOOGL-10-Q-2020-10-30...
GOOG-legacy-10-K-2012-...
GOOGL-10-Q-2026-04-3...
GOOGL-10-Q-2021-07-28...

Interface text:
Indexes > alphabet
alphabet
Chat
Sync now
LlamaParse
Everyone talks about docume…
chrome how to remove top c…
staging.llamaindex.ai/project/[illegible]
Work
New Chrome available

20:42Demo milestone

Submitting a cash-flow question

George submits a question to the Alphabet index for a cash-flow or income table from 2021–2025. No answer is visible yet.

Text in image
New Chat

Give me the cash flow or income as a table from 2021-2025

Interface text:
Indexes > Chat > New Chat
alphabet
Share
Give me the cash flow or income as a table from 2021-2025
staging.llamaindex.ai/project/[illegible]/index/chat?sessionId=[illegible]
Everyone talks about docume...
LlamaParse
chrome how to remove top co...
Work
New Chrome available

21:06Demo milestone

Searching documents for cash flow

The agent searches for cash flow from 2021–2025, showing 10 chunks and retrieved table markup alongside a control to view 15 screenshots.

Text in image
Cash Flow Timeline 2021-2025

Show me cash flow over time 2021-2025

Thinking: The user is asking about cash flow over time for the years 2021-2025. I need to search the document database for information related to cash flow, financial statements, or similar topics that would contain this data. Let me start with a retrieval query about cash flow.

Searching documents — "cash flow 2021 2022 2023 2024 2025"    10 chunks
View Screenshots (15)

<table>
  <thead>
    <tr>
      <th></th>
      <th>Quarter Ended March 31,</th>
      <th></th>
    </tr>
    <tr>
      <th>2021</th>
      <th></th>
      <th>2022</th>
    </tr>
    <tr>
      <th></th>
      <th>(unaudited)</th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>Operating activities</td>

Interface text:
Indexes > Chat > Cash Flow Timeline 2021-2025
alphabet
Share
Ask a question about your documents...
LlamaParse
Work
New Chrome available
staging.llamaindex.ai/project/[illegible]/index/chat?sessionId=[redacted]

21:38Demo milestone

Search and the retrieval harness

The terminal illustration shows two failure modes: truncation can lose the right match, while passing all 847 matches consumes the token budget. The proposed harness searches broadly, then uses grep and read to confirm.

Text in image
LLAMAPARSE · RETRIEVAL

EVERYONE TALKS ABOUT SEARCH

Search finds it. The harness makes it a result you can trust.

• It was never either/or. Let the amount of data decide.
• Give the agent tools, not a recipe. Search broadly, grep and read to confirm.
• The index handles the enterprise parts — tenancy, permissions, freshness, formats.

Terminal illustration:
query: "section 12 termination conditions"
grep result
847 matches / 10,000 docs
[illegible] ...section 12 applies when either party...
[illegible] ...refer to Section 12 for dispute resolution...
[illegible] ...Section 12: General Provisions...
[illegible] ...as outlined in Section 12 of the agreement...
[illegible] ...Section 12 does not apply to disclosures...
[illegible] ...Section 12: Liability caps are defined...
[illegible] ...per Section 12, all invoices must be...
truncate > right match lost
pass all 847 > token budget gone

LlamaParse Index
retrieval · grep · read
George He · Head of Engineering

Scan to visit
llamaindex.ai · try the harness on your own documents

Interface text:
thank you
File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
Everyone talks about docume…
LlamaParse
chrome how to remove top c…
Work
New Chrome available

Search finds it. The harness makes it a result you can trust.

George He closes by pairing broad search with grep and reading to confirm results. The managed index handles tenancy, permissions, freshness and formats; a folder-connection panel illustrates its setup.

Text in image
LLAMAPARSE · RETRIEVAL
thank you

EVERYONE TALKS ABOUT SEARCH

Search finds it. The harness makes it a result you can trust.

• It was never either/or. Let the amount of data decide.
• Give the agent tools, not a recipe. Search broadly, grep and read to confirm.
• The index handles the enterprise parts — tenancy, permissions, freshness, formats.

Fully Managed Index
File Primitives out of the box.

NEW INDEX
Connect a folder
Name
Earnings
Source folder
[illegible]
Alphabet-Earnings
Parse config
[illegible]
Default Agentic Parse
Page screenshots
Store a screenshot per page
Cancel
Create index

LlamaParse Index
retrieval · grep · read
George He · Head of Engineering

Scan to visit
llamaindex.ai · try the harness on your own documents

Interface text:
File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
Work
New Chrome available

22:55Completed build

Show 2 builds
  1. 22:49

    The closing slide shows a fully managed index message beside the retrieval takeaways.

    Text in image
    LLAMAPARSE · RETRIEVAL
    thank you
    
    EVERYONE TALKS ABOUT SEARCH
    
    Search finds it. The harness makes it a result you can trust.
    
    • It was never either/or. Let the amount of data decide.
    • Give the agent tools, not a recipe. Search broadly, grep and read to confirm.
    • The index handles the enterprise parts — tenancy, permissions, freshness, formats.
    
    Fully Managed Index
    File Primitives out of the box.
    
    LlamaParse Index
    retrieval · grep · read
    George He · Head of Engineering
    
    Scan to visit
    llamaindex.ai · try the harness on your own documents
    
    Interface text:
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  2. 22:55

    Closing slide summarizes search, agent tools, and managed indexing alongside a folder-connection panel.

    Text in image
    LLAMAPARSE · RETRIEVAL
    thank you
    
    EVERYONE TALKS ABOUT SEARCH
    
    Search finds it. The harness makes it a result you can trust.
    
    • It was never either/or. Let the amount of data decide.
    • Give the agent tools, not a recipe. Search broadly, grep and read to confirm.
    • The index handles the enterprise parts — tenancy, permissions, freshness, formats.
    
    Fully Managed Index
    File Primitives out of the box.
    
    NEW INDEX
    Connect a folder
    Name
    Earnings
    Source folder
    [illegible]
    Alphabet-Earnings
    Parse config
    [illegible]
    Default Agentic Parse
    Page screenshots
    Store a screenshot per page
    Cancel
    Create index
    
    LlamaParse Index
    retrieval · grep · read
    George He · Head of Engineering
    
    Scan to visit
    llamaindex.ai · try the harness on your own documents
    
    Interface text:
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available

Read the talk

Grep or Embeddings? Agentic Search Over Company Documents

George He explains how company-document agents can use hybrid retrieval to find a direction, then list, filter, grep and read remote files to build answers grounded in their contents. The hard work includes preserving document layout, keeping permissions current and avoiding repeated ingestion.

From a talk by George He

At a glance

Ideas worth remembering

  • Direct file search works well when the corpus is manageable, textual and navigable. Large, mixed-format company collections make pre-indexed retrieval useful for avoiding repeated exploration.

  • A document-search harness can combine hybrid retrieval with listing, metadata filtering, grep and reading, letting the agent expand or narrow its investigation after the first search.

  • Prepare structured text and page screenshots together. Preserving table structure and layout matters because downstream models must reason from the representation they receive.

  • Production freshness includes permissions and metadata as well as content. Ingestion, parsing and indexing are distinct stages with different synchronization work.

  • Remote grep and bounded reads give an agent familiar file operations without downloading the whole corpus. Connecting a synthesized answer to specific source files makes it easier to check.

Company documents change the cost of exploration

A company’s document collection rarely offers the same starting conditions. PDFs, images, PowerPoints and manufacturing schematics mix formats and representations. They do not necessarily contain useful textual references to one another, and their organization has not received the syntactic discipline that code requires. At company scale, access rights also matter: finding a relevant document is insufficient if the person asking cannot read it.

Selected presentation frame from Grep or Embeddings? Agentic Search Over Company Documents — George He, LlamaIndex at 280 secondsOpen full source frame
A slide contrasts large company data collections with local code search.

MCP servers, skills and instruction files such as CLAUDE.md can explain how to navigate a collection. They still require someone to maintain useful structure. The decision therefore combines two questions: how much data must the agent explore, and how much curation will the organization do to make that exploration affordable?

He offers roughly 100–1,000 files as a range where local file search may be reasonable. An agent can inspect filenames and iterate through files without spending too much context on discovery. With thousands or millions of files, repeatedly reading the collection becomes wasteful. Pre-indexed search supplies a “rough compass”: enough direction to choose a promising subset before paying to inspect its details. These ranges are practical guidance rather than a fixed cutoff; document complexity and curation affect the choice.

Larger context windows do not remove the cost. He points to million-token context as an available capability, then asks whether it is sensible to pay for document ingestion, rendering and extraction inside model context every time a question arrives. Subagents can separate work and return compact answers, but their own context and execution add tokens and latency. Pre-parsing and pre-indexing move repeated preparation out of the query path.

3:594:29
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

3:59 · section reference included

Give the agent a compass and tools to investigate

The proposed harness gives the agent both indexed retrieval and file operations. Semantic search narrows the initial field; familiar operations such as grep, reading, filename filtering and metadata filtering let the agent investigate what it finds. The agent can choose its next operation instead of following a manually fixed choice between RAG and file traversal.

The five tools answer different questions:

  • Hybrid search: Where should I begin looking? Retrieve a promising set of documents or chunks.
  • File listing: What else exists in this part of the collection? Inspect the surrounding corpus.
  • Metadata filtering: Which files match useful attributes? Narrow the collection using information attached to documents.
  • Grep: Which files or passages contain a specific word or pattern? Check precise textual evidence.
  • Reading: What does the document actually say? Inspect relevant content, including rendered pages when text alone is insufficient.
Selected presentation frame from Grep or Embeddings? Agentic Search Over Company Documents — George He, LlamaIndex at 560 secondsOpen full source frame
A slide presents five tools for searching documents.

For the compass, LlamaIndex recommends combining keyword retrieval, such as BM25, with semantic similarity. Keywords help when the agent knows a particular term; semantic retrieval helps when relevant content expresses the idea differently. Fusion combines and weights the results. A subsequent reranker can examine, for example, the top 100 candidates with an LLM or another deeper scoring process. He reports better retrieval from this combination, without specifying a benchmark or effect size that would establish a universal improvement.

The first ranked result set does not have to become the final evidence set. Once the agent learns relevant metadata or finds a promising file, it can list related files that the initial search missed, expand its investigation and narrow again. This matters because the agent begins without knowing every attribute or document in the corpus. File operations make retrieval an investigation rather than a single top-k lookup.

7:598:29
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

7:59 · section reference included

Reading a document requires preserving its structure

A scanned chart or schematic does not become understandable merely because its words have been extracted. Its meaning also depends on spatial relationships. Document preparation must therefore produce useful representations before the agent asks a question: text that preserves structure, and rendered page images that retain the human-readable arrangement.

LlamaParse and the open-source LiteParse enter here as tools for structural content extraction. Tables, charts and segmented information can be represented in Markdown or another form the agent can read. During rendering, the pipeline should also persist page screenshots. Keeping both representations gives the agent a way to read extracted content and inspect its original arrangement without rendering the document anew for each query.

Selected presentation frame from Grep or Embeddings? Agentic Search Over Company Documents — George He, LlamaIndex at 840 secondsOpen full source frame
A slide shows parsed text alongside screenshots of document pages.

What information must survive parsing? The diagram separates the two representations of the same document. Structured text supports search and focused reading; screenshots preserve layout for visual inspection. Their shared origin lets an agent connect a retrieved passage to the page it came from.

Parsing quality should be judged by the relationships downstream reading needs. For an OCR pipeline such as Textract or Tesseract, He asks whether it captures the table representation and how faithfully it preserves layout. If the representation loses location or structure, the later model has to interpret damaged evidence. Scaling and distributing parsing helps process the corpus; it does not substitute for checking that the resulting representation remains useful.

One document, two complementary reading paths

Complex source documentA PDF, chart, scan or schematic contains text and spatial relationships.
Structured textExtract tables and segmented content into Markdown or another readable representation.
Persisted page screenshotsRender pages during preparation and keep their visual layout.
Agent inspectionRead a relevant chunk alongside its corresponding page and request surrounding context.
Preparation preserves searchable structure and rendered layout; the agent can inspect both when deciding what a passage means.
Read the diagram as text
  • Complex source document. A PDF, chart, scan or schematic contains text and spatial relationships.
  • Structured text. Extract tables and segmented content into Markdown or another readable representation.
  • Persisted page screenshots. Render pages during preparation and keep their visual layout.
  • Agent inspection. Read a relevant chunk alongside its corresponding page and request surrounding context.
  • Complex source document → Structured text: Structural extraction.
  • Complex source document → Persisted page screenshots: Render and persist.
  • Structured text → Agent inspection: Retrieved content.
  • Persisted page screenshots → Agent inspection: Corresponding visual context.
10:0010:30
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

12:45 · section reference included

Keep content, permissions and indexes synchronized

Production introduces two moving targets: the document and the rules governing access to it. Multi-tenancy requires preventing one customer from seeing another’s data. Connectors to Google Drive or SharePoint must also bring in permission metadata and keep it current. A permission update should not force the system to re-parse all the underlying content. Freshness includes metadata as well as document text.

He separates synchronization into three stages:

  1. Ingest: Bring documents into a synchronized system.
  2. Parse: Convert them into a standardized representation—Markdown or text for this demonstration, with other representations possible for multimodal uses.
  3. Index: Transform and export the prepared data into the indexed state that the search and traversal tools use.
Selected presentation frame from Grep or Embeddings? Agentic Search Over Company Documents — George He, LlamaIndex at 960 secondsOpen full source frame
A slide outlines an ingest, parse and index pipeline.

Storage then trades memory residency against loading data from disk into faster memory. Drawing on LlamaIndex’s experience with millions to tens of millions of documents across tenants, He recommends persisting data on disk with a memory layer for efficient retrieval. The demonstration uses turbopuffer. The recommendation addresses the size of the stored corpus; keeping everything in memory is a different cost and retrieval tradeoff.

Metadata goes into the vector-storage layer during ingestion so queries can filter large collections, including by attributes used for permissions. This makes filtering part of retrieval rather than something the agent discovers only after downloading content. The talk identifies permission synchronization as necessary production work, but does not provide a complete access-control implementation; storing permission tags alone does not explain how every read operation enforces them.

15:0815:38
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

15:08 · section reference included

From 135 Alphabet filings to a cash-flow table

The demonstration starts with 135 pre-indexed files derived from Alphabet’s financial reports, mixing HTM files and PDFs. Source-location metadata accompanies the documents. Additional tags such as year and company would give the agent further ways to filter the collection. The initial question is deliberately broad: find cash-flow statements.

With keyword and semantic retrieval set to an even balance, the search returns chunks paired with screenshots of their source pages. The observable change is from a collection of files to specific candidate passages with visual context. A chunk points the agent toward relevant content; its page helps the agent inspect the surrounding document, and the tool can supply more context around that chunk.

The next operation becomes precise. Grep can look for a cash-flow phrase or regex pattern inside a selected file, then a read operation can fetch text using an offset and a maximum length. In a separate file example, He reads 1,000 characters beginning at offset 500. The important mechanism is bounded access: the agent receives the passage it requests rather than downloading the entire remote collection.

How does a broad search become a source-backed table? The flow below follows the cash-flow example from indexed candidates to focused inspection and synthesis. The return path matters: inspecting one result can change what the agent searches for next. Remote file operations let that investigation continue without requiring a local copy of every filing.

The chat request asks for cash flow as a table covering 2021–2025. While the rerun is still thinking, He opens an existing response and describes a cash-flow summary assembled from multiple files. The retrieval process can search, review screenshots and context, read particular files, then search again with a revised scope. The displayed result illustrates multi-document grounding; the recording does not establish the completed rerun or supply the table’s values for checking its numerical accuracy.

The ending makes trust a property of the whole investigation. Search finds likely evidence, but the harness lets the agent inspect it, revise its search and connect the answer to particular files or chunks. For the cash-flow task, that connection gives a reader somewhere concrete to check the summary. The index supplies direction; the subsequent reads supply the substance of the answer.

The cash-flow investigation

135 Alphabet report filesPre-indexed HTM and PDF documents with source metadata.
Search for cash-flow statementsUse an even keyword and semantic balance to return chunks and page screenshots.
Inspect relevant filesReview screenshots, grep for text and read bounded passages.
Cash-flow table requestSynthesize across files for the requested 2021–2025 period and retain source grounding.
Hybrid search narrows the corpus, focused reads inspect the evidence, and revised searches can add missing material before synthesis.
Read the diagram as text
  • 135 Alphabet report files. Pre-indexed HTM and PDF documents with source metadata.
  • Search for cash-flow statements. Use an even keyword and semantic balance to return chunks and page screenshots.
  • Inspect relevant files. Review screenshots, grep for text and read bounded passages.
  • Cash-flow table request. Synthesize across files for the requested 2021–2025 period and retain source grounding.
  • 135 Alphabet report files → Search for cash-flow statements: Retrieve candidates.
  • Search for cash-flow statements → Inspect relevant files: Follow chunks into their files.
  • Inspect relevant files → Search for cash-flow statements: Revise the query and scope.
  • Inspect relevant files → Cash-flow table request: Combine evidence from multiple files.
18:2118:51
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

18:21 · section reference included

Read the complete timestamped transcript

16 slide groups · 6 demo milestones. Extracted from the recording; expand builds to follow changes. Timestamps are approximate.

  1. 0:12

    Uh, we're gonna get going. Nice to meet you, everyone. Uh, my name is George. Uh, today, uh, we'll be going over a talk on search, document search, and, uh, how we get better results here at LlamaIndex. Um, my name is George. I'm the head of engineering here at, at LlamaIndex. We are a Series A startup. We focus quite a bit on document parsing, orchestration, and, uh, knowledge management. Um, today, the topic of the talk will center around how we've helped enterprise customers scale up, search,

  2. Search and trustworthy results

    George He frames enterprise document search around a harder question: how to turn grep, embeddings, or both into results people can trust.

    Text in image
    LLAMAPARSE · RETRIEVAL
    ai engineer world's fair · live demo
    
    RETRIEVAL FOR ENTERPRISE AGENTS
    
    Everyone talks about search.
    What about the results?
    
    The debate is how to search — grep, embeddings, or both. The harder question: turning it into a result you can trust.
    
    agent> search --hybrid "refund window" | grep -n | read | cite
    
    SPEAKER
    George He · Head of Engineering
    
    WHEN
    July 2 · AI Engineer World's Fair
    
    Interface text:
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  3. 0:42

    grep, and generally manage context using agentic orchestration and just general infrastructure tooling.

  4. From the debate to a live demo

    George He moves from the grep-versus-embeddings debate through agent tools and enterprise indexing challenges, with a live demo planned if time allows.

    Text in image
    OVERVIEW · THE ROADMAP
    what we'll cover
    
    THE PLAN
    From the debate to a live demo.
    
    01 The debate
    Grep, embeddings, or both — and when an agent actually needs a vector index.
    
    02 Build a harness
    Don't choose for the agent — give it the tools and let it decide how to look.
    
    03 The five tools
    Hybrid retrieval, grep & read, and multimodal page reads with LlamaParse.
    
    04 The enterprise tax
    Multi-tenant search, permissions, and keeping the index fresh.
    
    05 Inside the index
    Distributed parsing and vector storage that scale to every tenant.
    
    06 Live demo & Q&A
    Watch the agent search, grep, read, verify, and cite — then your questions.
    
    Interface text:
    LlamaParse
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  5. 0:51

    Uh, the plan today is gonna be going through a discussion or a debate around, uh, how to best orchestrate and perform document search, uh, how to get the best results, and we'll iterate through their, uh, the technical challenges that we've seen all the way to a live demo at the end if we do have time.

  6. The retrieval debate

    Agents can search files with grep and read, or retrieve and rerank indexed embeddings. George He frames these as two approaches that can also be combined.

    Text in image
    01 · THE DEBATE                                      two camps
    
    THE QUESTION EVERYONE'S DEBATING
    
    When (and why) do agents
    need [struck through: a vector index] context?
    
    Models are good now — so a wrong answer usually means the wrong document, not a bad model. That's a retrieval problem, with two popular fixes.
    
    TEAM GREP
    Drop the vector database. Give the agent a filesystem and let it list, grep, and read files — the way a developer would.
    
    TEAM EMBEDDINGS
    Index everything up front. Embed each chunk, find the closest matches to the question, rerank, and hand the top results to the model.
    
    Interface text:
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  7. 1:12

    All right. So to get started, um, the question that I like to pose to everyone is when and why specifically do agents need vector context in some discussions or just context, period? Um, and the major takeaway here is over the last few years, models have gotten much better at orchestration and instruction following. They're able to traverse local file systems. They're able to work with skills, MCPs, in order to retrieve information in ways that are better than before. But

  8. The retrieval debate

    Agents can search files with grep and read, or retrieve and rerank indexed embeddings. George He frames these as two approaches that can also be combined.

    Text in image
    01 · THE DEBATE                                      two camps
    
    THE QUESTION EVERYONE'S DEBATING
    
    When (and why) do agents
    need [struck through: a vector index] context?
    
    Models are good now — so a wrong answer usually means the wrong document, not a bad model. That's a retrieval problem, with two popular fixes.
    
    TEAM GREP
    Drop the vector database. Give the agent a filesystem and let it list, grep, and read files — the way a developer would.
    
    TEAM EMBEDDINGS
    Index everything up front. Embed each chunk, find the closest matches to the question, rerank, and hand the top results to the model.
    
    Interface text:
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  9. 1:41

    you still have your local search and your local context problems, right? Um, in order to manage large corpuses, in order to manage complex documents, easiest way is still to manage it locally. Um, and so there are kind of two evolving approaches to orchestration, uh, between grep or what I like to call kind of local file search and file execution, or embeddings or pre-indexing, pre-retrieval. Um, we'll kind of talk through what the different approaches offer and when you might prefer one over the other

  10. 2:11

    or when it's appropriate to do a hybrid of both.

  11. The case for grep

    Claude Code replaced an early RAG and local vector database approach with file search. Boris Cherny cites simpler operation and fewer security, privacy, staleness, and reliability issues; files stay the source of truth.

    Text in image
    02 · TEAM GREP
    claude code
    
    THE STRONGEST CASE FOR GREP
    
    Anthropic took RAG out
    of Claude Code.
    
    They built Claude Code on RAG, then ripped it out for plain file search — glob, grep, read.
    
    • Nothing to keep in sync — the files themselves are the source of truth.
    • No second copy of your private code sitting in a vector store.
    • It looks the way you would: file names, then matching lines, then the whole file.
    
    Boris Cherny, creator of Claude Code. His wins — security, privacy, freshness, reliability — are what a local filesystem gives for free.
    
    Boris Cherny
    @bcherny
    
    👋 Early versions of Claude Code used RAG + a local vector db, but we found pretty quickly that agentic search generally works better. It is also simpler and doesn’t have the same issues around security, privacy, staleness, and reliability.
    
    8:56 PM · Jan 31, 2026 · 1.1M Views
    via x.com/@bcherny
    
    Interface text:
    Everyone talks about docume[illegible]
    LlamaParse
    LlamaParse
    chrome how to remove top co[illegible]
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  12. 2:16

    Uh, to get started in understanding where this problem kind of popped up in industry, um, when Claude Code launched, uh, you know, there was a lot of discussion around the internal mechanics of how Claude Code works. It's actually a really interesting problem to think about how you're going to traverse and manage your local file system if you're going to go through coding, right, as a solution or a problem. Um, and Anthropic's taken the approach of using your local file system, grep, read, using blob management basically

  13. The case for grep

    Claude Code replaced an early RAG and local vector database approach with file search. Boris Cherny cites simpler operation and fewer security, privacy, staleness, and reliability issues; files stay the source of truth.

    Text in image
    02 · TEAM GREP
    claude code
    
    THE STRONGEST CASE FOR GREP
    
    Anthropic took RAG out
    of Claude Code.
    
    They built Claude Code on RAG, then ripped it out for plain file search — glob, grep, read.
    
    • Nothing to keep in sync — the files themselves are the source of truth.
    • No second copy of your private code sitting in a vector store.
    • It looks the way you would: file names, then matching lines, then the whole file.
    
    Boris Cherny, creator of Claude Code. His wins — security, privacy, freshness, reliability — are what a local filesystem gives for free.
    
    Boris Cherny
    @bcherny
    
    👋 Early versions of Claude Code used RAG + a local vector db, but we found pretty quickly that agentic search generally works better. It is also simpler and doesn’t have the same issues around security, privacy, staleness, and reliability.
    
    8:56 PM · Jan 31, 2026 · 1.1M Views
    via x.com/@bcherny
    
    Interface text:
    Everyone talks about docume[illegible]
    LlamaParse
    LlamaParse
    chrome how to remove top co[illegible]
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  14. 2:46

    to manage your local file system, and it's perfect for your local execution needs because code is easy to manage locally, it's concise, and it's already in text format. But you'll also notice that, um, this tweet by Boris, uh, Claude Code creator, kinda highlights that, uh, Claude Code experimented with a vector database, didn't end up choosing it, and the reasons aren't just for performance reasons, but because of practical scaling and maintenance reasons. It's hard to keep a pre-indexed vectorized

  15. 3:15

    index in sync, especially as code keeps on updating.

  16. Why grep works for code

    Code repositories are usually small and structured, with symbols and paths that guide search. Their files are already plain text and on disk; company documents can lose all four advantages.

    Text in image
    03 · THE CATCH
    read the fine print
    
    BUT THERE'S A CATCH
    
    But that only worked because it's code.
    
    Grep did well because code is straightforward: small, already plain text, and you know the words to look for. Company data isn't.
    
    CODE IS
    Small
    a repo fits on one machine
    
    CODE IS
    Structured
    symbols, imports, paths
    
    CODE IS
    Plain text
    you know the words to search
    
    CODE IS
    On disk
    already sitting in a folder
    
    Lose any one of these and grep starts to struggle. Company documents lose all four at once.
    
    Interface text:
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  17. 3:20

    And so specifically, the solution that Claude Code took, which was no pre-indexing, no RAG, no vector search, uh, works really well, but only because of a few characteristics of code. Um, they did not care about pre-indexing information because the code in your repo is usually small. It's usually semi-structured. Usually, your code leaves breadcrumbs for what else is being imported, what else is being tested, um, and it leaves a natural hierarchy for how an agent might move about your file system. Um, and the largest part

  18. Why grep works for code

    Code repositories are usually small and structured, with symbols and paths that guide search. Their files are already plain text and on disk; company documents can lose all four advantages.

    Text in image
    03 · THE CATCH
    read the fine print
    
    BUT THERE'S A CATCH
    
    But that only worked because it's code.
    
    Grep did well because code is straightforward: small, already plain text, and you know the words to look for. Company data isn't.
    
    CODE IS
    Small
    a repo fits on one machine
    
    CODE IS
    Structured
    symbols, imports, paths
    
    CODE IS
    Plain text
    you know the words to search
    
    CODE IS
    On disk
    already sitting in a folder
    
    Lose any one of these and grep starts to struggle. Company documents lose all four at once.
    
    Interface text:
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  19. 3:50

    there is code is already on disk and local, uh, especially if your agent has context, so why complicate it with a pre- pre-retrieval system?

  20. The enterprise document corpus

    Millions of files across thousands of customers demand server-side search that stays current, respects permissions, and handles layouts, tables, and scanned pages.

    Text in image
    04 · THE REAL CORPUS
    enterprise docs
    
    WHAT COMPANY DATA ACTUALLY LOOKS LIKE
    
    There's no folder to grep.
    
    Millions of files across thousands of customers — contracts, filings, scanned PDFs, spreadsheets, slide decks. Four problems you don't have with code:
    
    SCALE
    It's on a server and far too big to list or walk — the search has to run there.
    
    FRESHNESS
    It keeps changing — documents get updated, and the index can't be answering from an old copy.
    
    SECURITY
    Not everyone sees everything — each search has to respect who's allowed to see what.
    
    FORMAT
    It's not plain text — there's layout, tables, scanned pages, and charts.
    
    Interface text:
    Everyone talks about docume…
    LlamaParse
    LlamaParse
    chrome how to remove top c…
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  21. 3:59

    And the reality is when you switch over to larger company datasets, uh, where you have images, you have PDFs, you have PowerPoints mixed in, uh, it's harder because there's not really a folder to grep. Uh, you can't really grep the folders across a company dataset because it's not organized like code, right? You have to think about how much effort has been put into curating the code that you write, right? It mu- it must be syntactically sound, it must have proper references. And then you see your company database or, you know, whatever is in your

  22. The enterprise document corpus

    Millions of files across thousands of customers demand server-side search that stays current, respects permissions, and handles layouts, tables, and scanned pages.

    Text in image
    04 · THE REAL CORPUS
    enterprise docs
    
    WHAT COMPANY DATA ACTUALLY LOOKS LIKE
    
    There's no folder to grep.
    
    Millions of files across thousands of customers — contracts, filings, scanned PDFs, spreadsheets, slide decks. Four problems you don't have with code:
    
    SCALE
    It's on a server and far too big to list or walk — the search has to run there.
    
    FRESHNESS
    It keeps changing — documents get updated, and the index can't be answering from an old copy.
    
    SECURITY
    Not everyone sees everything — each search has to respect who's allowed to see what.
    
    FORMAT
    It's not plain text — there's layout, tables, scanned pages, and charts.
    
    Interface text:
    Everyone talks about docume…
    LlamaParse
    LlamaParse
    chrome how to remove top c…
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  23. 4:29

    data lake, um, and you realize it's really hard to keep things in sync, right? The scale is at a completely different level. Uh, you care quite a bit more about security, uh, who can access what information. Uh, the format is not standardized. You might have really complex PDFs, schematics, manufacturing diagrams mixed in, and the scale just makes it so that you can't run this locally anymore. So how do, how do you keep a system in sync, right? The s- industry has gone through many different solutions. Um, you can use a MCP server. You can try to manage this using

  24. Anthropic’s hybrid playbook

    Claude Code loads CLAUDE.md files up front and uses glob and grep to retrieve other files on demand. The slide argues for giving the agent tools and letting it choose per question.

    Text in image
    05 · THE TWIST
    plot twist
    
    HERE'S THE PART PEOPLE SKIP
    
    Anthropic's own playbook is already hybrid.
    
    ANTHROPIC · "EFFECTIVE CONTEXT ENGINEERING" 2025
    
    "Claude Code employs this hybrid model: CLAUDE.md files are dropped into context up front, while glob and grep retrieve files just-in-time."
    
    • It's both: CLAUDE.md loaded up front, glob and grep to pull the rest on demand.
    • So the win isn't a smarter search — it's the harness: hand the agent every tool, and let it choose per question.
    
    Source: anthropic.com/engineering/effective-context-engineering-for-ai-agents
    
    Interface text:
    Everyone talks about docume[illegible]
    LlamaParse
    LlamaParse
    chrome how to remove top c[illegible]
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  25. 4:59

    Anthropic's CLAUDE.md, so you-- in addition to having just this blob of a data source available somewhere, you keep track and let your agent know, "Hey, you can traverse the data this way," right? So MCP skills, Claude, Claude, uh, agent files, instruction files, these are all options for keeping track of some type of hierarchy. But the major takeaway here is actually it really comes down to the scale of the data that you have and how much curation effort you're going to put in in order to maintain that retrieval system or that data

  26. The role of corpus size

    For tens to hundreds of files, list and read may suffice. As the corpus grows, the slide moves from grep to hybrid search, then semantic-first search to narrow down millions of files.

    Text in image
    06 · THE REAL VARIABLE
    corpus size
    
    A MORE USEFUL WAY TO THINK ABOUT IT
    
    It mostly comes down to
    how much data you have.
    
    grep + read     hybrid     semantic-first
    
    10s–100s of files     thousands     millions, multi-tenant
    
    Not much data
    Just list the files and read them. An index would only get in the way.
    
    More data
    Grep still works, but it starts missing things when questions are vague. Add semantic search.
    
    Lots of data
    Too big to walk. Now you need semantic search just to narrow it down.
    
    Same agent, same tools — the right approach shifts as the data grows. So don't lock one in. Let the agent decide.
    
    Interface text:
    Everyone talks about docume…
    LlamaParse
    LlamaParse
    chrome how to remove top co…
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  27. The role of corpus size

    For tens to hundreds of files, list and read may suffice. As the corpus grows, the slide moves from grep to hybrid search, then semantic-first search to narrow down millions of files.

    Text in image
    06 · THE REAL VARIABLE
    corpus size
    
    A MORE USEFUL WAY TO THINK ABOUT IT
    
    It mostly comes down to
    how much data you have.
    
    grep + read     hybrid     semantic-first
    
    10s–100s of files     thousands     millions, multi-tenant
    
    Not much data
    Just list the files and read them. An index would only get in the way.
    
    More data
    Grep still works, but it starts missing things when questions are vague. Add semantic search.
    
    Lots of data
    Too big to walk. Now you need semantic search just to narrow it down.
    
    Same agent, same tools — the right approach shifts as the data grows. So don't lock one in. Let the agent decide.
    
    Interface text:
    Everyone talks about docume…
    LlamaParse
    LlamaParse
    chrome how to remove top co…
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  28. 5:29

    management system that makes sense, right? People are talking about context engineering, about harness ma-- you know, making a harness, but at the end of the day, it's all about keeping the right primitives in place. Um, but in order to do that, you have to understand what's the scale that you're dealing with, right? So if you have hundred to h-- you know, a hundred or, you know, a hundred to a thousand files, uh, it may be appropriate to just keep down to local file search 'cause your agents can manage this in context. It won't burn too many tokens just iterating through files or managing the literal file

  29. 5:58

    names as it traverses. Um, and- But as you scale out, right, to thousands or millions of files, that's not possible. You don't wanna burn those tokens. Uh, you don't wanna read the files every single time. You wanna have some needle in the haystack sense of roughly where you're looking for. At least if it's not the needle in the haystack, it's a rough compass on the direction you should be going, right? Um, and so we'll talk a bit about what-- kind of what the right approach is, uh, between hybrid-based search, semantic-based search, as well as, uh, your old-school file traversal here.

  30. The role of corpus size

    For tens to hundreds of files, list and read may suffice. As the corpus grows, the slide moves from grep to hybrid search, then semantic-first search to narrow down millions of files.

    Text in image
    06 · THE REAL VARIABLE
    corpus size
    
    A MORE USEFUL WAY TO THINK ABOUT IT
    
    It mostly comes down to
    how much data you have.
    
    grep + read     hybrid     semantic-first
    
    10s–100s of files     thousands     millions, multi-tenant
    
    Not much data
    Just list the files and read them. An index would only get in the way.
    
    More data
    Grep still works, but it starts missing things when questions are vague. Add semantic search.
    
    Lots of data
    Too big to walk. Now you need semantic search just to narrow it down.
    
    Same agent, same tools — the right approach shifts as the data grows. So don't lock one in. Let the agent decide.
    
    Interface text:
    Everyone talks about docume…
    LlamaParse
    LlamaParse
    chrome how to remove top co…
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  31. The cost of context

    The slide cites ~40 GB of GPU memory for one 128K context and > 2× slower time to first token per doubling. Retrieval pays for selected chunks on each query instead of resending the whole corpus.

    Text in image
    06 · THE COST
    context isn't free
    
    “WHY NOT JUST FEED IT EVERYTHING?”
    
    More context, bigger bills.
    
    Every token in the window costs GPU memory and compute — on every query. Stuffing the whole corpus into context is the most expensive way to retrieve.
    
    GPU MEMORY · ONE 128K CONTEXT
    ~40 GB
    and it grows with every token — NVIDIA
    
    TIME TO FIRST TOKEN
    > 2×
    slower for every 2× of context — Meta
    
    AND YOU PAY IT
    every query
    re-sent each request — vs an index you build once
    
    Retrieval flips it: find the handful of chunks that matter and pay for those — not the whole corpus, on every call.
    
    Interface text:
    Everyone talks about docume…
    LlamaParse
    LlamaParse
    chrome how to remove top c…
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  32. 6:29

    Uh, the other reason for why you might care about this is obviously as each model increases in its memory capabilities, right? We got one million token context length now, uh, before it used to be two hundred K, before that a hundred K, and even smaller before then. Um, the important thing to think about here is actually as the model capabilities increase, what you're willing to pay as you're going through this process, right? Do you want to shove those tokens through the model's ingestion pipeline? Do you want to, uh, send binary data over to your model for it to try to render

  33. 6:59

    in maybe its own engine and then extract data out of, uh, for your search? Um, it just becomes extremely expensive, right, in order to use your model context for ingestion and search. Um, and, you know, there have been solutions around how you can use subagents, right? Have one larger agent issue subcommands so that a smaller agent can deal with the memory context, the memory bloat, and just give a response back. Um, but the issue there is because each subagent needs full context, because subagents, uh, even though they might use

  34. 7:29

    cheaper or simpler models, uh, if you've noticed in Claude Code, sometimes your, you know, main session may issue commands to weaker model, uh, sub sessions in order to execute the jobs. Um, the environments are actually rather token-heavy and latency-heavy, right? So in order to speed up your process and make sure that you're not burning tokens, unnecessarily reprocessing documents each time, uh, you may actually think about building out a pre-indexing system. Um, and so we'll kind of talk about that here,

  35. 7:59

    um, in kind of building out a harness and letting an agent choose what's going on, right? So, uh, specifically, we don't really want our system or any system that can scale out to be manually deciding, uh, should I use a hybrid RAG approach or should I just individually search through files? And the cleanest way that we found that in this era of engineering is, uh, managing that with a harness. So give your agent the tools needed

  36. 8:29

    to either search through specific files using your old-school grep, your old-school cat, file name filtering, or metadata filtering in addition to semantic filtering. Um, and that way, you can get kind of the best of both worlds going through traversal, uh, so you can get the rough direction of which files you want to search and use semantic search to down scope your files, and then using your agent's built-in file traversal capabilities to dig into the meat of the details so that you can actually ground your answers instead of hallucinating them.

  37. Five tools, five questions

    Retrieval searches broadly across the index; list_files, grep, and read help inspect the files it finds. Page screenshots give the agent a view of layouts and charts.

    Text in image
    08 · THE HARNESS
    5 tools
    
    EACH ONE ANSWERS A QUESTION THE AGENT HAS
    
    Five tools, five questions.
    
    “Where do I even look?”
    retrieval
    Hybrid vector + keyword search across the whole index. The broad first pass.
    SEMANTIC · BREADTH
    
    “What's in this folder?”
    list_files
    Lists files in a directory, with paging and name matching.
    FILESYSTEM
    
    “Where's the exact line?”
    grep
    Regex search inside files, with the surrounding context.
    LEXICAL · PROOF
    
    “What does it actually say?”
    read
    Reads a file in chunks by offset, and tells you how much is left.
    LEXICAL · PROOF
    
    “What does the page look like?”
    get_page_screenshot
    Pulls up the actual page image when layout or a chart matters.
    MULTIMODAL
    
    The same five tools, server-side, over any LlamaParse Index — search broadly, then verify in the files.
    
    Interface text:
    Everyone talks about docume…
    LlamaParse
    LlamaParse
    chrome how to remove top c…
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  38. 9:01

    So the five tools that we'll talk through today, um, enabling kind of document search or, uh, complex document search, uh, as you might see in like insurance, finance, healthcare industries, right? Where you just have a ton of uncategorized or semi-labeled data, is what are the tools that we're going to use, right? So the question first is, where am I even going to look? What's the compass direction we're gonna go? Um, and then you have three tools that are going to be there, and, you know, you have a lot more of these in your local file system to figure out what

  39. 9:30

    actually is in this subset or this subcorpus of documents that we've identified with our compass direction, right? So listing files, traversing files by metadata, uh, grepping specific files to see if there are multiple keywords available that make a specific document more desirable. These are all things that you could run in a pre-indexing pipeline or a live pipeline. Um, and the last one is kind of, you know, what does the document actually say? And specifically, for multimodal documents, you need a way to pre-render the documents, and this

  40. 10:00

    is one kind of unique approach, uh, to multi-page or long schematics, which is in your pre-indexing process, one of the most important parts is to chunk or break your document down into digestible portions, right? But that applies to not just the textual side, but also the rendering side. Uh, 'cause one of the hardest parts of freeform document rendering is you actually have to rasterize or render the document into a human-compatible view. Uh, these use cases are usually where you have an actual person that would have done this, uh, instead of AI,

  41. 10:30

    right? So these schematics, these PDFs, these PowerPoints, they're not really built for pure machine consumption. Um, so giving the agent a pre-built screenshot index to search through is also very useful as you're performing RAG.

  42. 10:46

    All right. So we'll take a look at some of the details of the tool itself. Um, so in terms of retrieval itself, right, which is the compass direction, there are tons of approaches you can take here. There's graph RAG, there's traditional RAG, there's kind of your old-school keyword-based BM25 search. Um, we, we usually recommend a hybrid for enterprise use cases, and that's just mostly because, uh, keyword-based search has its place for developers. Keyword-based search also has its place for AI agents that are looking for specific pre-indexed words in a corpus,

  43. Hybrid retrieval: vector and keyword

    Hybrid retrieval blends vector and keyword results with reciprocal rank fusion, then reranks them. In Azure AI Search’s 2023 benchmark, NDCG@3 rises from 40.6 for keyword search to 60.1 after reranking.

    Text in image
    TOOL 01 · HYBRID RETRIEVAL
    Inside the tool: vector + keyword.
    
    VECTOR SEARCH
    Finds meaning and paraphrase — but can miss an exact "Section 7(b)."
    
    KEYWORD SEARCH · BM25
    Nails exact terms — but ask for the "refund window" when the file says "returns in 30 days," and it finds nothing.
    
    The retrieval tool runs both, blends them by reciprocal rank fusion, and reranks the top — one ranked list, two complementary signals.
    
    RETRIEVAL QUALITY · NDCG@3
    keyword: 40.6
    vector: 43.8
    + fusion: 48.4
    + rerank: 60.1
    +48%
    Higher is better. Azure AI Search benchmark, 2023.
    
    This is hybrid search — both signals inside one tool. Different from the agent choosing retrieval vs grep; the pattern holds across Azure, BEIR & Cohere.
    
    08 · TOOLS · PRECISION
    list · grep · read
    
    Interface text:
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  44. 11:16

    right? Um, at the same time, semantic meaning and similarity is really important. Uh, combining the two through a hybrid-based search usually gives too much-- gives you much better results. Um, you can see in various benchmarking data sets that, you know, just raw keyword or vector will get you to a baseline. But when you put in a fusion, you know, you combine and weight, uh, keyword as well as vector search, you get better results, uh, 'cause you aren't blinded by, you know, specifics of your search, uh, method. And re-ranking the final results, you know, you might take the top one hundred,

  45. 11:46

    re-rank them using an LLM or some other deeper process, uh, ultimately gets you much better retrieval results. Um, but that's just one part of the pipeline, right? That's the document search. Uh, we care about results.

  46. Finding exact words

    The agent lists files, greps for a refund window, then reads the matching policy around line 40 to recover the literal text. Each call runs server-side and stays scoped to one project.

    Text in image
    08 · TOOLS · PRECISION
    list · grep · read
    
    TOOLS 02–04 · PRECISION
    
    Sometimes you need the exact words.
    
    A relevant chunk is usually close enough. But for a clause or an exact number, the agent needs the literal text — so it reads the files.
    
    agent> list_files(contains="refund")
      3 files · refund-policy.pdf, terms.docx, returns.pdf
    agent> grep("refund.{0,20}days")
      refund-policy.pdf:42 · "...full refund within 30 days..."
    agent> read(refund-policy.pdf, from_line=40)
      "Customers may return any item for a full refund within 30 days..."
    
    Same primitives as a coding agent's grep — but server-side, and every call stays scoped to one project.
    
    Interface text:
    Everyone talks about docume…
    LlamaParse
    LlamaParse
    chrome how to remove top c…
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  47. 11:58

    Um, and so tools two through four we'll talk through and kind of show later, which is, um, once you have the compass direction of what are the-- what is the general group of files that might matter, right? What's the metadata that might associate most closely with your query? Uh, 'cause your agent at the start might not know all the metadata or the extracted content of your system. Um, it can then traverse through the file hierarchy, uh, search for similar files inside of your corpus that weren't even returned in that initial search in order to expand out and then further narrow down its results. Um, so

  48. Finding exact words

    The agent lists files, greps for a refund window, then reads the matching policy around line 40 to recover the literal text. Each call runs server-side and stays scoped to one project.

    Text in image
    08 · TOOLS · PRECISION
    list · grep · read
    
    TOOLS 02–04 · PRECISION
    
    Sometimes you need the exact words.
    
    A relevant chunk is usually close enough. But for a clause or an exact number, the agent needs the literal text — so it reads the files.
    
    agent> list_files(contains="refund")
      3 files · refund-policy.pdf, terms.docx, returns.pdf
    agent> grep("refund.{0,20}days")
      refund-policy.pdf:42 · "...full refund within 30 days..."
    agent> read(refund-policy.pdf, from_line=40)
      "Customers may return any item for a full refund within 30 days..."
    
    Same primitives as a coding agent's grep — but server-side, and every call stays scoped to one project.
    
    Interface text:
    Everyone talks about docume…
    LlamaParse
    LlamaParse
    chrome how to remove top c…
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  49. 12:28

    giving your agent the primitives of listing out the files, grep, and read that you have locally is really important in a shared and distributed file system, especially if it's one that you don't want to download onto your agent's context every single time, which can get expensive.

  50. A page is more than its text

    LlamaParse returns each page as text, an image, layout spans and a quality score. The agent can inspect the screenshot when a chart or other visual content cannot be understood from text alone.

    Text in image
    08 · TOOLS · LLAMAPARSE
    parsed pages
    
    TOOL 05 · LLAMAPARSE
    A page is more than its text.
    
    LlamaParse reads messy real-world documents — layout, tables, charts — and hands back each page as a rich object, not a wall of text:
    
    text
    the page as clean markdown
    
    page image
    a screenshot the model can look at
    
    layout spans
    every block + where it sits (bbox)
    
    parse quality
    a 0–1 confidence score
    
    Many messy formats in → one clean, structured object out.
    
    The get_page_screenshot tool hands that image straight to the model. Grep can't read a chart; the agent can just look at it.
    
    Interface text:
    Everyone talks about docume…
    LlamaParse
    LlamaParse
    chrome how to remove top c…
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  51. 12:45

    And, um, diving a bit deeper into the content itself, right? Um, this is where, uh, complex documents like, you know, stuff with charts, stuff that's scanned in, stuff that has, uh, you know, schematics, for example, kind of breaks apart for your traditional document indexing and chunking workflow because it is not a human-read line of text, right? It's a separate representation. Um, and so thinking about how you do your pre-indexing flow and parsing flow, uh, so that you don't have to reread the

  52. 13:15

    documents every single time using your agent is also important. You don't wanna burn those, uh, you know, binary-encoded tokens, uh, every single time you wanna read a new document. So we usually recommend pre-indexing, uh, or pre-parsing your documents using a structured parsing flow. Um, we have a product called LlamaParse. We've also open-sourced a tool called LiteParse, which handles structural content extraction. So this is like if you have tables, charts, or segmented, uh, information, you want to encode that as either Markdown or just something that your agent really can understand the spatial reasoning of.

  53. A page is more than its text

    LlamaParse returns each page as text, an image, layout spans and a quality score. The agent can inspect the screenshot when a chart or other visual content cannot be understood from text alone.

    Text in image
    08 · TOOLS · LLAMAPARSE
    parsed pages
    
    TOOL 05 · LLAMAPARSE
    A page is more than its text.
    
    LlamaParse reads messy real-world documents — layout, tables, charts — and hands back each page as a rich object, not a wall of text:
    
    text
    the page as clean markdown
    
    page image
    a screenshot the model can look at
    
    layout spans
    every block + where it sits (bbox)
    
    parse quality
    a 0–1 confidence score
    
    Many messy formats in → one clean, structured object out.
    
    The get_page_screenshot tool hands that image straight to the model. Grep can't read a chart; the agent can just look at it.
    
    Interface text:
    Everyone talks about docume…
    LlamaParse
    LlamaParse
    chrome how to remove top c…
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  54. 13:45

    Uh, because when you have multimodal data, uh, spatial reasoning is important. Last one there is, of course, uh, in your pre-parsing flow, you usually wanna generate those screenshots as you actually render the page, right? So whatever you're doing for pre-parsing, you probably also want to store and persist screenshots as they're being generated from document rendering. Uh, it's not always clear if something is text or is, you know, got metadata associated with it. You probably wanna combine the two together.

  55. Measuring parse quality

    ParseBench scores 14 parsers across five dimensions, from table structure and content faithfulness to visual grounding, charts and formatting. The slide reports LlamaParse Agentic leading at 84.9%.

    Text in image
    08 · TOOLS · PARSEBENCH
    parse quality, measured
    
    MEASURING PARSE QUALITY
    How good is the parse, really?
    
    We measured parse quality. ParseBench scores 14 parsers on what agents need — where text-similarity and TEDS fall short.
    LlamaParse Agentic leads at 84.9%.
    
    5 Novel OCR metrics in ParseBench
    
    Tables — GTRM
    What: Record-based table structure accuracy
    Why: TEDS overweights structure, underweights semantic header correctness
    
    Content faithfulness — CFS
    What: Rule-based text completeness scoring
    Why: Text similarity misses omissions and hallucinations
    
    Visual Grounding — EPR
    What: Joint localization-classification-attribution pass rate
    Why: Ground needs content attribution, not just detection
    
    Charts — ChartDataPointMatch
    What: Exact chart data-point verification
    Why: No prior metric for structured chart data extraction
    
    Semantic Formatting — SFS
    What: Meaning-bearing formatting preservation score
    Why: Formatting carries meaning agents must preserve
    
    Open benchmark · ~2,000 human-verified enterprise pages, 167k+ rules across finance, insurance & government.
    llamaindex.ai/blog/parsebench
    
    Interface text:
    Everyone talks about docume[illegible]
    LlamaParse
    LlamaParse
    chrome how to remove top c[illegible]
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  56. 14:13

    Um, and so parsing is an important part, but it's not the only part of a pipeline. Uh, we usually, you know, advocate for people to think about how you can distribute parsing, um, and think about scaling out to improve your parsing pipeline, right? Um, there are some metrics that I would advocate for people to think about, you know, if they're relevant to your pipeline and, uh, kind of how you can optimize or, uh, improve your pipeline for each of those dimensions. So if you dump your data into a traditional OCR pipeline like Textract, uh, or you use a

  57. Measuring parse quality

    ParseBench scores 14 parsers across five dimensions, from table structure and content faithfulness to visual grounding, charts and formatting. The slide reports LlamaParse Agentic leading at 84.9%.

    Text in image
    08 · TOOLS · PARSEBENCH
    parse quality, measured
    
    MEASURING PARSE QUALITY
    How good is the parse, really?
    
    We measured parse quality. ParseBench scores 14 parsers on what agents need — where text-similarity and TEDS fall short.
    LlamaParse Agentic leads at 84.9%.
    
    5 Novel OCR metrics in ParseBench
    
    Tables — GTRM
    What: Record-based table structure accuracy
    Why: TEDS overweights structure, underweights semantic header correctness
    
    Content faithfulness — CFS
    What: Rule-based text completeness scoring
    Why: Text similarity misses omissions and hallucinations
    
    Visual Grounding — EPR
    What: Joint localization-classification-attribution pass rate
    Why: Ground needs content attribution, not just detection
    
    Charts — ChartDataPointMatch
    What: Exact chart data-point verification
    Why: No prior metric for structured chart data extraction
    
    Semantic Formatting — SFS
    What: Meaning-bearing formatting preservation score
    Why: Formatting carries meaning agents must preserve
    
    Open benchmark · ~2,000 human-verified enterprise pages, 167k+ rules across finance, insurance & government.
    llamaindex.ai/blog/parsebench
    
    Interface text:
    Everyone talks about docume[illegible]
    LlamaParse
    LlamaParse
    chrome how to remove top c[illegible]
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available
  58. 14:43

    OCR engine like Tesseract, um, does it actually capture the tables-- the table representation? How faithful is it to act- the actual content layout, right? 'Cause if you get those wrong, your LLM on its semantic reading side later down the line is going to pay for it. Uh, it might be fine at the start, but if your LLM doesn't understand the location and spatial reasoning, it falls apart, um, at some point.

  59. 15:08

    All right, so before we get to the demo, uh, there are just a few caveats to think about with building out a actual production pipeline, right? Which is when you have actual customers that care about using it and scaling it out, there are a few things that will always be brought up. Um, there's like multi-tenancy. You know, can one person see another person's data? How does permissioning metadata get pulled in, right? If I'm using Google Drive or if I'm using SharePoint, how do I pull in and yank that permission metadata without causing the whole system to grind to a halt or without re-indexing and re-parsing the pipelines each time? Um, and

  60. 15:38

    that's related to the last one, which is freshness, right? This is kind of why Anthropic, a lot of other companies have kind of given up on trying to pre-index data, uh, because data freshness is really hard to achieve if your datas are complex, your data is complex, and you also have metadata that needs to be up to date.

  61. 15:56

    All right. So, uh, in order to break it down more easily, um, we like to think about the synchronization process as three steps, right? O-one is pure ingestion. You know, can we get all your documents into a synchronized system? Uh, the second step is going to be parsing, which is how do we actually convert your document to a standardized format? Uh, for our use cases today, we'll talk through converting all documents into a Markdown or a text format, but there are also other formats you can use if you only care about multimodal representations. Um, and last stage is obviously, uh, re-munging that

  62. 16:25

    data and then exporting it into a pre-indexed state, um, in order to make it available for all the tools and steps that we talked about before.

  63. 16:39

    All right, so, uh, I'm gonna skip through this, uh, for the sake of time. Um, one major thing that we wanna highlight here is, you know, storing your data is actually quite important. Um, in order to distribute your data out, you usually want some type of layered storage system. Um, a lot of vector storage, uh, services store everything on memory. Um, usually you're playing with some trade-off of do I want it on disk and then load it into a faster memory store, or do I want everything just in the memory store? Um, for us, you know, we've dealt with this problem

  64. 17:09

    at the multi-tenant level to, you know, millions, tens of millions of documents. Our recommendation here is to try to persist your data onto disk and then have a, a shielded memory layer in order to retrieve the data more efficiently. Uh, for our use cases today, we'll be looking at turbopuffer. Um, and turbopuffer, as well as most vector stores, will also handle, uh, permissioning, right? So what's the metadata that you have? How you pull the data in, uh, is actually quite an important part of your system success because when you have too many documents, you need to filter by metadata. Um,

  65. 17:39

    so we push that into the vector storage layer. You know, as the data is being ingested, let's just make sure we tag that into the vector stores. All right. So, uh, we're going to jump through a demo. Um, and for the demo today, the, the process to think about is, you know, how is the agent going to use the subcomponents in order to actually give you a response that's grounded, that actually can traverse multiple documents, and actually gets y- gets you a result that you're pretty happy with? Um,

  66. 18:09

    all right, so we'll go through there here. Uh, let's see. Here we go. Oh

  67. 18:21

    All right, so in this demo, um, we will have a pre-indexed set of documents, um, that is available from a data source that we've defined ahead of time. This is going to be one hundred and thirty-five files, uh, that are derived from Alphabet's financial reports, right? So we have all these, uh, HTM files that are mixed in with raw PDF files, and if you actually look at them, uh, we've pulled in the metadata for where this information can be found.

  68. 18:51

    So if you have file metadata available along with, uh, you know-- Later on, you can tag this with, uh, the year that it came from or the specific company it came from. That gives your agents the capabilities to filter down, uh, the data. Um, and what we'll see here is, uh, in your hybrid re-retrieval flow, right, um, you'll have the option of if you want to be more keyword-based or more semantic-based in your retrieval flow. Um, let's just do a even balance for now, and we're gonna search for, uh, just any

  69. 19:21

    cash flow statements. And we'll talk through kind of the tools that your agent would wanna use along this process, right? So, um, what you've seen here on the right is the set of chunks that are returned from our query, as well as page screenshots that correspond to, uh, what is essentially, uh, the page that it came from, right? So these two together gives your agents the capability to s-- uh, filter down to a specific chunk and request context around that specific chunk in a much cleaner way than before. Um,

  70. Hybrid retrieval results

    A 50/50 keyword-semantic search for “cash flow” returns text chunks alongside their source page screenshots, giving an agent a way to inspect the context around a result.

    Text in image
    alphabet
    Healthy
    
    Overview  Details  Code
    
    Hybrid retrieve  Find  File grep  File read  View code
    
    Query
    cash flow
    
    Top K
    10
    
    Metadata filters
    Advanced options
    
    Hybrid balance
    Keyword 50%  50% Semantic
    Run retrieve
    
    Results  10 chunks
    #1
    Grep  Read
    
    *Free cash flow.* We define free cash flow as net cash provided by operating activities less capital expenditures. We consider free cash flow to be a liquidity measure that provides useful information to management and investors about the amount of cash generated by the business that, after the acquisition of property and equipment, including information technology assets and land and buildings, can be used for strategic opportunities, including investing in our business, making strategic acquisitions, and strengthening the balance sheet. Analysis of free cash flow also facilitates management's comparisons of our operating results to competitors' operating results. A limitation of using free cash flow versus the
    
    GOOGL-2015-Q1-earnings-release.pdf (synced) [illegible]  chunk #14  pages 9
    chars 38917–40362
    Page screenshot
    
    Indexed files
    Showing 1–20 of 135
    Search files...
    GOOGL-10-K-2022-02-02...
    GOOG-legacy-10-Q-2005...
    GOOG-legacy-10-K-2016-...
    GOOG-legacy-10-K-2007-...
    GOOG-legacy-10-Q-2009...
    GOOGL-10-Q-2020-10-30...
    GOOG-legacy-10-K-2012-...
    GOOGL-10-Q-2026-04-3...
    GOOGL-10-Q-2021-07-28...
    
    SOURCE  alphabet
    LAST SYNCED  06/29/26
    CREATED  06/29/26
    INDEX ID  [illegible]
    
    Interface text:
    Indexes > alphabet
    alphabet  Chat  Sync now
    staging.llamaindex.ai/project/[illegible]/index/[illegible]
    Work  New Chrome available

    19:27Demo milestone

  71. Page screenshot preview

    The expanded Page 9 preview shows the cash-flow table and source text behind a retrieved chunk, giving an agent visual context for the result.

    Text in image
    Page 9
    
    Reconciliation from net cash provided by operating activities to free cash flow (in millions, unaudited):
    Three Months Ended March 31, 2015
    Net cash provided by operating activities: $6,617
    Less: purchases of property and equipment: (2,927)
    Free cash flow: $3,690
    Net cash used in investing activities (a): $(7,304)
    Net cash used in financing activities: $(391)
    
    (a) Includes purchases of property and equipment.
    
    Free cash flow. [illegible]
    
    Interface text:
    Indexes > alphabet
    alphabet
    Overview  Details  Code
    Hybrid retrieve  Find  File grep  File read
    Query: cash flow
    Top K: 10
    Close  Download
    staging.llamaindex.ai/[illegible]

    19:37Demo milestone

  72. 19:52

    you then might want to think about how you would grep for a specific, uh, piece of text in the file, right? So what happens if you have a regex pattern that you're looking for, uh, you know, now you're looking specifically for cash flow, um, and you can find that easily. Uh, in order to find that in a specific file, all you need to do is issue a grep command and then read from that specific command kind of what that offset is and then, uh, kind of what the max length is that you want. So, uh, this is a different file, so I'll just give an example. You know, if we offset five

  73. File grep results

    File grep finds “cash flow” in a selected filing and returns character offsets. He explains that an agent can use an offset and a desired length to read a specific portion of a file.

    Text in image
    File grep
    Regex-search one file's text.
    
    File
    GOOGL-2015-Q1-earnings-rele...
    
    Regex pattern
    cash flow
    
    Context characters
    0
    
    Run grep
    
    cash flow
    #7  chars 34420–34429
    cash flow
    #8  chars 34447–34456
    cash flow
    #9  chars 34546–34555
    cash flow
    #10  chars 34976–34985
    cash flow
    #11  chars 35115–35124
    
    Interface text:
    Indexes > alphabet
    alphabet
    Healthy
    Overview  Details  Code
    alphabet  Chat  Sync now
    SOURCE  alphabet
    LAST SYNCED  06/29/26
    CREATED  06/29/26
    INDEX ID  dec-bk57qvmyr1t11xxupf9...
    Hybrid retrieve  Find  File grep  File read
    Indexed files
    Showing 1–20 of 135
    Search files...
    GOOGL-10-K-2022-02-02...
    GOOG-legacy-10-Q-2005...
    GOOG-legacy-10-K-2016-...
    GOOG-legacy-10-K-2007-...
    GOOG-legacy-10-Q-2009...
    GOOGL-10-Q-2020-10-30...
    GOOG-legacy-10-K-2012-...
    GOOGL-10-Q-2026-04-3...
    GOOGL-10-Q-2021-07-28...
    Everyone talks about docume...
    LlamaParse
    Chrome how to remove top c...
    staging.llamaindex.ai/project/[illegible]/index/[illegible]
    Work
    New Chrome available

    19:54Demo milestone

  74. 20:22

    hundred characters and pull in the next thousand, we'll end up with this text being available, right? So with these two tools, this suite of tools together, your agent doesn't really need the files in a local file state anymore. Um, you can interact with what is effectively a remote file storage without needing to spin up or download all the data that would need to be streamed to your system. Um, and that, uh, gives the agent a much more capable, uh, set of capabilities without actually downloading all the information and burning the tokens. So we will,

  75. Reading an indexed file

    File read returns 1,000 characters from an Alphabet filing at offset 500. He explains that these tools let an agent inspect remote files without downloading all their contents.

    Text in image
    alphabet
    Healthy
    
    Overview
    Details
    Code
    
    SOURCE: alphabet
    LAST SYNCED: 06/29/26
    CREATED: 06/29/26
    INDEX ID: dec-bk57qvmyr1t11xxupf9…
    
    Hybrid retrieve
    Find
    File grep
    File read
    
    File read
    Read a file's raw parsed text.
    
    File: GOOGL-10-K-2022-02-02.htm …
    Offset: 500
    Max length: 1000
    Run read
    
    GOOGL-10-K-2022-02-02.htm (synced) 1000 chars
    [illegible] · 1,000 chars
    Copy
    
    r)**
    
    Delaware | 61-1767919
    --- | ---
    (State or other jurisdiction of incorporation or organization) | (I.R.S.
    Employer Identification No.)
    
    1600 Amphitheatre Parkway
    Mountain View, CA 94043
    (Address of principal executive offices, including zip code)
    
    (650) 253-0000
    (Registrant's telephone number, including area code)
    
    Securities registered pursuant to Section 12(b) of the Act:
    
    Indexed files
    Showing 1–20 of 135
    Search files...
    GOOGL-10-K-2022-02-02...
    GOOG-legacy-10-Q-2005...
    GOOG-legacy-10-K-2016-...
    GOOG-legacy-10-K-2007-...
    GOOG-legacy-10-Q-2009...
    GOOGL-10-Q-2020-10-30...
    GOOG-legacy-10-K-2012-...
    GOOGL-10-Q-2026-04-3...
    GOOGL-10-Q-2021-07-28...
    
    Interface text:
    Indexes > alphabet
    alphabet
    Chat
    Sync now
    LlamaParse
    Everyone talks about docume…
    chrome how to remove top c…
    staging.llamaindex.ai/project/[illegible]
    Work
    New Chrome available

    20:42Demo milestone

  76. 20:51

    uh, go to a chat example, and I'm gonna pull it up here. So, uh, give me the cash flow from-- as a table from twenty twenty-one through twenty twenty-five. Cash flow income as a table.

  77. Submitting a cash-flow question

    George submits a question to the Alphabet index for a cash-flow or income table from 2021–2025. No answer is visible yet.

    Text in image
    New Chat
    
    Give me the cash flow or income as a table from 2021-2025
    
    Interface text:
    Indexes > Chat > New Chat
    alphabet
    Share
    Give me the cash flow or income as a table from 2021-2025
    staging.llamaindex.ai/project/[illegible]/index/chat?sessionId=[illegible]
    Everyone talks about docume...
    LlamaParse
    chrome how to remove top co...
    Work
    New Chrome available

    21:06Demo milestone

  78. 21:14

    All right, so give me a second here. I'm gonna run this again.

  79. 21:27

    Give it a few seconds. Uh, while that's running, I'm gonna show you guys the end results. Uh, let's go to the chat. So this is gonna be in the chat flow timeline. Um, let's see. Still thinking there. So as the-- as an agent is running over the, over the process of, you know, retrieving your answers from the corpus, it's gonna look through, uh, your corpus by issuing search commands, right? And as it's issuing the search commands, uh, you want your agent to be able to review the screenshots, review the context, and then

  80. Searching documents for cash flow

    The agent searches for cash flow from 2021–2025, showing 10 chunks and retrieved table markup alongside a control to view 15 screenshots.

    Text in image
    Cash Flow Timeline 2021-2025
    
    Show me cash flow over time 2021-2025
    
    Thinking: The user is asking about cash flow over time for the years 2021-2025. I need to search the document database for information related to cash flow, financial statements, or similar topics that would contain this data. Let me start with a retrieval query about cash flow.
    
    Searching documents — "cash flow 2021 2022 2023 2024 2025"    10 chunks
    View Screenshots (15)
    
    <table>
      <thead>
        <tr>
          <th></th>
          <th>Quarter Ended March 31,</th>
          <th></th>
        </tr>
        <tr>
          <th>2021</th>
          <th></th>
          <th>2022</th>
        </tr>
        <tr>
          <th></th>
          <th>(unaudited)</th>
          <th></th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Operating activities</td>
    
    Interface text:
    Indexes > Chat > Cash Flow Timeline 2021-2025
    alphabet
    Share
    Ask a question about your documents...
    LlamaParse
    Work
    New Chrome available
    staging.llamaindex.ai/project/[illegible]/index/chat?sessionId=[redacted]

    21:38Demo milestone

  81. 21:56

    determine what is actually relevant for its search in a much more holistic way, right? So you get to think through the process. You get to read specific files. You get to search through files again and re-scope your queries, and in the end, that gives you a much cleaner result, right? So, uh, in this agent response, uh, you can see the cash flow summary, uh, by, you know-- And you can see that it's been pulled in from multiple files as part of its thinking process. So when we do go into the

  82. 22:26

    traversal flow, um, you can usually find and ground your answers in, uh, in a specific file, and that gives you much more confidence that your agent's found the right component or the right chunk. Um, you know, that's what we're looking for at the end of the day for agent-based retrieval. All right. So we're gonna jump back here. We'll take a look at, uh, that session once it finishes streaming. Uh, but, you know, the idea here and the takeaway is that, you know, search helps you find information, and the harness gives you the results that you can trust. So,

  83. Search and the retrieval harness

    The terminal illustration shows two failure modes: truncation can lose the right match, while passing all 847 matches consumes the token budget. The proposed harness searches broadly, then uses grep and read to confirm.

    Text in image
    LLAMAPARSE · RETRIEVAL
    
    EVERYONE TALKS ABOUT SEARCH
    
    Search finds it. The harness makes it a result you can trust.
    
    • It was never either/or. Let the amount of data decide.
    • Give the agent tools, not a recipe. Search broadly, grep and read to confirm.
    • The index handles the enterprise parts — tenancy, permissions, freshness, formats.
    
    Terminal illustration:
    query: "section 12 termination conditions"
    grep result
    847 matches / 10,000 docs
    [illegible] ...section 12 applies when either party...
    [illegible] ...refer to Section 12 for dispute resolution...
    [illegible] ...Section 12: General Provisions...
    [illegible] ...as outlined in Section 12 of the agreement...
    [illegible] ...Section 12 does not apply to disclosures...
    [illegible] ...Section 12: Liability caps are defined...
    [illegible] ...per Section 12, all invoices must be...
    truncate > right match lost
    pass all 847 > token budget gone
    
    LlamaParse Index
    retrieval · grep · read
    George He · Head of Engineering
    
    Scan to visit
    llamaindex.ai · try the harness on your own documents
    
    Interface text:
    thank you
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Everyone talks about docume…
    LlamaParse
    chrome how to remove top c…
    Work
    New Chrome available
  84. Search finds it. The harness makes it a result you can trust.

    George He closes by pairing broad search with grep and reading to confirm results. The managed index handles tenancy, permissions, freshness and formats; a folder-connection panel illustrates its setup.

    Text in image
    LLAMAPARSE · RETRIEVAL
    thank you
    
    EVERYONE TALKS ABOUT SEARCH
    
    Search finds it. The harness makes it a result you can trust.
    
    • It was never either/or. Let the amount of data decide.
    • Give the agent tools, not a recipe. Search broadly, grep and read to confirm.
    • The index handles the enterprise parts — tenancy, permissions, freshness, formats.
    
    Fully Managed Index
    File Primitives out of the box.
    
    LlamaParse Index
    retrieval · grep · read
    George He · Head of Engineering
    
    Scan to visit
    llamaindex.ai · try the harness on your own documents
    
    Interface text:
    File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
    Work
    New Chrome available

    22:49

    Show 2 builds
    1. 22:49

      The closing slide shows a fully managed index message beside the retrieval takeaways.

      Text in image
      LLAMAPARSE · RETRIEVAL
      thank you
      
      EVERYONE TALKS ABOUT SEARCH
      
      Search finds it. The harness makes it a result you can trust.
      
      • It was never either/or. Let the amount of data decide.
      • Give the agent tools, not a recipe. Search broadly, grep and read to confirm.
      • The index handles the enterprise parts — tenancy, permissions, freshness, formats.
      
      Fully Managed Index
      File Primitives out of the box.
      
      LlamaParse Index
      retrieval · grep · read
      George He · Head of Engineering
      
      Scan to visit
      llamaindex.ai · try the harness on your own documents
      
      Interface text:
      File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
      Work
      New Chrome available
    2. 22:55

      Closing slide summarizes search, agent tools, and managed indexing alongside a folder-connection panel.

      Text in image
      LLAMAPARSE · RETRIEVAL
      thank you
      
      EVERYONE TALKS ABOUT SEARCH
      
      Search finds it. The harness makes it a result you can trust.
      
      • It was never either/or. Let the amount of data decide.
      • Give the agent tools, not a recipe. Search broadly, grep and read to confirm.
      • The index handles the enterprise parts — tenancy, permissions, freshness, formats.
      
      Fully Managed Index
      File Primitives out of the box.
      
      NEW INDEX
      Connect a folder
      Name
      Earnings
      Source folder
      [illegible]
      Alphabet-Earnings
      Parse config
      [illegible]
      Default Agentic Parse
      Page screenshots
      Store a screenshot per page
      Cancel
      Create index
      
      LlamaParse Index
      retrieval · grep · read
      George He · Head of Engineering
      
      Scan to visit
      llamaindex.ai · try the harness on your own documents
      
      Interface text:
      File /Users/georgehe/workspace/llamaindex/slides/document_results_deck/document_results.html
      Work
      New Chrome available
  85. 22:57

    okay, if you're interested, um, feel free to, uh, visit the QR code here. Thank you.