Kotaemon - 开源RAG文档智能问答工具
项目概述
Kotaemon是一个开源的RAG(检索增强生成)工具,专门用于与文档进行对话式交互。该项目旨在为终端用户和开发者提供一个功能完整的RAG用户界面,既可以满足用户对文档进行问答的需求,也能帮助开发者构建自己的RAG流水线。
核心特性
终端用户功能
- 简洁美观的UI界面:提供用户友好的RAG问答界面
- 多种LLM支持:兼容多种LLM API提供商(OpenAI、AzureOpenAI、Cohere等)和本地LLM(通过ollama和llama-cpp-python)
- 简易安装:提供简单的脚本快速启动
- 多用户支持:支持多用户登录,可以创建私有/公共文档集合,支持协作和分享
开发者功能
- RAG流水线框架:提供构建RAG文档问答流水线的工具
- 可定制UI:基于Gradio构建,可以看到RAG流水线的实际效果
- 混合RAG流水线:采用混合(全文和向量)检索器和重新排序,确保最佳检索质量
- 可扩展性:支持自定义UI元素和多种文档索引及检索策略
高级功能
- 多模态问答支持:支持包含图表和表格的多文档问答,支持多模态文档解析
- 高级引用功能:提供详细的引用信息确保LLM答案的正确性,可在浏览器PDF查看器中直接查看带高亮的引用内容
- 复杂推理方法:支持问题分解来回答复杂/多跳问题,支持基于Agent的推理,如ReAct、ReWOO等
- 可配置设置界面:可在UI上调整检索和生成过程的重要方面(包括提示词)
技术架构
支持的文档格式
- PDF、HTML、MHTML、XLSX
- 通过Unstructured库支持更多格式(.doc、.docx等)
数据存储选项
- 文档存储:Elasticsearch、LanceDB、SimpleFileDocumentStore
- 向量存储:ChromaDB、LanceDB、InMemory、Milvus、Qdrant
LLM模型支持
- API提供商:OpenAI、Azure OpenAI、Cohere、Groq等
- 本地模型:通过Ollama和llama-cpp-python支持GGUF格式模型
GraphRAG集成
项目支持两种GraphRAG实现:
NanoGraphRAG(推荐)
- 更直接的Kotaemon集成
- 自动识别默认LLM和嵌入模型
MS GraphRAG
- 官方Microsoft GraphRAG实现
- 仅支持OpenAI或Ollama API
- 支持本地模型和自定义设置
安装和部署
Docker部署(推荐)
提供精简版和完整版Docker镜像:
- 精简版:支持基本文件类型,镜像较小
- 完整版:包含unstructured包,支持更多文件类型
本地安装
- 下载最新版本的release文件
- 配置.env文件
- 运行
python app.py启动服务 - 默认用户名和密码均为
admin
自定义和扩展
自定义推理流水线
- 可在
libs/ktem/ktem/reasoning/中添加新的.py实现 - 通过flowsettings启用新的推理流水线
自定义索引流水线
- 参考
libs/ktem/ktem/index/file/graph中的示例实现 - 支持GraphRAG索引流水线
配置文件
- flowsettings.py:应用程序配置
- .env:模型和凭证配置
应用场景
- 企业知识管理:构建内部文档问答系统
- 学术研究:对研究文献进行智能问答
- 法律文档分析:快速检索和分析法律文件
- 技术文档支持:为用户提供技术文档智能查询
- 个人知识库:管理和查询个人文档集合
项目优势
- 开源免费:完全开源,可自由使用和修改
- 功能完整:从简单问答到复杂推理,功能覆盖全面
- 易于使用:直观的Web界面,无需技术背景即可使用
- 高度可定制:支持多种配置和扩展选项
- 活跃社区:持续更新和社区支持
技术特点
- 基于Python开发
- 使用Gradio构建Web界面
- 支持Docker容器化部署
- 模块化架构设计
- 支持GPU加速(本地模型)
总结
Kotaemon是一个功能强大的RAG UI工具,让用户能够通过对话方式与文档交互。它不仅为终端用户提供了简单易用的文档问答界面,也为开发者提供了构建自定义RAG系统的完整框架。通过混合检索、多模态支持、高级引用等特性,Kotaemon在文档智能问答领域提供了一个全面而专业的解决方案。