OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  Kotaemon — 面向企业知识库问答的开源 RAG Web 应用

Kotaemon — 面向企业知识库问答的开源 RAG Web 应用

 
  basket ·  2026-03-22 11:00:29 · 4 次点击  · 0 条评论  

kotaemon

一个开源的、简洁且可定制的 RAG UI,用于与您的文档进行对话。专为终端用户和开发者设计。

预览图

简介

本项目是一个功能性的 RAG UI,既服务于想要对文档进行问答的终端用户,也服务于想要构建自己 RAG 管道的开发者。

+----------------------------------------------------------------------------+
| 终端用户:使用基于 `kotaemon` 构建的应用的用户。                           |
| (您使用类似上面演示中的应用)                                               |
|     +----------------------------------------------------------------+     |
|     | 开发者:使用 `kotaemon` 进行构建的人员。                       |     |
|     | (您的项目中有 `import kotaemon`)                               |     |
|     |     +----------------------------------------------------+     |     |
|     |     | 贡献者:让 `kotaemon` 变得更好的人。               |     |     |
|     |     | (您向此仓库提交 PR)                                 |     |     |
|     |     +----------------------------------------------------+     |     |
|     +----------------------------------------------------------------+     |
+----------------------------------------------------------------------------+

面向终端用户

  • 简洁直观的 UI:用于基于 RAG 的问答的用户友好界面。
  • 支持多种 LLM:兼容 LLM API 提供商(OpenAI、AzureOpenAI、Cohere 等)和本地 LLM(通过 ollamallama-cpp-python)。
  • 易于安装:简单的脚本助您快速上手。

面向开发者

  • RAG 管道框架:用于构建您自己的基于 RAG 的文档问答管道的工具。
  • 可定制的 UI:通过提供的 UI(基于 Gradio 构建)查看您的 RAG 管道运行情况。
  • Gradio 主题:如果您使用 Gradio 进行开发,请查看我们的主题:kotaemon-gradio-theme

主要特性

  • 托管您自己的文档问答 (RAG) Web-UI:支持多用户登录,在私有/公共集合中组织文件,与他人协作并分享您喜欢的对话。

  • 组织您的 LLM 和嵌入模型:支持本地 LLM 和流行的 API 提供商(OpenAI、Azure、Ollama、Groq)。

  • 混合 RAG 管道:合理的默认 RAG 管道,包含混合(全文和向量)检索器和重排序,以确保最佳检索质量。

  • 多模态问答支持:对包含图表和表格的多个文档执行问答。支持多模态文档解析(UI 上可选)。

  • 带有文档预览的高级引用:默认情况下,系统将提供详细的引用来确保 LLM 答案的正确性。直接在浏览器内 PDF 查看器中查看您的引用(包括相关度分数),并高亮显示。当检索管道返回低相关性文章时会发出警告。

  • 支持复杂推理方法:使用问题分解来回答您的复杂/多跳问题。支持基于代理的推理,如 ReActReWOO 和其他代理。

  • 可配置的设置 UI:您可以在 UI 上调整检索和生成过程的大多数重要方面(包括提示词)。

  • 可扩展性:基于 Gradio 构建,您可以自由定制或添加任何 UI 元素。同时,我们旨在支持多种文档索引和检索策略。GraphRAG 索引管道作为一个示例提供。

预览图

安装

如果您不是开发者,只是想使用该应用,请查阅我们易于遵循的用户指南。从最新发布版本下载 .zip 文件以获取所有新功能和错误修复。

系统要求

  1. Python >= 3.10
  2. Docker:可选,如果您使用 Docker 安装
  3. Unstructured:如果您需要处理除 .pdf.html.mhtml.xlsx 之外的其他文档。安装步骤因操作系统而异,请访问链接并按照提供的具体说明操作。

使用 Docker(推荐)

  1. 我们支持 litefull 两种版本的 Docker 镜像。full 版本会安装 unstructured 的额外包,可以支持更多文件类型(.doc.docx、...),但代价是 Docker 镜像体积更大。对于大多数用户,lite 镜像在大多数情况下应该可以正常工作。
  • 使用 full 版本。

    bash 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

  • 使用捆绑了 Ollamafull 版本,用于本地/私有 RAG

    bash # 将镜像名称改为 docker run <...> ghcr.io/cinnamon/kotaemon:main-ollama

  • 使用 lite 版本。

bash # 将镜像名称改为 docker run <...> ghcr.io/cinnamon/kotaemon:main-lite

  1. 我们目前支持并测试两个平台:linux/amd64linux/arm64(适用于较新的 Mac)。您可以通过在 docker run 命令中传递 --platform 来指定平台。例如:

bash # 以 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

  1. 一切正确设置后,您可以访问 http://localhost:7860/ 来使用 WebUI。

  2. 我们使用 GHCR 存储 Docker 镜像,所有镜像都可以在此处找到

不使用 Docker

