Multimodal ingestion that does not dictate your stack
OmniIngest is a multimodal ingestion framework for building reusable knowledge pipelines. It turns documents, web pages, images, and audio into validated knowledge items without the faff of stitching together one-off preprocessing scripts.
Documentation: omniingest.onrender.com
Why use OmniIngest
- Multimodal processing. PDF, DOCX, HTML, images, audio, and plain text use one pipeline model.
- Multiple model providers. Every model-backed step can select its own Pydantic AI model. Chat and embedding models are configured independently.
- Storage-independent pipelines. YAML describes transformation. CLI or Python caller chooses JSON, vector store, graph store, or another output.
- Structured when needed. JSON Schema output, jq transforms, and step validation turn model results into predictable data.
- Built for sizeable jobs. fsspec resources, concurrent stages, progress events, and stage checkpoints keep long ingestion runs manageable.
Quick start
Install command-line tool with uv:
uv tool install omni-ingest
Create a pipeline which extracts text and makes sentence-aware chunks:
pipeline_id: school_notes
domain_profile: education
steps:
- agent: text
- agent: chunking
config:
chunk_size: 900
overlap: 120
Run it against a PDF:
omni-ingest school_notes.yaml \
--input lessons/soil-erosion.pdf \
--output build/soil-erosion.json
YAML stops at transformation. Pick storage at run time:
omni-ingest school_notes.yaml --input lessons/soil-erosion.pdf --output - | jq '.items | length'
omni-ingest retrieval.yaml --input handbooks/*.pdf --output vector:default
Learn more
- Command-line usage covers files, remote resources, stdin, outputs, and resume.
- Pipeline playbook builds from simple YAML to structured output, validation, components, and model tools.
- Working with event stream covers progress and live application integration.
- API reference documents Python interfaces.
Development
git clone https://github.com/A4i-tech/OmniIngest.git
cd OmniIngest
uv sync --dev
uv run pytest tests/unit
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file omni_ingest-0.1.0.tar.gz.
File metadata
- Download URL: omni_ingest-0.1.0.tar.gz
- Upload date:
- Size: 45.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b1b91fc8323a4d70255a2d7d3dd7c4d765440050203ce35dff5cf43e03c5bcb
|
|
| MD5 |
1e4ccb7f229ebe519dbe7af609a3c7db
|
|
| BLAKE2b-256 |
ce59b1a626cc28d9c1b7e39467bcc5e6b58903861e601c0dcbb659b0eba4512f
|
File details
Details for the file omni_ingest-0.1.0-py3-none-any.whl.
File metadata
- Download URL: omni_ingest-0.1.0-py3-none-any.whl
- Upload date:
- Size: 58.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
131e9285fc9b10b8bb42055a421236d65b1029340bf05b9a3a52e50b03cccb38
|
|
| MD5 |
a27dbdf5c35aa2659ad5d8abbda4ec69
|
|
| BLAKE2b-256 |
f97be80f0e72f86f461557fa418d573a749fcf9e624e1455c1333222d25d8d2e
|