跳到主要内容

公开课内容节选自《大模型与Agent开发》完整版付费课程!

公开课时间有限,若想深度学习大模型技术,欢迎大家报名由我主讲的《大模型与Agent开发实战课》

4a3bf26aef95abca48eafdec1f47397

《大模型与Agent开发实战课》 为【100+小时】体系大课,总共20大模块精讲精析,零基础直达大模型企业级应用!

双十一狂欢钜惠,全年最低价!低至 5 折 !扫码咨询课程信息哦👇

1728478294264

企业级知识库场景构建解决方案-Kotaemon

  在今天的课程中,我们来深入探讨一个目前非常热门的开源 RAG(Retrieval-Augmented Generation)框架——KotaemonKotaemon 是一个基于文档的 QA 和推理开源工具,该工具同时支持在线大模型和本地大模型的接入 、多模式文档解析、GraphRAG 和基于Agent的推理。对于需要深入、以文档为中心的人工智能应用程序的个人/企业来说非常有价值。

  截至 2024 年 11 月 26 日,Kotaemon框架在 GitHub 上已经拥有 17.5k 颗星,广泛的关注度是因为:无论是对直接通过前端界面进行使用的最终用户,还是寻求构建自定义 RAG Pipeline的开发人员,Kotaemon 都提供了强大、灵活且用户友好的平台。 简单来说,如果大家没有大模型相关的技术积累,想去构建一个本地知识库问答,Kotaemon可以给你提供一个拆包即用的前端交互系统。如果是希望在这个框架上已实现功能的基础上进一步接入自定义的流程,它也提供了丰富、灵活的接入方式,能够满足各类人群的实际需求。

Kotaemon Github https://github.com/Cinnamon/kotaemon

  Kotaemon通过Gradio提供了基于RAG的用户问答交互界面,所以在具体的谈论它的功能之前,我们不妨先将Kotaemon安装在本地的电脑上,通过可视化的界面体验它强大的功能和直观的感受它的实际效果。根据Kotaemon官方的说明,该工具支持在WindwosLinux以及Mac等多个系统环境中部署使用。因此,我们这里选择符合更多人使用习惯的Windwos系统来进行详细的介绍。

  Kotaemon提供了两种安装方式,分别为Docker容器化部署和源码安装。如果大家不想进行基于这个项目的二次开发,而只想使用该应用程序,建议使用Docker容器化安装方法,这种方式更简单以及更方便管理。反之则需要使用源码安装的方式,以支持后续自定义流程的灵活接入。本期视频我们会对两种方式一一展开详细的讲解。

1. Docker 本地安装方法

  首先我们选择比较简单的Docker安装方式来快速了解Kotaemon工具的功能及使用方法。详细的操作步骤如下。

  • Step 1. 安装Docker

  Windows系统可以使用 Docker DeskTop进行傻瓜式安装,https://www.docker.com/products/docker-desktop/ 。 (如遇到安装问题,可以添加底部的二维码免费领取详细的安装教程)

  安装完成后,需要确认Docker处于运行状态,即:

  • Step 2. 下载Kotaemon的Docker镜像

  Kotaemon使用GHCR 存储其docker镜像。

  GHCR(GitHub Container Registry)是 GitHub 提供的一个容器镜像托管服务,它允许开发者存储、管理和部署 Docker 容器镜像GHCR 是集成在 GitHub 的生态系统中,支持容器镜像和 Helm 图表的私有存储和公开分发。Kotaemon所有镜像的版本都存储在Kotaemon Docker Images 。在所有的Docker镜像版本中,又分为litefull两个版本。其中使用full版本会安装额外的unstructured软件包,从而可以支持其他文件类型( .doc , .docx ....),但代价是 docker 镜像会更大。对于大多数用户来说,lite镜像在大多数情况下也基本足够。这里我们选择安装和使用Lite版本。拉取Lite版本的Docker镜像命令如下:

  我们需要打开Windows电脑上的命令行提示符,可以通过如下图所示的方法打开,也可以通过快捷键 win + r,并输入cmd 打开。

  输入如下命令:

