An open-source RAG-based tool for chatting with your documents.
kotaemon
一款开源、简洁且可定制的 RAG 用户界面,用于与您的文档对话。兼顾终端用户与开发者的使用需求。

在线演示 #1 | 在线演示 #2 | 在线安装 | Colab 笔记本(本地 RAG)
简介
本项目是一个功能完备的RAG用户界面,既面向希望对自己文档进行问答的终端用户,也面向希望构建自己RAG流水线的开发人员。
+----------------------------------------------------------------------------+
| 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) | | |
| | +----------------------------------------------------+ | |
| +----------------------------------------------------------------+ |
+----------------------------------------------------------------------------+
面向终端用户
- 简洁清爽的用户界面:专为基于RAG的问答打造的友好交互界面。
- 支持多种大语言模型(LLMs):兼容主流LLM API提供商(OpenAI、AzureOpenAI、Cohere等)以及本地部署的LLM(通过
ollama和llama-cpp-python)。 - 轻松安装:简单的脚本助您快速启动使用。
面向开发者
- RAG流水线框架:提供构建专属基于RAG的文档问答流水线的工具。
- 可定制用户界面:借助基于Gradio
构建的界面,直观查看您的RAG流水线运行效果。
- Gradio主题:如果您使用Gradio进行开发,欢迎试用我们的主题:kotaemon-gradio-theme。
核心功能
-
搭建专属文档问答(RAG)网页界面:支持多用户登录,将文件整理为私有/公开收藏夹,与他人协作并分享您喜爱的对话。
-
管理您的LLM和嵌入模型:同时支持本地LLM和主流API提供商(OpenAI、Azure、Ollama、Groq)。
-
混合RAG流水线:默认提供合理的RAG流水线,融合(全文与向量)混合检索器及重排序功能,确保最佳检索质量。
-
多模态问答支持:对包含图表和表格的多份文档进行问答。支持多模态文档解析(可在界面上选择相应选项)。
-
带文档预览的高级引用:系统默认提供详细引用,确保LLM回答的准确性。可在浏览器内PDF查看器中直接查看引用(包括相关分数)并高亮显示。当检索流水线返回相关性较低的文章时,会发出警告。
-
支持复杂推理方法:通过问题分解来解答复杂或多跳问题。支持基于
ReAct、ReWOO等智能体的推理。 -
可配置的设置界面:您可以在界面上调整检索和生成过程的大多数重要参数(包括提示词)。
-
可扩展性:基于Gradio构建,您可以自由定制或添加任何UI元素。此外,我们致力于支持多种文档索引和检索策略。
GraphRAG索引流水线已作为示例提供。

安装
若您并非开发者,仅希望使用本应用,请查阅我们易于遵循的用户指南。从最新发布版本下载
.zip文件,以获取所有最新功能和错误修复。
系统要求
- Python >= 3.10
- Docker:可选,若您选择通过 Docker 安装
- Unstructured:如果您需要处理除
.pdf、.html、.mhtml和.xlsx之外的文件。安装步骤因操作系统而异,请访问链接并按照其中提供的具体说明操作。
通过 Docker 安装(推荐)
-
我们支持
lite(轻量版)和full(完整版)两种 Docker 镜像。full版本会安装unstructured的额外软件包,能够支持更多文件类型(如.doc、.docx等),但代价是镜像体积较大。对于大多数用户而言,lite镜像在多数情况下已能满足需求。-
如需使用
full版本: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 -
如需使用捆绑了 Ollama 的
full版本以实现 本地/私有 RAG:# 将镜像名称修改为 docker run <...> ghcr.io/cinnamon/kotaemon:main-ollama -
如需使用
lite版本:
# 将镜像名称修改为 docker run <...> ghcr.io/cinnamon/kotaemon:main-lite -
-
我们目前支持并测试两种平台:
linux/amd64和linux/arm64(适用于较新型号的 Mac)。您可以在docker run命令中通过--platform参数指定平台。例如:# 以 linux/arm64 平台运行 docker 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 -
一切设置正确后,您可以访问
http://localhost:7860/来使用 WebUI。
不使用 Docker
-
克隆仓库:
git clone https://github.com/Cinnamon/kotaemon cd kotaemon -
设置环境:
-
选项 1:使用 uv(推荐)
uv sync --python 3.10 source .venv/bin/activate -
选项 2:使用 conda
conda create -n kotaemon python=3.10 conda activate kotaemon pip install -e "libs/kotaemon[all]" pip install -e "libs/ktem"
-
在项目根目录创建
.env文件。可将.env.example作为模板。.env文件用于满足用户在启动应用前预配置模型的需求(例如在 HF hub 上部署应用)。该文件仅在首次运行时用于填充数据库,后续运行将不再使用。 -
(可选)若要启用浏览器内
PDF_JS查看器,请下载 PDF_JS_DIST 并将其解压到libs/ktem/ktem/assets/prebuilt。
-
启动 Web 服务器:
python app.py- 应用将自动在浏览器中启动。
- 默认用户名和密码均为
admin。您可以通过用户界面直接添加其他用户。

