Docling Reader

The Docling Reader processes multiple document formats using IBM's Docling library. It handles PDFs, documents, presentations, spreadsheets, images, audio, video and markup files.

Code

1from kern.agent import Agent
2from kern.knowledge.knowledge import Knowledge
3from kern.knowledge.reader.docling_reader import DoclingReader
4from kern.vectordb.pgvector import PgVector
5
6db_url = "postgresql+psycopg://ai:ai@localhost:5532/ai"
7
8# Create a knowledge base with docling reader
9knowledge = Knowledge(
10 vector_db=PgVector(
11 table_name="docling_documents",
12 db_url=db_url,
13 )
14)
15
16# Add documents using DoclingReader
17knowledge.insert(
18 path="documents/report.pdf",
19 reader=DoclingReader(),
20)
21
22# Create an agent with the knowledge base
23agent = Agent(
24 knowledge=knowledge,
25 search_knowledge=True,
26)
27
28# Query the knowledge base
29agent.print_response(
30 "Summarize the key findings from the report",
31 markdown=True,
32)

Usage

Set up your virtual environment

1uv venv --python 3.12
2source .venv/bin/activate
1uv venv --python 3.12
2.venv\Scripts\activate

Install dependencies

1# Base dependencies
2uv pip install -U docling sqlalchemy psycopg pgvector kern-ai openai
3
4# For audio/video processing
5uv pip install -U openai-whisper

Install ffmpeg (required for audio/video processing):

Set environment variables

1export OPENAI_API_KEY=xxx

Run PgVector

1docker run -d \
2 -e POSTGRES_DB=ai \
3 -e POSTGRES_USER=ai \
4 -e POSTGRES_PASSWORD=ai \
5 -e PGDATA=/var/lib/postgresql/data/pgdata \
6 -v pgvolume:/var/lib/postgresql/data \
7 -p 5532:5432 \
8 --name pgvector \
9 kern/pgvector:16

Run Agent

1python examples/basics/knowledge/concepts/readers/overview/docling_reader_sync.py
1python examples/basics/knowledge/concepts/readers/overview/docling_reader_sync.py

Params

ParameterTypeDefaultDescription
output_formatstr"markdown"Export format ("markdown", "text", "json", "yaml", "html", "html_split_page", "doctags", "vtt")
converterOptional[DocumentConverter]NoneCustom Docling converter configuration
format_optionsOptional[dict]NoneFormat options dictionary for DocumentConverter
chunking_strategyOptional[ChunkingStrategy]DocumentChunking()Strategy for chunking the document
allowed_hostsOptional[List[str]]NoneHostnames the reader is allowed to fetch from. See Restricting URL Fetches.