FENCE0

  注意:Unable to find image 'ghcr.io/cinnamon/kotaemon:main-lite' locally ,这个信息显示 Docker 正在尝试从 GitHub Container Registry (ghcr.io) 拉取名为 cinnamon/kotaemon:main-lite 的镜像,但是没有在本地找到。因此,它开始从远程仓库拉取。这并不是报错。

  如果看到Pulling from cinnamon/kotaemon,这说明 Docker 已经开始从 ghcr.io 拉取镜像。这个过程需要一些时间,具体取决于网络速度和镜像的大小。等待顺利安装完成后,可以看到Running on local URL: http://0.0.0.0:7860

  此时可以在本地电脑上打开浏览器,输入http://0.0.0.0:7860 即可进入kotaemon系统中。

  Kotaemon支持多种在线、本地模型接入,其中在线模型包括OpenAIGemini等官方直连接入,也可以通过Cohere等平台接入,而本地的开源大模型则借助ollama框架提供问答或RAG服务。这里我们选择使用OpenAIGPT模型,不论选择哪一种,都需要填写对应的有效API_keys

  默认的用户名和密码都是admin。当成功登陆后,在系统中也可以直接通过 UI 设置其他用户,设置方法我们在后面给大家进行介绍。

  正常情况下,登陆成功后将顺利进入到Kotaemon的前端系统中,如下图所示:

2. 传统RAG的语义检索

  首先,Kotaemon系统支持大模型的通用知识问答,这将直接调用大模型利用大模型的原生能力,接收前端传入的问题并生成针对该问题的响应。对话方式如下图所示:

  如果上面的普通问答无法生成响应,或者报错,则说明在配置阶段设置的API_Key是无效的,需要重新检查相关的配置信息。而基于RAGQA问答,则需要我们先构建本地的知识库,才能针对知识库中的内容进行问答。这个过程在Web UI上非常容易操作,只需要我们将本地的文件通过下图所示的方式进行上传,Kotaemon工具会自动执行RAG的过程。

  如下图所示,Kotaemon提供了两种RAG问答模式,其中File Collection的执行过程是基于语义块检索的传统RAG,而GraphRAG则是基于知识图谱检索的GraphRAG

  上传完文档后,可以在Tab中的Files中查看到具体上传文件的信息。

  准备好知识库后,我们可以灵活的选择 RAG问答的模式。如果选择Search All,则会在全部上传的文档中检索与输入问题最相关的文本块。而如果选择Search in Files,则可以选择指定的某个文件内容进行检索问答,如下图所示:

  在右侧,会生成一个带有文档预览的高级引文,详细的引文可以校验答案的准确性,同时我们可以使用浏览器内的PDF查看器查看原始文本中的内容进行验证。

  同样的,我们可以再次上传或者批量上传新的文档至当前的系统环境中,如下所示,我们又上传了一个.pdf 文档。

  同样的,我们可以再次上传或者批量上传新的文档至当前的系统环境中,如下所示,我们又上传了一个.pdf 文档,并且选择Search in Files(s)验证其回答效果。

  对于PDF文档该系统是能够提供非常优秀的检索效果及回答的准确率,但是当识别.PNG图像内容时,则会出现胡言乱语的情况,并且无法生成任何引文内容,如下所示:

  同样,我继续测试了.csv.xls类型的文档,均无法有效的执行检索问答的过程。

  转回到Files下的配置页面,我们能发现对于上述无法识别的.png.xls.docs文件,其对应的Loader字段均为-,这意味着根本没有可用的文档解析器去针对这几种类型的文件构建Indexing过程,自然无法有效的进行检索问答。

  通过交互式的前端,可以让我们即使在不了解任何RAG的基础上也能快速构建出一套效果非常优秀的本地知识库问答流程。但是针对更高阶的配置和应用方法,我们则需要借助传统RAG的底层原理才能够更好的理解和使用这个系统。所以接下来我们就围绕着传统RAG的构建流程展开更加进阶的Kotaemon系统应用技巧介绍。

  Kotaemon系统的File Collection功能是基于传统 RAG流程的,接下来我们就对照完整的RAG流程图来分析Kotaemon每个功能后的具体逻辑。

  Kotaemon的底层主要通过LangChain + Llama_index构建,以加载PDF文件为例,PDF文本提取是通过llama_index.readers.file.PDFReader来实现的,主要借助pypdf来完成此任务。这个过程会利用PyMuPDF (fitz) 对于每个页面创建缩略图,然后将提取的文本、生成的缩略图和任何相关元数据(例如页码、大小)都存储在称为documentsPython 列表中,最后返回documents列表。当然,Kotaemon还提供了OCRReaderAdobeReader等多种方法,这里就不展开介绍了。

  一旦 上传的文档(如PDF) 被解析后,接下来就应该被分块,默认情况下,Kotaemon 使用TokenSplitter进行分块。如下图所示:

  然后,对于将自然语言文本转化成词向量的表示,需要借助Embedding模型来做向量化处理,所以这里用到的是Embedding模型的配置:

  最终,所有向量将存储到默认使用的LanceDB,它是一个开源的、面向开发者的矢量数据库。支持强大的向量搜索,特别适用于在人工智能驱动的应用中实现高级搜索功能和自定义重排序机制。

  如上所示的所有过程就是当我们在前端UI上传一个文档后,Kotaemon在后端自动执行的一系列RAG构建Indexing的过程。接下来我们再来看检索阶段的原理和前端的配置项。

  在检索问答阶段,Kotaemon 提供了多种重新排序算法,包括利用 Cohere API 进行重新排名,灵活的使用提供的大模型重新排名检索结果,以及使用TruLens提示进行重新排名等,其思路如下: FENCE0

  在对话阶段,需要配置的就是大模型的实例,用来接收用户的问题以及检索到的答案并生成最终的回复,其对应的配置项如下所示:

  通过RAG的底层原理来介绍Kotaemon前端各个功能的使用和配置,相信大家能够已经能够更加清晰的明确这个项目的使用方法。接下来,我们进一步学习其更加高阶的功能,这一部分的介绍,我们借助GraphRAG来展开说明。

