Skip to content

Installation

ingestlib needs Python 3.12+, one system dependency for Office formats, and an OCR inference server for parsing — plus, optionally, the PostgreSQL client tools for registry backups. This page gets them in place.

1. Install the package

uv add ingestlib
pip install ingestlib
git clone https://github.com/LangModule/ingestlib.git
cd ingestlib
uv sync

This installs the ingestlib command alongside the library — you'll use it in the Quickstart to scaffold and verify your setup.

The core install covers the full default stack, including sqlite vectors. Server-backed vector stores are extras — add the one you'll use:

uv add "ingestlib[qdrant]"     # or pinecone · pgvector · mongodb · milvus
                               #    · opensearch · weaviate · all

Structured retrieval (querying SQL databases via retrieve()) has its own extras — postgres · mysql · duckdb · snowflake (sqlite needs none). Add them only if you use it.

2. LibreOffice (DOCX/PPTX only)

Office documents are converted to PDF before parsing, which needs LibreOffice on the machine. PDFs and images work without it.

brew install --cask libreoffice
sudo apt install libreoffice-core libreoffice-writer libreoffice-impress

3. The OCR inference server

parse() (and therefore ingest()) runs PaddleOCR-VL-1.6 — a 0.9B vision model — behind an inference server on your own GPU. The first launch downloads ~1.8 GB of weights; later launches load from cache in seconds.

Served by mlx-vlm on the Metal GPU (installed automatically with ingestlib on macOS/arm64):

uv run python -m mlx_vlm.server --port 8111 --model PaddlePaddle/PaddleOCR-VL-1.6

Served by vLLM:

vllm serve PaddlePaddle/PaddleOCR-VL-1.6 --trust-remote-code --port 8111

Then set paddle_vl.backend: vllm-server in your config.yaml.

Only parsing needs the server

classify(), split(), extract(), and retrieve() all run without the OCR server. If you only see a server warning from ingestlib doctor, the rest of the pipeline still works.

A second, smaller layout model (PP-DocLayoutV3, ~126 MB) downloads automatically on your first parse.

4. PostgreSQL client tools (registry backup only)

ingestlib registry backup and restore shell out to pg_dump / pg_restore. Install them only if you use those commands (or event-driven auto-backup) — the rest of the pipeline never calls them.

brew install libpq
sudo apt install postgresql-client

Disk footprint

Component Size Location
Python dependencies ~1.4 GB core (+ your vector-store extra) your environment
PaddleOCR-VL-1.6 weights ~1.8 GB ~/.cache/huggingface/hub/
PP-DocLayoutV3 ~126 MB ~/.paddlex/official_models/
LibreOffice ~600 MB system

Next: Quickstart — configure a stack and get your first cited answer.