-
检查“资源”选项卡以及“LLM 和嵌入模型”,确保您的
api_key值已从.env文件正确设置。如果未设置,您可以在此处进行设置。
设置 GraphRAG
Note
官方 MS GraphRAG 索引仅适用于 OpenAI 或 Ollama API。 我们建议大多数用户使用 NanoGraphRAG 实现,以便与 Kotaemon 进行简单集成。
设置 Nano GRAPHRAG
- 安装 nano-GraphRAG:
pip install nano-graphrag nano-graphrag安装可能会导致版本冲突,详见 此问题- 快速修复方法:
pip uninstall hnswlib chroma-hnswlib && pip install chroma-hnswlib
- 快速修复方法:
- 使用
USE_NANO_GRAPHRAG=true环境变量启动 Kotaemon。 - 在资源设置中设置您的默认 LLM 和嵌入模型,NanoGraphRAG 将自动识别这些设置。
设置 LIGHTRAG
- 安装 LightRAG:
pip install git+https://github.com/HKUDS/LightRAG.git LightRAG安装可能会导致版本冲突,详见 此问题- 快速修复方法:
pip uninstall hnswlib chroma-hnswlib && pip install chroma-hnswlib
- 快速修复方法:
- 使用
USE_LIGHTRAG=true环境变量启动 Kotaemon。 - 在资源设置中设置您的默认 LLM 和嵌入模型,LightRAG 将自动识别这些设置。
设置 MS GRAPHRAG
-
非 Docker 安装:如果您不使用 Docker,请通过以下命令安装 GraphRAG:
pip install "graphrag<=0.3.6" future -
设置 API 密钥:要使用 GraphRAG 检索器功能,请确保设置
GRAPHRAG_API_KEY环境变量。您可以直接在环境中设置,或添加到.env文件中。 -
使用本地模型和自定义设置:如果您想将 GraphRAG 与本地模型(如
Ollama)一起使用,或自定义默认 LLM 和其他配置,请将USE_CUSTOMIZED_GRAPHRAG_SETTING环境变量设置为 true。然后,在settings.yaml.example文件中调整您的设置。
设置本地模型(用于本地/私有 RAG)
请参见本地模型设置。
设置多模态文档解析(OCR、表格解析、图表提取)
以下选项可供选择:
- Azure 文档智能(API)
- Adobe PDF Extract(API)
- Docling(本地,开源)——有关 Kotaemon 特定设置,请参见integrations/docling.md。
- PaddleOCR(本地,开源)——有关 Kotaemon 特定设置,请参见integrations/paddle_ocr.md。
在“设置 -> 检索设置 -> 文件加载器”中选择相应的加载器。
自定义您的应用程序
-
默认情况下,所有应用程序数据都存储在
./ktem_app_data文件夹中。您可以备份或复制此文件夹,以便将您的安装转移到新机器上。 -
对于高级用户或特定使用场景,您可以自定义以下文件:
flowsettings.py.env
flowsettings.py
此文件包含应用程序的配置。您可以使用此处的示例作为起点。
值得注意的设置
# setup your preferred document store (with full-text search capabilities)
KH_DOCSTORE=(Elasticsearch | LanceDB | SimpleFileDocumentStore)
# setup your preferred vectorstore (for vector-based search)
KH_VECTORSTORE=(ChromaDB | LanceDB | InMemory | Milvus | Qdrant)
# Enable / disable multimodal QA
KH_REASONINGS_USE_MULTIMODAL=True
# Setup your new reasoning pipeline or modify existing one.
KH_REASONINGS = [
"ktem.reasoning.simple.FullQAPipeline",
"ktem.reasoning.simple.FullDecomposeQAPipeline",
"ktem.reasoning.react.ReactAgentPipeline",
"ktem.reasoning.rewoo.RewooAgentPipeline",
]
.env
此文件提供了另一种配置模型和凭据的方式。
通过 .env 文件配置模型
-
或者,您可以通过
.env文件配置模型,其中包含连接 LLM 所需的信息。该文件位于应用程序的文件夹中。如果您没有看到它,可以创建一个。 -
目前支持以下提供商:
-
OpenAI
在
.env文件中,设置OPENAI_API_KEY变量并填入您的 OpenAI API 密钥,以启用对 OpenAI 模型的访问。还有其他变量可以修改,请根据您的情况进行编辑。否则,默认参数对大多数人来说应该适用。OPENAI_API_BASE=https://api.openai.com/v1 OPENAI_API_KEY=<your OpenAI API key here> OPENAI_CHAT_MODEL=gpt-3.5-turbo OPENAI_EMBEDDINGS_MODEL=text-embedding-ada-002 -
Azure OpenAI
对于通过 Azure 平台使用的 OpenAI 模型,您需要提供 Azure 终结点和 API 密钥。根据您设置 Azure 开发的方式,您可能还需要提供聊天模型和嵌入模型的部署名称。
AZURE_OPENAI_ENDPOINT= AZURE_OPENAI_API_KEY= OPENAI_API_VERSION=2024-02-15-preview AZURE_OPENAI_CHAT_DEPLOYMENT=gpt-35-turbo AZURE_OPENAI_EMBEDDINGS_DEPLOYMENT=text-embedding-ada-002 -
本地模型
-
使用
ollamaOpenAI 兼容服务器:-
安装 ollama 并启动应用程序。
-
拉取您的模型,例如:
ollama pull llama3.1:8b ollama pull nomic-embed-text -
在 Web UI 上设置模型名称并将其设为默认:

-
-
使用
GGUF与llama-cpp-python您可以从 Hugging Face Hub 搜索并下载要在本地运行的 LLM。目前支持以下模型格式:
-
GGUF
您应该选择大小小于设备内存的模型,并留出约 2 GB 的空间。例如,如果您的设备总内存为 16 GB,其中 12 GB 可用,那么您应该选择占用最多 10 GB 内存的模型。更大的模型往往能提供更好的生成效果,但也需要更长的处理时间。
以下是一些推荐模型及其内存大小:
-
Qwen1.5-1.8B-Chat-GGUF:约 2 GB
在 Web UI 上使用提供的模型名称添加新的 LlamaCpp 模型。
-
-
-
添加自定义 RAG 流程
自定义推理流程
- 查看 此处 中的默认流程实现。您可以快速调整默认 QA 流程的工作方式。
- 在
libs/ktem/ktem/reasoning/中添加新的.py实现,然后将其包含在flowssettings中,以在 UI 上启用它。
自定义索引流程
- 查看
libs/ktem/ktem/index/file/graph中的示例实现
(更多说明待完成)。
引用
请按以下方式引用本项目
@misc{kotaemon2024,
title = {Kotaemon - An open-source RAG-based tool for chatting with any content.},
author = {The Kotaemon Team},
year = {2024},
howpublished = {\url{https://github.com/Cinnamon/kotaemon}},
}
星标历史
贡献
由于我们的项目正在积极开发中,我们非常重视您的反馈和贡献。请查看我们的贡献指南以开始参与。感谢所有贡献者!