3. GraphRAG的图检索

  GraphRAG是一种结构化、分层的 RAG 方法,与上面介绍的File Collection依赖纯文本片段或简单文本分块的简单方法会形成鲜明对比。GraphRAG会包括从原始文本中提取知识图、构建社区层次结构、为这些社区生成摘要,以及在执行基于 RAG 的任务时利用这些结构。

  在使用GraphRAG执行检索之前,首先,我们需要运行pip list | grep graph检查 GraphRAG 是否已安装。

  如果没有安装,则需要运行pip install graphrag进行安装,该命令安装的是Microsoft GraphRAG

  然后重新启动Kotaemon项目,这里需要注意的是:使用Microsoft GraphRAG 构建索引仅适用于 OpenAIOllama API。因此,在使用Docker环境下启动的时候,需要给GraphRAG配置有效的大模型API_KEY,方法如下所示: FENCE0

  然后进入如下路径,传入文档构建GraphRAG索引。

  在上传完个人文件后,Kotaemone工具中定义的GraphRAGIndexingPipeline就会被触发。其流程是这样的:

  在Kotaemon中,其构建索引过程是这样的:首先会执行标准文件索引的流程,通过调用将graph_id分配给file_ids,最后,使用docsgraph_id调用Microsoft GraphRAG来创建图索引。这个过程会比较长,大家需要耐心等待。一旦构建成功,则会生成如下标识:

  接下来则可以正常的进行问答了。如下图所示:

  在检索的阶段,Kotaemon会先构建用于图搜索的context_builder ,该上下文生成器使用构建的图索引、实体、关系、报告和语义嵌入来生成上下文,然后根据查询生成上下文的文本和context_records,再将context_records格式化为RetrievedDocument对象的列表。这些文档包括有关实体、关系、报告和来源的内容。使用plot_graph方法从context_records中提取关系并生成知识图(关系的可视化表示)。最后,该函数返回文档列表,其中包括上下文文档(实体、关系、报告等)和知识图可视化。

context_records 是指在本地搜索过程中,为生成回答而组合的上下文数据集合。

4. Koraemon接入本地模型

  除了OpenAIGPT等在线模型,我们也可以使用Ollama启动的开源大模型,我这里以Qwen2.5:72B模型为例:

  进入系统后,首先去配置Ollama模型的EndPoint,配置位置如下:

  注意:这里需要我们先使用Ollama启动好本地部署的模型才可以正常进行连接。(如不了解Ollama或者遇到模型启动问题,可以添加底部的二维码免费领取详细的安装教程)

  然后再回到对话界面,就可以正常的进行对话了,而其他的使用方法,则和我们上面介绍的基本保持一致。

  以上就是我们对Kotaemon工具的使用说明,以及通过底层不同RAG检索方法帮助大家梳理了各个配置项的起到的关键作用。而基于Docker的这种使用方法是非常适合想直接使用产品的最终用户,但如果想更加自定义的开发,这包括:

公开课内容节选自《大模型与Agent开发》完整版付费课程!公开课时间有限,若想深度学习大模型技术,欢迎大家报名由我主讲的《大模型与Agent开发实战课》

4a3bf26aef95abca48eafdec1f47397

《大模型与Agent开发实战课》 为【100+小时】体系大课,总共20大模块精讲精析,零基础直达大模型企业级应用!

双十一狂欢钜惠,全年最低价!低至 5 折 !扫码咨询课程信息哦👇

1728478294264