一个开源、清晰的本地 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