18 KiB
Note
本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
简介
本项目为希望对文档进行问答(QA)的终端用户,以及希望构建自有 RAG 流水线的开发者,提供一款实用的 RAG UI。
+----------------------------------------------------------------------------+
| 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) | | |
| | +----------------------------------------------------+ | |
| +----------------------------------------------------------------+ |
+----------------------------------------------------------------------------+
面向终端用户
- 简洁极简 UI:面向基于 RAG 的问答,提供友好的用户界面。
- 支持多种 LLM:兼容 LLM API 提供商(OpenAI、AzureOpenAI、Cohere 等)以及本地 LLM(通过
ollama和llama-cpp-python)。 - 安装简便:提供简单脚本,助你快速上手。
面向开发者
- RAG 流水线框架:提供工具,助你构建基于 RAG 的文档问答流水线。
- 可自定义 UI:通过内置 UI 直观查看 RAG 流水线运行效果,基于 Gradio
构建。
- Gradio 主题:若你使用 Gradio 进行开发,可在此查看我们的主题:kotaemon-gradio-theme.
核心特性
-
自托管文档问答(RAG)Web UI:支持多用户登录,在私有/公开集合中整理文件,协作并与他人分享你喜爱的对话。
-
管理 LLM 与 Embedding 模型:支持本地 LLM 及主流 API 提供商(OpenAI、Azure、Ollama、Groq)。
-
混合 RAG 流水线:提供合理的默认 RAG 流水线,采用混合(全文与向量)检索器并重排序,以确保最佳检索质量。
-
多模态问答支持:对包含图表、表格的多份文档进行问答。支持多模态文档解析(可在 UI 中选择选项)。
-
高级引用与文档预览:默认提供详细引用,以确保 LLM 回答的准确性。可在_浏览器内 PDF 查看器_中直接查看引用(含相关度分数)及高亮。当检索流水线返回相关性较低的文章时会发出警告。
-
支持复杂推理方法:通过问题分解回答复杂/多跳问题。支持基于智能体的推理,可使用
ReAct、ReWOO及其他智能体。 -
可配置设置 UI:可在 UI 上调整检索与生成过程中的大多数重要环节(含提示词 prompts)。
-
可扩展:基于 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_。# change image name to docker run <...> ghcr.io/cinnamon/kotaemon:main-ollama -
使用
lite版本。
# change image name to docker run <...> ghcr.io/cinnamon/kotaemon:main-lite -
-
我们目前支持并测试两个平台:
linux/amd64与linux/arm64(适用于较新的 Mac)。可在docker run命令中通过传入--platform指定平台。例如:# 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 -
一切配置正确后,可访问
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)。该文件仅在首次运行时用于填充数据库一次,后续运行将不再使用。
4.(可选)要启用浏览器内 PDF_JS 查看器,请下载 PDF_JS_DIST,然后解压到 libs/ktem/ktem/assets/prebuilt。
-
启动 Web 服务器:
python app.py- 应用会自动在浏览器中打开。
- 默认用户名和密码均为
admin。你可以通过 UI 直接添加更多用户。
-
检查
Resources标签页和LLMs and Embeddings,确保你的api_key值已从.env文件正确设置。若未设置,可在该处进行配置。
配置 GraphRAG
Note
官方 MS GraphRAG 索引仅支持 OpenAI 或 Ollama API。 我们建议大多数用户使用 NanoGraphRAG 实现,以便与 Kotaemon 轻松集成。
配置 Nano GRAPHRAG
- 安装 nano-GraphRAG:
pip install nano-graphrag nano-graphrag安装可能会引发版本冲突,请参阅 此 issue- 快速修复:
pip uninstall hnswlib chroma-hnswlib && pip install chroma-hnswlib
- 快速修复:
- 使用
USE_NANO_GRAPHRAG=true环境变量启动 Kotaemon。 - 在 Resources(资源)设置中配置默认 LLM 和 Embedding 模型,NanoGraphRAG 会自动识别。
配置 LIGHTRAG
- 安装 LightRAG:
pip install git+https://github.com/HKUDS/LightRAG.git LightRAG安装可能会引发版本冲突,请参阅 此 issue- 快速修复:
pip uninstall hnswlib chroma-hnswlib && pip install chroma-hnswlib
- 快速修复:
- 使用
USE_LIGHTRAG=true环境变量启动 Kotaemon。 - 在 Resources(资源)设置中配置默认 LLM 和 Embedding 模型,LightRAG 会自动识别。
配置 MS GRAPHRAG
-
非 Docker 安装:如果不使用 Docker,请使用以下命令安装 GraphRAG:
pip install "graphrag<=0.3.6" future -
配置 API KEY:要使用 GraphRAG 检索器功能,请确保设置
GRAPHRAG_API_KEY环境变量。你可以直接在环境中设置,或将其添加到.env文件。 -
使用本地模型与自定义设置:如果想使用本地模型(如
Ollama)运行 GraphRAG,或自定义默认 LLM 及其他配置,请将USE_CUSTOMIZED_GRAPHRAG_SETTING环境变量设为 true。然后在settings.yaml.example文件中调整设置。
配置本地模型(用于本地/私有 RAG)
请参阅 本地模型配置。
配置多模态文档解析(OCR、表格解析、图表提取)
可选方案如下:
- Azure Document Intelligence(API)
- Adobe PDF Extract(API)
- Docling(本地、开源) – 有关 Kotaemon 专属配置,请参阅 integrations/docling.md。
- PaddleOCR(本地、开源) – 有关 Kotaemon 专属配置,请参阅 integrations/paddle_ocr.md。
在 Settings -> Retrieval Settings -> File loader 中选择相应的加载器
自定义应用
-
默认情况下,所有应用数据存储在
./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 key,以启用对 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 key。根据你在 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 -
Local Models
-
使用
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 RAM,其中 12 GB 可用,则应选择最多占用 10 GB RAM 的模型。更大的模型通常生成效果更好,但处理时间也更长。
-
-
-
以下是一些推荐模型及其内存占用:
- [Qwen1.5-1.8B-Chat-GGUF](https://huggingface.co/Qwen/Qwen1.5-1.8B-Chat-GGUF/resolve/main/qwen1_5-1_8b-chat-q8_0.gguf?download=true): 约 2 GB
在 Web UI 中添加一个新的 LlamaCpp 模型,使用提供的模型名称。
添加你自己的 RAG 流水线
自定义推理流水线(Reasoning Pipeline)
- 在此处查看默认流水线实现。你可以快速调整默认 QA 流水线的工作方式。
- 在
libs/ktem/ktem/reasoning/中添加新的.py实现,随后在flowssettings中引入,以在 UI 上启用。
自定义索引流水线(Indexing Pipeline)
- 在
libs/ktem/ktem/index/file/graph中查看示例实现
(更多说明待补充 WIP)。
引用
请按如下方式引用本项目:
@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}},
}
Star 历史
贡献
由于本项目仍在积极开发中,我们非常重视你的反馈与贡献。请参阅我们的贡献指南 以开始参与。感谢所有贡献者!



