在当今信息爆炸的时代,如何高效地从海量文档中提取关键信息并进行智能问答,成为了许多个人和企业面临的挑战。正是在这样的背景下,Cinnamon 公司推出了一个名为 Kotaemon 的开源项目。它是一个基于检索增强生成(RAG)的工具,旨在让用户能够轻松地与自己的文档进行智能对话,无论是普通用户还是开发者,都能从中找到满足需求的功能。

Kotaemon 简介

Kotaemon 的核心理念是提供一个简洁、可定制的 RAG 用户界面,让文档问答变得触手可及。它不仅仅是一个面向最终用户的应用程序,更是一个为开发者构建 RAG 管道提供强大框架的平台。这意味着,无论您是想快速体验 RAG 技术,还是希望深入定制并集成到自己的项目中,Kotaemon 都能提供全面的支持。

对于普通用户而言,Kotaemon 提供了一个直观且美观的界面,让您可以上传文档、提出问题并获得精准的答案。而对于开发者来说,它是一个模块化、可扩展的工具集,可以帮助您高效地搭建和优化自己的 RAG 解决方案。项目的开源性质也鼓励了社区的贡献,让这个工具在不断迭代中变得更加完善。

核心功能亮点

Kotaemon 凭借其一系列创新功能,在文档智能问答领域脱颖而出:

灵活的文档问答平台

Kotaemon 允许用户搭建自己的文档问答(RAG)Web UI,并支持多用户登录,方便团队协作。您可以将文件组织到私有或公共集合中,并与他人分享您喜欢的聊天记录,实现知识共享与管理。

多样化的模型支持

在大型语言模型(LLM)和嵌入模型方面,Kotaemon 展现了极大的兼容性。它不仅支持主流的 LLM API 提供商,例如 OpenAI、Azure OpenAI、Cohere 等,还能与本地运行的 LLM 协同工作,如通过 ollamallama-cpp-python 集成的模型。这为用户提供了灵活的选择,以适应不同的成本、隐私和性能需求。

强大的混合RAG管道

为了确保检索质量,Kotaemon 内置了一个合理的默认 RAG 管道,该管道结合了混合(全文与向量)检索器和重排序机制。这种策略可以显著提高从文档中提取相关信息的准确性,从而生成更精准、更有用的答案。

多模态问答能力

项目支持对包含图表和表格的多种文档进行问答。通过多模态文档解析功能(可在 UI 上选择配置),Kotaemon 能够理解并处理复杂的视觉信息,提供更全面的回答。它支持多种文件解析选项,如 Azure Document Intelligence、Adobe PDF Extract 以及开源的 Docling。

详细的引用与文档预览

为了增强 LLM 答案的可靠性,系统默认提供详细的引用。用户可以直接在内置的浏览器 PDF 查看器中查看这些引用,其中包含相关性评分和高亮显示,确保答案有据可查。当检索管道返回相关性较低的文章时,系统还会发出警告。

支持复杂推理方法

面对复杂或多跳问题,Kotaemon 提供了先进的推理能力。它支持问题分解技术,能够将复杂问题拆解为更小的部分逐一处理。此外,它还集成了基于代理的推理方法,如 ReActReWOO 等,进一步提升了回答复杂问题的能力。

可配置的用户界面

用户可以通过直观的设置界面调整检索和生成过程中的大部分关键参数,包括提示词(prompts)。这种高度可配置性让用户可以根据具体需求优化 RAG 管道的行为。

高度可扩展性

Kotaemon 基于 Gradio 构建,这意味着开发者可以自由地定制或添加任何 UI 元素。此外,项目致力于支持多种文档索引和检索策略,例如,它就提供了 GraphRAG 索引管道作为示例,展示了其强大的扩展潜力。如果您是 Gradio 开发者,也可以探索其相关的 Gradio 主题。

如何开始使用 Kotaemon

无论是最终用户还是开发者,启动 Kotaemon 都相对简单。

获取和演示

对于非开发者用户,可以通过访问项目提供的在线演示空间来快速体验其功能。此外,项目官网也提供了详细的用户指南和在线安装说明。对于希望在本地进行快速尝试的用户,也有 Google Colab 笔记本可供选择,实现本地 RAG 功能。

系统要求

运行 Kotaemon 需要满足以下基本系统要求:

  • Python 版本 3.10 或更高。
  • Docker(可选):如果您选择通过 Docker 镜像进行安装,则需要安装 Docker。
  • Unstructured(可选):如果您需要处理 .pdf.html.mhtml.xlsx 以外的文件类型(例如 .doc.docx),则需要安装 Unstructured。其安装步骤可能因操作系统而异,建议查阅 Unstructured 官方文档。

安装方法

Kotaemon 提供了两种主要的安装方式:

使用 Docker(推荐)

