如何构建并部署基于LLM的文档问答系统Kotaemon?

摘要:本文主要针对开源文档问答系统Kotaemon的介绍,包括主要功能特点,与传统文档RAG的区别,部署教程以及效果体验等。
1.背景 本qiang~这两周关注到一个很火的开源文档问答系统Kotaemon,从8月28日至今短短两周时间,github星标迅猛增长10K,因此计划深挖一下其中的原理及奥秘。 本篇主要是Kotaemon的简介信息,涉及到主要特点,与传统文档RAG的区别,如何部署、以及效果演示。 后续内容会针对核心模块进行拆解研读,敬请期待~ 2.简介 Kotaemon是一个RAG UI页面,主要面向DocQA的终端用户和构建自己RAG pipeline的开发者。 2.1终端用户 1)提供了一个基于RAG问答的简单且最小化的UI界面 2)支持诸多LLM API提供商(如OpenAI, Cohere)和本地部署的LLM(如ollama和llama-cpp-python) 2.2开发者 1)提供了一个构建RAG文档问答pipeline的框架 2)使用Gradio开发,基于提供的UI可以自定义并查看RAG pipeline的运行过程 3.主要特点 1)托管自己的QA Web UI: 支持多用户登录,支持文件私有或公开,支持与他人协助分享 2)管理LLM和Embedding模型: 支持本地LLM和流行的API提供商 3)混合RAG pipeline: 支持全文本和向量的混合检索,以及re-ranking来保障检索质量 4)支持多模态文档:支持对含有图片及表格的N多个文档进行问答,支持多模态文档解析 5)带有高级引文的文档预览: 系统默认提供具体的引用信息,保障LLM回答的准确性。直接在浏览器内的PDF查阅器查看引文,并高亮显示。 6)支持复杂推理方法:使用问题分解来回答复杂/多跳问题。支持使用ReAct、ReWoo及其他Agent进行推理 7)可调节的设置UI:调整检索和生成过程的参数信息,包括检索过程和推理过程设置 4.与传统文档RAG的区别 (1)在web ui界面直接PDF预览,并通过LLM的引用回调方法高亮有关联的句子,极大地有助于仔细检查LLM的上下文 (2)支持复杂推理方法。目标是支持更多的基于Agent的推理框架,如问题拆解、多跳问题、React、ReWoo等 (3)支持在页面配置中更改prompt,也可以调整想要使用的检索和推理模块 (4)扩展性好,基于gradio开发,可轻松添加或删除UI组件来自定义RAG pipeline 5.安装部署 5.1终端用户 - 可在github的release页面下载最新的kotaemon-app.zip,并解压缩 - 进入scripts,根据系统安装,如windows系统双击run_windows.bat,linux系统bash run_linux.sh - 安装后,程序要求启动ketem的UI,回答”继续” - 如果启动,会自动在浏览器中打开,默认账户名和密码是admin/admin 5.2开发者 5.2.1使用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 # 访问ui地址:http://localhost:7860/ 5.2.2源码安装 # 创建虚拟环境 conda create -n kotaemon python=3.10 conda activate kotaemon # 下载源码 git clone https://github.com/Cinnamon/kotaemon cd kotaemon # 安装依赖 pip install -e "libs/kotaemon[all]" pip install -e "libs/ktem" # 更新环境变量文件.env,如API key # (可选) 如果想浏览器内部展示PDF,可以下载PDF_JS viewer,解压到libs/ktem/ktem/assets/prebuilt目录 # 开启web服务,并使用admin/admin登录 python app.py 5.2.3应用定制 应用数据默认保存在./ktem_app_data文件,如果想要迁移到新机器,只需将该文件夹拷贝即可。
阅读全文