一个开源的干净且可定制的RAG UI 聊天工具,用于与您的文档聊天。构建时充分考虑了最终用户和开发人员的需求。
特性
-
自托管的文档问答(RAG)Web 界面:
支持多用户登录,管理文件至私人/公开集合,协作并与他人分享您最喜爱的聊天内容。 -
管理您的 LLM & 嵌入模型:
支持本地 LLM 和流行的 API 提供商(如 OpenAI、Azure、Ollama、Groq)。 -
混合 RAG 流程:
提供默认的混合 RAG 流程,包括全文检索和向量检索,并结合重排序功能,确保最佳检索质量。 -
多模态问答支持:
支持对包含图表和表格的多个文档进行问答。界面上提供多模态文档解析选项。 -
高级引用与文档预览:
系统默认提供详细的引用,确保 LLM 回答的准确性。
在浏览器内置的 PDF 查看器中直接查看引用(包括相关性分数),并带有高亮显示功能。
当检索流程返回低相关性文章时会发出警告。 -
支持复杂推理方法:
使用问题分解方法回答复杂/多跳问题。支持基于代理的推理方法,如 ReAct、ReWOO 和其他代理。 -
可配置的设置界面:
您可以在界面上调整检索和生成过程中的重要参数(包括提示词)。 -
高度可扩展:
基于 Gradio 构建,您可以自由定制或添加任何界面元素。
我们还致力于支持多种文档索引和检索策略,GraphRAG 索引流程即为一个示例。
安装
系统要求
- Python:>= 3.10
- Docker:可选,如果您选择使用 Docker 安装
- Unstructured:如果您需要处理
.pdf
、.html
、.mhtml
和.xlsx
以外的文件类型(如.doc
和.docx
等),需要安装额外的包。不同操作系统的安装步骤可能有所不同,请访问相关链接并按照说明操作。
通过 Docker 安装(推荐)
我们支持 Docker 镜像的精简版(lite)和完整版(full)。
- 精简版:适合大多数用户,体积较小。
- 完整版:包含 Unstructured 的额外包,支持更多文件类型(如
.doc
和.docx
),但镜像文件较大。
使用精简版
docker run \
-e GRADIO_SERVER_NAME=0.0.0.0 \
-e GRADIO_SERVER_PORT=7860 \
-p 7860:7860 -it --rm \
ghcr.io/cinnamon/kotaemon:main-lite
使用完整版
docker run \
-e GRADIO_SERVER_NAME=0.0.0.0 \
-e GRADIO_SERVER_PORT=7860 \
-p 7860:7860 -it --rm \
ghcr.io/cinnamon/kotaemon:main-full
我们目前支持并测试了两个平台: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 \
-p 7860:7860 -it --rm \
--platform linux/arm64 \
ghcr.io/cinnamon/kotaemon:main-lite
设置完成后,访问 http://localhost:7860/ 即可使用 Web 界面。
我们使用 GHCR 存储 Docker 镜像,所有镜像均可在这里找到。
无需 Docker 的安装
在干净的 Python 环境中克隆并安装所需的包。
# 可选(设置虚拟环境)
conda create -n kotaemon python=3.10
conda activate kotaemon
# 克隆仓库
git clone https://github.com/Cinnamon/kotaemon
cd kotaemon
pip install -e "libs/kotaemon[all]"
pip install -e "libs/ktem"
在项目根目录创建 .env
文件,可参考 .env.example
模板。
.env
文件用于预先配置模型,例如在启动应用程序之前将其部署到 Hugging Face Hub。文件仅在首次运行时用于填充数据库,后续运行将不再使用。
(可选)启用 PDF_JS 内置浏览器查看器
下载 PDF_JS_DIST,并解压至 libs/ktem/ktem/assets/prebuilt
目录。
启动 Web 服务
python app.py
应用程序会自动在浏览器中启动。
默认用户名和密码均为 admin,您可以通过 UI 界面设置其他用户。
检查 Chat 选项卡
打开“资源”选项卡,确保您的 api_key 值已从 .env
文件中正确设置。如果未设置,可以直接在界面中设置。