选项 1:使用 uv(推荐,安装更快)

  1. 克隆仓库并运行 uv 安装脚本:

```shell
# 克隆此仓库
git clone https://github.com/Cinnamon/kotaemon
cd kotaemon

# 运行 uv 安装脚本(如果未安装 uv 会自动安装)
bash scripts/run_uv.sh
```

此脚本将:

  • 如果未安装,则安装 uv 包管理器
  • 使用 Python 3.10 创建虚拟环境
  • 使用 uv 安装所有依赖项(比 conda/pip 快得多)
  • 设置 PDF.js 查看器
  • 启动应用程序

选项 2:使用 conda(传统方法)

  1. 在新的 Python 环境中克隆并安装所需包。

```shell
# 可选(设置环境)
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"
```

  1. 在此项目的根目录创建一个 .env 文件。使用 .env.example 作为模板。

.env 文件用于满足用户希望在启动应用前预配置模型的需求(例如,在 HF hub 上部署应用)。该文件仅在首次运行时用于填充数据库,后续运行将不再使用。

  1. (可选)要启用浏览器内 PDF_JS 查看器,请下载 PDF_JS_DIST,然后将其解压到 libs/ktem/ktem/assets/prebuilt

pdf-setup

  1. 启动 Web 服务器:

shell python app.py

  • 应用将自动在您的浏览器中启动。
  • 默认用户名和密码均为 admin。您可以直接通过 UI 设置其他用户。

聊天标签页

  1. 检查 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` 安装可能会引入版本冲突,请参阅[此问题](https://github.com/Cinnamon/kotaemon/issues/440) - 快速修复:`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` 安装可能会引入版本冲突,请参阅[此问题](https://github.com/Cinnamon/kotaemon/issues/440) - 快速修复:`pip uninstall hnswlib chroma-hnswlib && pip install chroma-hnswlib` - 使用 `USE_LIGHTRAG=true` 环境变量启动 Kotaemon。 - 在 Resources 设置中设置您的默认 LLM 和 Embedding 模型,LightRAG 将自动识别它们。
设置 MS GRAPHRAG - **非 Docker 安装**:如果您不使用 Docker,请使用以下命令安装 GraphRAG: ```shell pip install "graphrag<=0.3.6" future ``` - **设置 API KEY**:要使用 GraphRAG 检索器功能,请确保设置 `GRAPHRAG_API_KEY` 环境变量。您可以直接在环境中设置,或将其添加到 `.env` 文件中。 - **使用本地模型和自定义设置**:如果您想将 GraphRAG 与本地模型(如 `Ollama`)一起使用或自定义默认 LLM 和其他配置,请将 `USE_CUSTOMIZED_GRAPHRAG_SETTING` 环境变量设置为 true。然后,在 `settings.yaml.example` 文件中调整您的设置。

设置本地模型(用于本地/私有 RAG)

请参阅本地模型设置

设置多模态文档解析(OCR、表格解析、图表提取)

提供以下选项:

Settings -> Retrieval Settings -> File loader 中选择相应的加载器。

自定义您的应用

  • 默认情况下,所有应用数据都存储在 ./ktem_app_data 文件夹中。您可以备份或复制此文件夹以将您的安装迁移到新机器。

  • 对于高级用户或特定用例,您可以自定义这些文件:

  • flowsettings.py

  • .env

flowsettings.py

此文件包含您的应用配置。您可以使用此处的示例作为起点。

重要设置
# 设置您偏好的文档存储(具有全文搜索功能)
KH_DOCSTORE=(Elasticsearch | LanceDB | SimpleFileDocumentStore)

# 设置您偏好的向量存储(用于基于向量的搜索)
KH_VECTORSTORE=(ChromaDB | LanceDB | InMemory | Milvus | Qdrant)

# 启用/禁用多模态问答
KH_REASONINGS_USE_MULTIMODAL=True

# 设置您的新推理管道或修改现有管道。
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 模型的访问。还有其他变量可以修改,请根据您的需求进行编辑。否则,默认参数应该适用于大多数人。 ```shell OPENAI_API_BASE=https://api.openai.com/v1 OPENAI_API_KEY=<在此处输入您的 OpenAI API 密钥> OPENAI_CHAT_MODEL=gpt-3.5-turbo OPENAI_EMBEDDINGS_MODEL=text-embedding-ada-002 ``` - **Azure OpenAI** 对于通过 Azure 平台使用的 OpenAI 模型,您需要提供您的 Azure 端点和 API 密钥。根据您设置 Azure 部署的方式,您可能还需要为聊天模型和嵌入模型提供部署名称。 ```shell 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 ``` - **本地模型** - 使用 `ollama` OpenAI 兼容服务器: - 安装 [ollama](https://github.com/ollama/ollama) 并启动应用。 - 拉取您的模型,例如: ```shell ollama pull llama3.1:8b ollama pull nomic-embed-text ``` - 在 Web
4 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私政策 ·  服务条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 19 ms
Developed with Cursor