Suppose you have a very large PDF — say a 20,000-page technical manual — and you want your Copilot Studio agent to answer questions from it. The first instinct is to just upload it directly as a knowledge source. But that will not work, and there is a good reason why.
In this post I will walk through why direct upload fails, how Copilot Studio actually reads knowledge internally, the right way to split your PDF so meaning is never lost, and how to set up Azure AI Search as a proper enterprise knowledge source for your agent.
Why You Cannot Just Upload It Directly
Copilot Studio has a hard file size limit of 512 MB for direct uploads. A 20,000-page PDF will almost certainly be several gigabytes — so it will be rejected outright.
But even if it somehow fit under 512 MB, uploading a massive single file is still the wrong approach. To understand why, you need to know what happens under the hood when Copilot Studio reads knowledge.
How Copilot Studio Actually Reads Knowledge
There are two phases — indexing (happens once, in the background) and retrieval (happens every time a user asks a question).
Phase 1 — Indexing
When you add a file as a knowledge source, Copilot Studio reads it once and converts every piece of text into a vector embedding — a fingerprint of meaning represented as numbers. Similar meanings produce similar numbers. This is stored in Dataverse.
Think of it like building an index card for every paragraph in your document, where each card captures the meaning of that paragraph, not just the words.
Phase 2 — Retrieval
When a user asks a question, Copilot Studio converts that question into a vector fingerprint and compares it against all stored fingerprints. It finds the closest matches and retrieves only those chunks — it does not read the whole document every time.
The Right Way to Split — So Meaning Never Breaks
Since only the top 3 chunks are retrieved per query, how you split your PDF matters enormously. Here are the rules:
- Split at natural boundaries — chapter headings, section headings, topic changes. Never mid-paragraph or mid-table.
- Each chunk should be self-contained — ask yourself: if someone read only this chunk, would they get a complete answer? If yes, it is a good chunk.
- Add overlap at boundaries — repeat 1–2 pages from the end of one chunk at the start of the next. This ensures a concept that bleeds across a boundary is still fully captured somewhere.
- Name files descriptively — instead of
chunk_001.pdf, usechapter3-treatment-methods-pages-120-189.pdf. Copilot Studio uses file names and descriptions to decide which source to search.
The sweet spot for chunk size is roughly 20–50 pages for a technical document with clear sections. Too small and there is not enough context per chunk. Too large and the agent struggles to pinpoint the right answer.
The Solution — Azure AI Search
For any large PDF, Azure AI Search is the right approach. It gives you full control over chunking, uses smart document understanding via Azure Document Intelligence, and has no practical file size constraints.
The architecture looks like this: your PDF sits in Azure Blob Storage, Azure Document Intelligence reads it and understands its structure (headings, tables, paragraphs), splits it intelligently, and indexes everything into Azure AI Search. Your Copilot Studio agent then queries Azure AI Search directly.
Step 1 — Create a Resource Group
A Resource Group is just a folder that holds all your Azure services together. Go to portal.azure.com, search for Resource Groups, and create one. Name it something like rg-pdf-agent and set the region to East US.
Step 2 — Create Azure Blob Storage
Search for Storage Accounts and create one in your resource group. Once created, go to Containers, create a container called pdf-docs, and upload your PDF into it. This is simply your cloud hard drive for the raw file.
Step 3 — Create Azure AI Search
Search for Azure AI Search and create an instance in your resource group. The Basic tier is sufficient to start. Once deployed, copy the Endpoint URL and the Primary Admin Key from the Keys section — you will need these later.
Step 4 — Create Azure Document Intelligence
Search for Document Intelligence and create an instance in your resource group using the S0 Standard tier. Copy the Key 1 and Endpoint URL from the Keys and Endpoint section.
Step 5 — Run the Import and Vectorize Wizard
This is where Azure does all the heavy lifting for you — no code required.
- Go back to your Azure AI Search resource
- Click Import and vectorize data on the Overview page
- Select Azure Blob Storage as data source and point it to your
pdf-docscontainer - On the next screen, turn on Extract text and structure from documents and select your Document Intelligence resource — this is what reads headings, paragraphs, and tables before splitting
- Turn on Enable semantic chunking — this tells Azure to split at meaning boundaries, not fixed character counts
- On the vectorization screen, select Azure OpenAI with model
text-embedding-ada-002 - Name your index
pdf-indexand click Create
Azure will now process your entire PDF. For a very large document this can take 30–60 minutes. You can watch the progress under Indexers in the left menu. Wait until the status shows Success.
Step 6 — Connect Azure AI Search to Copilot Studio
- Open your agent in Copilot Studio
- Go to Knowledge → Add Knowledge
- Select Azure AI Search
- Enter the Endpoint URL and API Key you saved from Step 3
- Select index name
pdf-index - Click Connect and wait for status to show Ready
Your agent can now answer questions from your entire document with accurate, cited responses.
The key thing to remember: the agent only retrieves the top 3 most relevant chunks per question. Azure Document Intelligence handles the splitting intelligently — at heading and section boundaries — which is what makes this approach so effective at scale. Every chunk it produces is a self-contained idea, which means those top 3 results are almost always enough to form a complete, accurate answer.