一個開源、清晰的本地 Graph RAG UI,支持Graph RAG 和 Hybrid RAG(支持Ollama) 原創
這周boss提了一個需求,希望能夠直觀感受一下GraphRAG的問答效果,希望我讓團隊的前端同事做一些基礎的前端工作,包括PDF文件上傳、流式輸出、配置Global或Local查詢方式等基本功能。
作為團隊負責人,并非boss提的所有需求都不假思索直接安排人開發, 要分析本質需求是什么?這個需求的本質是只希望有一個UI界面能夠試用一下GraphRAG。如果我讓組里的前端開發這樣的功能,大約需要兩到三天的時間,而這些代碼很可能在以后會被廢棄。考慮到目前LLM的蓬勃發展,我首先想到的是尋找是否有類似的開源UI項目可以對接GraphRAG這樣的底層RAG引擎。
通過在GitHub上的搜索,我發現了一個名為kotaemon的項目,在此,我將這個項目分享給大家。
簡介
kotaemon是一個開源的干凈且可定制的RAG UI,用于構建和定制自己的文檔問答系統。既考慮了最終用戶的需求,也考慮了開發者的需求。kotaemon為想要在他們的文檔上進行問答(QA)的最終用戶,以及想要構建自己的RAG流程的開發者提供了一個功能性的RAG UI。
特點
這款RAG UI提供了多種功能,滿足了終端用戶和開發人員的需求。你可以使用這個簡潔的UI來幫助你完成多種任務,它也可以用于問答、互動式流水線定制等多種用途。現在讓我們來看看Kotaemon的功能。
- 自托管文檔問答(RAG)Web UI:允許用戶自己托管文檔問答界面。
- 支持多用戶登錄:可以組織私人或公共文件集合,支持協作和分享。
- 組織LLM和嵌入模型:支持本地LLM和流行的API提供商,如OpenAI、Azure、Ollama、Groq等。
- 混合RAG管道:提供混合(全文和向量)檢索器和重新排名,以確保最佳的檢索質量。
- 多模態問答支持:支持在包含圖表和表格的多個文檔上進行問答,并支持多模態文檔解析。
- 高級引用與文檔預覽:系統默認提供詳細的引用以確保LLM答案的正確性,可以在瀏覽器內的PDF查看器中查看引用(包括相關分數)并高亮顯示。
- 支持復雜推理方法:使用問題分解來回答復雜或多跳問題,支持基于Agent的推理,如ReAct、ReWOO和其他代理。
- 可配置的設置UI:可以在UI上調整檢索和生成過程中的大多數重要方面(包括提示)。
- 可擴展性:基于Gradio構建,用戶可以自由定制或添加任何UI元素。同時,旨在支持多種文檔索引和檢索策略,提供了GraphRAG索引管道作為示例。
安裝
目前,有兩種方式可以訪問Kotaemon,首先是通過Hugging Face Spaces,這使你能夠利用這個演示來開始使用這個新的RAG UI。。另一種是在本地服務器安裝,下面介紹本地服務器安裝的兩種方式:
With Docker (推薦)
docker run \
-e GRADIO_SERVER_NAME=0.0.0.0 \
-e GRADIO_SERVER_PORT=7860 \
-p 7860:7860 -it --rm \
ghcr.io/cinnamon/kotaemon:latest
使用 ??http://localhost:7860/?
? 就可以訪問UI界面,默認的賬號和密碼都是admin。我們部署使用的就是這種方式,當然,在部署的時候你可以將容器的.env映射出來,這樣就方便修改openai key等配置了。
Without Docker
- clone項目并安裝依賴
# optional (setup env)
conda create -n kotaemon python=3.10
conda activate kotaemon
# clone this repo
git clone https://github.com/Cinnamon/kotaemon
cd kotaemon
pip install -e "libs/kotaemon[all]"
pip install -e "libs/ktem"
- 在.env中查看和編輯環境變量(API key等)。
- (可選)要啟用瀏覽器內PDF_JS查看器,請下載PDF_JS_DIST并將其解壓到libs/ktem/ktem/assets/prebuilt
UI操作
Resources
Resources主要包含index(索引)、llm(大模型)、embedding(向量)、User等四個部分,簡單使用的話只需要在Resources菜單欄的LLMs和Embeddings配置你使用的LLM,我使用的是openai, 修改對應的api_key和代理即可:
Settings
"Settings"部分主要包含用戶的配置選項,專注于兩個方面:檢索(retrieval)和推理(reasoning)。在這里,你可以根據需求設定自己的檢索策略和推理框架。默認情況下,系統已啟用混合檢索并開啟了rerank功能。至于推理配置,系統默認設定的是"simple"模式,但如果需要,您也可將其更改為"React"模式。
Files
"Files"部分是用于上傳文件的地方,可以被視為我們的知識庫。在這里,“File Collection”用于上傳服務于傳統RAG模式的文件,而“GraphRAG Collection”則用于上傳適用于GraphRAG模式的文件。
Chat
在我們的聊天系統中,可以選擇兩種模式:傳統的RAG和GraphRAG。首先,你需要配置好LLM和embedding。然后,在知識庫中上傳完文件后,你可以選擇想要使用的模式以及希望進行聊天的文件。
一旦設置完成,就可以開始聊天了。在界面的最右邊有一個名為“Information Panel”的區域,它會展示與你的對話相關的chunk信息或圖譜信息。這樣,你不僅可以享受到與系統的互動,還能同時獲得相關的信息反饋。
注意目前kotaemon的GraphRAG只能選擇單個文件進行聊天,選擇多個文件會報錯
總結
基本上,這就是Kotaemon,它是一個非常棒的開源RAG UI,允許你在其UI組件中實現傳統RAG和Graph RAG。并且它還對GraphRAG支持了更多拓展,比如微軟的GraphRAG只支持txt和csv的文件格式,但是Kotaemon支持的文件格式更豐富。并且對于傳統RAG模式來說,使用了hybrid檢索和rerank等常規的RAG優化策略,其問答效果還是不錯的。
本文轉載自公眾號AI 博物院 作者:longyunfeigu
