Kotaemon
An open-source RAG-based tool for chatting with your documents.
Install / Use
/learn @Cinnamon/KotaemonREADME
kotaemon
An open-source clean & customizable RAG UI for chatting with your documents. Built with both end users and developers in mind.

<a href="https://trendshift.io/repositories/11607" target="_blank"><img src="https://trendshift.io/api/badge/repositories/11607" alt="Cinnamon%2Fkotaemon | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
Live Demo #1 | Live Demo #2 | Online Install | Colab Notebook (Local RAG)
User Guide | Developer Guide | Feedback | Contact
<a href="https://github.com/Cinnamon/kotaemon/pkgs/container/kotaemon" target="_blank">
<img src="https://img.shields.io/badge/docker_pull-kotaemon:latest-brightgreen" alt="docker pull ghcr.io/cinnamon/kotaemon:latest"></a>
<a href='https://huggingface.co/spaces/cin-model/kotaemon-demo'><img src='https://img.shields.io/badge/%F0%9F%A4%97%20Hugging%20Face-Spaces-blue'></a>
<a href="https://hellogithub.com/en/repository/d3141471a0244d5798bc654982b263eb" target="_blank"><img src="https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=d3141471a0244d5798bc654982b263eb&claim_uid=RLiD9UZ1rEHNaMf&theme=small" alt="Featured|HelloGitHub" /></a>
Introduction
This project serves as a functional RAG UI for both end users who want to do QA on their documents and developers who want to build their own RAG pipeline. <br>
+----------------------------------------------------------------------------+
| End users: Those who use apps built with `kotaemon`. |
| (You use an app like the one in the demo above) |
| +----------------------------------------------------------------+ |
| | Developers: Those who built with `kotaemon`. | |
| | (You have `import kotaemon` somewhere in your project) | |
| | +----------------------------------------------------+ | |
| | | Contributors: Those who make `kotaemon` better. | | |
| | | (You make PR to this repo) | | |
| | +----------------------------------------------------+ | |
| +----------------------------------------------------------------+ |
+----------------------------------------------------------------------------+
For end users
- Clean & Minimalistic UI: A user-friendly interface for RAG-based QA.
- Support for Various LLMs: Compatible with LLM API providers (OpenAI, AzureOpenAI, Cohere, etc.) and local LLMs (via
ollamaandllama-cpp-python). - Easy Installation: Simple scripts to get you started quickly.
For developers
- Framework for RAG Pipelines: Tools to build your own RAG-based document QA pipeline.
- Customizable UI: See your RAG pipeline in action with the provided UI, built with <a href='https://github.com/gradio-app/gradio'>Gradio <img src='https://img.shields.io/github/stars/gradio-app/gradio'></a>.
- Gradio Theme: If you use Gradio for development, check out our theme here: kotaemon-gradio-theme.
Key Features
-
Host your own document QA (RAG) web-UI: Support multi-user login, organize your files in private/public collections, collaborate and share your favorite chat with others.
-
Organize your LLM & Embedding models: Support both local LLMs & popular API providers (OpenAI, Azure, Ollama, Groq).
-
Hybrid RAG pipeline: Sane default RAG pipeline with hybrid (full-text & vector) retriever and re-ranking to ensure best retrieval quality.
-
Multi-modal QA support: Perform Question Answering on multiple documents with figures and tables support. Support multi-modal document parsing (selectable options on UI).
-
Advanced citations with document preview: By default the system will provide detailed citations to ensure the correctness of LLM answers. View your citations (incl. relevant score) directly in the in-browser PDF viewer with highlights. Warning when retrieval pipeline return low relevant articles.
-
Support complex reasoning methods: Use question decomposition to answer your complex/multi-hop question. Support agent-based reasoning with
ReAct,ReWOOand other agents. -
Configurable settings UI: You can adjust most important aspects of retrieval & generation process on the UI (incl. prompts).
-
Extensible: Being built on Gradio, you are free to customize or add any UI elements as you like. Also, we aim to support multiple strategies for document indexing & retrieval.
GraphRAGindexing pipeline is provided as an example.

Installation
If you are not a developer and just want to use the app, please check out our easy-to-follow User Guide. Download the
.zipfile from the latest release to get all the newest features and bug fixes.
System requirements
- Python >= 3.10
- Docker: optional, if you install with Docker
- Unstructured if you want to process files other than
.pdf,.html,.mhtml, and.xlsxdocuments. Installation steps differ depending on your operating system. Please visit the link and follow the specific instructions provided there.
With Docker (recommended)
-
We support both
lite&fullversion of Docker images. Withfullversion, the extra packages ofunstructuredwill be installed, which can support additional file types (.doc,.docx, ...) but the cost is larger docker image size. For most users, theliteimage should work well in most cases.-
To use the
fullversion.docker run \ -e GRADIO_SERVER_NAME=0.0.0.0 \ -e GRADIO_SERVER_PORT=7860 \ -v ./ktem_app_data:/app/ktem_app_data \ -p 7860:7860 -it --rm \ ghcr.io/cinnamon/kotaemon:main-full -
To use the
fullversion with bundled Ollama for local / private RAG.# change image name to docker run <...> ghcr.io/cinnamon/kotaemon:main-ollama -
To use the
liteversion.
# change image name to docker run <...> ghcr.io/cinnamon/kotaemon:main-lite -
-
We currently support and test two platforms:
linux/amd64andlinux/arm64(for newer Mac). You can specify the platform by passing--platformin thedocker runcommand. For example:# To run docker with platform linux/arm64 docker run \ -e GRADIO_SERVER_NAME=0.0.0.0 \ -e GRADIO_SERVER_PORT=7860 \ -v ./ktem_app_data:/app/ktem_app_data \ -p 7860:7860 -it --rm \ --platform linux/arm64 \ ghcr.io/cinnamon/kotaemon:main-lite -
Once everything is set up correctly, you can go to
http://localhost:7860/to access the WebUI. -
We use GHCR to store docker images, all images can be found here.
Without Docker
Option 1: Using uv (Recommended for faster installation)
-
Clone the repository and run the uv installation script:
# clone this repo git clone https://github.com/Cinnamon/kotaemon cd kotaemon # run the uv installation script (installs uv automatically if not present) bash scripts/run_uv.shThis script will:
- Install uv package manager if not present
- Create a virtual environment with Python 3.10
- Install all dependencies using uv (significantly faster than conda/pip)
- Set up PDF.js viewer
- Launch the application
Option 2: Using conda (Traditional method)
-
Clone and install required packages on a fresh python environment.
# optional (setup env) conda create -n kotaemon python=3.10 conda activate kotaemon # clone this repo git clone https://github.com/Cinnamon/kotaemon cd kotaemon pip install -e "libs/kotaemon[all]" pip install -e "libs/ktem" -
Create a
.envfile in the root of this project. Use.env.exampleas a templateThe
.envfile is there to serve use cases where users want to pre-config the models before starting up the app (e.g. deploy the app on HF hub). The file will only be used to populate the db once upon the first run, it will no longer be used in consequent runs. -
(Optional) To enable in-browser
PDF_JSviewer, download PDF_JS_DIST then extract it tolibs/ktem/ktem/assets/prebuilt
-
Start the web server:
python app.py- The app will be automatically launched i
