Agentic chunking is an intelligent method of splitting documents into smaller chunks by using a model to determine natural breakpoints in the text. Rather than splitting text at fixed character counts, it analyzes the content to find semantically meaningful boundaries like paragraph breaks and topic transitions.
Create a Python file
import asyncio
from agno.agent import Agent
from agno.knowledge.chunking.agentic import AgenticChunking
from agno.knowledge.knowledge import Knowledge
from agno.knowledge.reader.pdf_reader import PDFReader
from agno.vectordb.pgvector import PgVector
db_url = "postgresql+psycopg://ai:ai@localhost:5532/ai"
knowledge = Knowledge(
vector_db=PgVector(table_name="recipes_agentic_chunking", db_url=db_url),
)
asyncio.run(knowledge.ainsert(
url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf",
reader=PDFReader(
name="Agentic Chunking Reader",
chunking_strategy=AgenticChunking(),
),
))
agent = Agent(
knowledge=knowledge,
search_knowledge=True,
)
agent.print_response("How to make Thai curry?", markdown=True)
Set up your virtual environment
uv venv --python 3.12
source .venv/bin/activate
Install dependencies
uv pip install -U agno sqlalchemy psycopg pgvector
Run PgVector
docker run -d \
-e POSTGRES_DB=ai \
-e POSTGRES_USER=ai \
-e POSTGRES_PASSWORD=ai \
-e PGDATA=/var/lib/postgresql/data/pgdata \
-v pgvolume:/var/lib/postgresql/data \
-p 5532:5432 \
--name pgvector \
agno/pgvector:16
Run the script
python agentic_chunking.py
Custom Prompts
AgenticChunking(
custom_prompt="Split at major section boundaries. Keep complete clauses together.",
max_chunk_size=3000,
)
Custom prompts override default chunking behavior and are prioritized over default instructions.
Best Practices:
- Always set
max_chunk_size when using custom_prompt.
- Focus
custom_prompt on chunking logic only.
- The default instructions automatically handle the output format constraints.
See Agentic Chunking with Custom Prompt for a complete example.
Agentic Chunking Params
| Parameter | Type | Default | Description |
|---|
model | Model | OpenAIChat | The model to use for chunking. |
max_chunk_size | int | 5000 | The maximum size of each chunk. |
custom_prompt | str | None | Allows personalized instructions to determine chunk breakpoints. |