Docker 是一种便捷的部署方式,项目提供了 litefull 版本的 Docker 镜像。full 版本包含了 Unstructured 的额外包,支持更多文件类型,但镜像体积较大;对于大多数用户,lite 镜像已足够。此外,还有捆绑了 Ollama 的 main-ollama 镜像,专为本地/私有 RAG 设计。项目支持 linux/amd64linux/arm64 平台。安装后,通过浏览器访问 http://localhost:7860/ 即可。所有 Docker 镜像都可以在 GitHub Container Registry (GHCR) 上找到。

不使用 Docker

如果您不希望使用 Docker,也可以在本地 Python 环境中安装 Kotaemon:

  1. 克隆 GitHub 仓库,并使用 condavenv 创建一个隔离的 Python 环境。
  2. 安装所需的 Python 包:pip install -e "libs/kotaemon[all]"pip install -e "libs/ktem"
  3. 创建一个 .env 文件,参照 .env.example 模板配置模型参数和凭据。这个文件主要用于首次运行时初始化数据库,后续运行中不会再次使用。
  4. (可选)为了启用内置的 PDF_JS 查看器,需要下载 PDF_JS_DIST 并将其解压到 libs/ktem/ktem/assets/prebuilt 目录。
  5. 通过运行 python app.py 启动 Web 服务器。应用程序将自动在浏览器中打开。默认的管理员用户名和密码都是 admin,您可以在 UI 中添加更多用户。
  6. Resources 标签页下的 LLMs and Embeddings 部分,确保您的 API 密钥已正确设置;如果未设置,可以在此处进行配置。

设置特定的 RAG 框架

Kotaemon 还支持与多种 RAG 框架集成,例如:

  • Nano GRAPHRAG:安装 nano-graphrag 并通过设置环境变量 USE_NANO_GRAPHRAG=true 启动 Kotaemon。
  • LIGHTRAG:安装 LightRAG 并通过设置环境变量 USE_LIGHTRAG=true 启动 Kotaemon。
  • MS GRAPHRAG:对于非 Docker 安装,请安装 graphrag<=0.3.6future。要使用 GraphRAG 检索器,需要设置 GRAPHRAG_API_KEY 环境变量。如果希望使用本地模型或自定义配置,将 USE_CUSTOMIZED_GRAPHRAG_SETTING 设置为 true,并调整 settings.yaml.example 文件。

本地模型与多模态文档解析设置

本地模型: 您可以配置本地模型实现本地/私有 RAG。例如,安装 Ollama 并拉取 llama3.1:8bnomic-embed-text 等模型,然后在 Web UI 上设置并将其设为默认模型。或者,使用 llama-cpp-python 集成 GGUF 格式的本地 LLM 模型。

多模态文档解析: Kotaemon 提供了多种多模态文档解析选项,包括:

  • Azure Document Intelligence (API)
  • Adobe PDF Extract (API)
  • Docling (本地、开源) 您可以在 Settings -> Retrieval Settings -> File loader 中选择相应的加载器。

定制化与扩展

Kotaemon 提供了丰富的定制选项,让您可以根据特定需求调整其行为:

应用程序数据与配置

所有应用程序数据默认存储在 ./ktem_app_data 文件夹中,方便备份和迁移。更高级的用户可以通过修改 flowsettings.py.env 文件进行深度定制。

  • flowsettings.py:此文件包含应用程序的核心配置。您可以设置偏好的文档存储(如 Elasticsearch、LanceDB)和向量存储(如 ChromaDB、LanceDB),启用/禁用多模态 QA,并配置或修改现有的推理管道。
  • .env:通过 .env 文件,您可以便捷地配置模型和凭据,包括 OpenAI、Azure OpenAI 的 API 密钥以及本地模型的设置(如 Ollama 的模型名称)。

添加自定义 RAG 管道

Kotaemon 鼓励开发者构建自己的 RAG 管道,提供了清晰的结构和示例:

  • 自定义推理管道:您可以参考 libs/ktem/ktem/reasoning/simple.py 中的默认实现,快速调整 QA 管道的工作方式。只需在 libs/ktem/ktem/reasoning/ 目录下添加新的 Python 实现,并在 flowsettings 中包含它即可在 UI 上启用。
  • 自定义索引管道:可以在 libs/ktem/ktem/index/file/graph 中查看示例实现,了解如何构建自定义索引管道。

社区与贡献

作为一款开源项目,Kotaemon 欢迎社区的积极反馈和贡献。项目提供了详细的贡献指南,鼓励开发者参与到代码的改进和功能的扩展中。每一次贡献都让 Kotaemon 变得更加强大和实用。同时,如果您在学术或研究中使用 Kotaemon,请务必引用该项目。

结语

Kotaemon 不仅仅是一个工具,更是一个开放的平台,旨在降低 RAG 技术的应用门槛,促进智能文档问答的普及。无论您是希望提高工作效率的普通用户,还是寻求构建下一代 AI 应用的开发者,Kotaemon 都将是您值得信赖的伙伴。

查看更多详情