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在文檔智能問答領域提供了一個全面而專業的解決方案。