首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

LLM应用实战: 文档问答系统Kotaemon-1. 简介及部署实践

编程知识
2024年09月18日 08:02

1.背景

qiang~这两周关注到一个很火的开源文档问答系统Kotaemon,从828日至今短短两周时间,github星标迅猛增长10K,因此计划深挖一下其中的原理及奥秘。

本篇主要是Kotaemon的简介信息,涉及到主要特点,与传统文档RAG的区别,如何部署、以及效果演示

后续内容会针对核心模块进行拆解研读,敬请期待~

2.简介

Kotaemon是一个RAG UI页面,主要面向DocQA的终端用户和构建自己RAG pipeline的开发者

2.1终端用户

1)提供了一个基于RAG问答的简单且最小化的UI界面

2)支持诸多LLM API提供商(OpenAI, Cohere)和本地部署的LLM(ollamallama-cpp-python)

2.2开发者

1)提供了一个构建RAG文档问答pipeline的框架

2)使用Gradio开发,基于提供的UI可以自定义并查看RAG pipeline的运行过程

3.主要特点

1)托管自己的QA Web UI: 支持多用户登录,支持文件私有或公开,支持与他人协助分享

2)管理LLMEmbedding模型: 支持本地LLM和流行的API提供商

3)混合RAG pipeline: 支持全文本和向量的混合检索,以及re-ranking来保障检索质量

4)支持多模态文档:支持对含有图片及表格的N多个文档进行问答,支持多模态文档解析

5)带有高级引文的文档预览: 系统默认提供具体的引用信息,保障LLM回答的准确性。直接在浏览器内的PDF查阅器查看引文,并高亮显示。

6)支持复杂推理方法:使用问题分解来回答复杂/多跳问题。支持使用ReActReWoo及其他Agent进行推理

7)可调节的设置UI:调整检索和生成过程的参数信息,包括检索过程和推理过程设置

 

 

4.与传统文档RAG的区别

(1)web ui界面直接PDF预览,并通过LLM的引用回调方法高亮有关联的句子,极大地有助于仔细检查LLM的上下文

(2)支持复杂推理方法。目标是支持更多的基于Agent的推理框架,如问题拆解、多跳问题、ReactReWoo

(3)支持在页面配置中更改prompt,也可以调整想要使用的检索和推理模块

(4)扩展性好,基于gradio开发,可轻松添加或删除UI组件来自定义RAG pipeline

5.安装部署

5.1终端用户

- 可在githubrelease页面下载最新的kotaemon-app.zip,并解压缩

- 进入scripts,根据系统安装,如windows系统双击run_windows.batlinux系统bash run_linux.sh

- 安装后,程序要求启动ketemUI,回答”继续”

- 如果启动,会自动在浏览器中打开,默认账户名和密码是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文件,如果想要迁移到新机器,只需将该文件夹拷贝即可。

为了高级用户或特殊用途,可以自定义.envflowsetting.py文件

(1)flowsetting.py设置

设置文档存储引擎(该引擎支持全文检索)

KH_DOCSTORE=(Elasticsearch | LanceDB | SimpleFileDocumentStore)

 

# 设置向量存储引擎(支持向量检索)

KH_VECTORSTORE=(ChromaDB | LanceDB | InMemory)

 

# 是否启用多模态QA

KH_REASONINGS_USE_MULTIMODAL=True

 

# 添加新的推理pipeline或修改已有的

KH_REASONINGS = [

    "ktem.reasoning.simple.FullQAPipeline",

    "ktem.reasoning.simple.FullDecomposeQAPipeline",

    "ktem.reasoning.react.ReactAgentPipeline",

    "ktem.reasoning.rewoo.RewooAgentPipeline",

]

)

(2).env设置

该文件提供另一种方式来设置模型和凭据。

# 可以设置OpenAI的连接

OPENAI_API_BASE=https://api.openai.com/v1

OPENAI_API_KEY=<your OpenAI API key here>

OPENAI_CHAT_MODEL=gpt-3.5-turbo

OPENAI_EMBEDDINGS_MODEL=text-embedding-ada-002

5.2.4设置本地LLMEmbedding模型

(1)推荐Ollama OpenAI兼容的服务

#安装ollama并启动程序,可参考https://github.com/ollama/ollama

 

#拉取模型

ollama pull llama3.1:8b

ollama pull nomic-embed-text

(2)Resources页面中的LLMsEmbedding分别设置LLMEmbedding

api_key: ollama

base_url: http://localhost:11434/v1/

model: llama3.1:8b (for llm) | nomic-embed-text (for embedding)

 

 

 

(3)使用本地模型用于RAG

1)将本地LLMEmbedding模型设置为default

 

 

2)File Collection中的Embedding设置为本地模型(例如: ollama

 

 

3)Retrieval Setting页面,选择本地模型作为LLM相关得分模型。如果你的机器无法同时处理大量的LLM并行请求,可以不选中Use LLM relevant scoring

 

 

4)现在就可以上传文件进行文档问答体验了。

 

6.效果体验

眼过千遍,不如手过一遍~

qiang~采用源码安装部署,使用openaiLLM模型gpt-4o-miniEmbedding模型text-embedding-3-small(如何使用免费版本的openai进行api体验,可以私信联系~)。其次,使用MindSearch的论文进行测试验证。

6.1构建文档索引信息

6.1.1上传文档

 

 

6.1.2使用simple推理策略

simple推理策略对应的flowsettings.py中的FullQAPipeline。问题: “what are the components of MindSearch?”,效果如下:

 

 

 

 

6.1.3使用complex推理策略

 

complex推理策略对应的flowsettings.py中的FullDecomposeQAPipeline,即将复杂问题拆分为简单子问题。问题: “Please describe the performance of MindSearch on both open-source and closed-source datasets.?”

 

 

 

6.1.4使用react推理策略

React是一种RAG Agent技术,将用户的问题进行计划设计,并迭代循环执行,满足特定结束调节。React可以结合工具进行调用,如搜索引擎、Wiki百科等。问题:”Tell me somethong about 'University of Science and Technology of China'”

 

 

6.1.5使用ReWoo推理策略

ReWoo也是一种RAG Agent技术,第一阶段制订分步计划,第二阶段解决每个分步,也可以使用工具帮助推理过程,完成所有阶段后,ReWoo将总结答案。问题:”Tell me somethong about 'University of Science and Technology of China' and 'shanghai ai Laboratory '”

 

 

 

6.2构建GraphRAG索引信息

Kotaemon集成了微软此前开源的GraphRAG框架,该框架包含图谱及索引构建、图谱检索等步骤。问题: the authors of this paper

 

 

7.总结

一句话足矣~

本文主要针对开源文档问答系统Kotaemon的介绍,包括主要功能特点,与传统文档RAG的区别,部署教程以及效果体验等。

目前Kotaemon针对中文语言支持不友好,但既然可以通过ollama进行部署LLMEmbedding模型,因此支持中文语言也是相对容易开发集成的。

后续系列会针对该框架中的检索和推理模块做一个详细的源码维度分析,敬请期待~

如果针对部署过程中存在疑问或部署不成功,或者想免费获取使用openai的客官,可私信沟通。

如有问题或者想要合作的客官,可私信沟通。

8.参考

(1) Kotaemon仓库: https://github.com/Cinnamon/kotaemon

 

 

From:https://www.cnblogs.com/mengrennwpu/p/18417896
本文地址: http://www.shuzixingkong.net/article/2092
0评论
提交 加载更多评论
其他文章 WiFi基础(四):WiFi工作原理及WiFi接入过程
liwen01 2024.09.16 前言 802.11 无线 WiFi 网有三类帧:数据帧、管理帧、控制帧。与有线网相比,无线 WiFi 网会复杂很多。大部分应用软件开发对 WiFi 的控制帧和管理帧了解得并不多,因为它们在物理层和数据链路层就已经被处理了,上层应用很少能感知到。 一般是在设备出现
WiFi基础(四):WiFi工作原理及WiFi接入过程 WiFi基础(四):WiFi工作原理及WiFi接入过程 WiFi基础(四):WiFi工作原理及WiFi接入过程
解密Prompt系列38.多Agent路由策略
常见的多智能体框架有协作模式,路由模式,复杂交互模式等等,这一章我们围绕智能体路由,也就是如何选择解决当前任务最合适的智能体展开,介绍基于领域,问题复杂度,和用户偏好进行智能体选择的几种方案
解密Prompt系列38.多Agent路由策略 解密Prompt系列38.多Agent路由策略 解密Prompt系列38.多Agent路由策略
代码整洁之道--读书笔记(12)
代码整洁之道 简介: 本书是编程大师“Bob 大叔”40余年编程生涯的心得体会的总结,讲解要成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更高台阶。 本书适合所有程序员阅读,
代码整洁之道--读书笔记(12) 代码整洁之道--读书笔记(12)
[rCore学习笔记 027]地址空间
写在前面 本随笔是非常菜的菜鸡写的。如有问题请及时提出。 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 引言 兜兜转转又是新的一章的开始,还是首先要看官方手册里的理论介绍和内容. 这里主要还是提纲挈领地摘抄里面
[rCore学习笔记 027]地址空间 [rCore学习笔记 027]地址空间
深入理解JNDI注入—RMI/LDAP攻击
目录前言JNDI 注入简单理解透过Weblogic漏洞深入理解RMI与LDAP的区别JNDI+RMI漏洞代码触发链lookup触发链JNDI+LDAP 前言 本篇文章初衷是在研究log4j2漏洞时候找不到一篇完整且能够真正让我理解漏洞根因的文章,导致我想写一篇通俗易懂能理解到底啥是JNDI注入,怎么
深入理解JNDI注入—RMI/LDAP攻击 深入理解JNDI注入—RMI/LDAP攻击 深入理解JNDI注入—RMI/LDAP攻击
mongodb 中rs.stauts()命令参数解析
转载请注明出处: rs.status()命令用于获取MongoDB副本集的状态信息。它提供了关于副本集中各个节点的详细信息,包括节点的健康状况、角色、选举状态等。 以下是查看一个mongo集群状态返回的参数: rs0:PRIMARY&gt; rs.status() { &quot;set&quot;
这10种分布式ID,太绝了!
前言 分布式ID,在我们日常的开发中,其实使用的挺多的。 有很多业务场景在用,比如: 分布式链路系统的trace_id 单表中的主键 Redis中分布式锁的key 分库分表后表的id 今天跟大家一起聊聊分布式ID的一些常见方案,希望对你会有所帮助。 1 UUID UUID (Universally
这10种分布式ID,太绝了! 这10种分布式ID,太绝了! 这10种分布式ID,太绝了!
揭秘最为知名的黑客工具之一: Netcat!适用安全测试、渗透测试、黑客攻击!
在网络安全领域,黑客工具一直备受关注。它们既可以被用于攻击,也可以用于防御。本文将为大家揭秘一款知名的黑客工具: Netcat。 1、Netcat是什么? Netcat被誉为“网络的瑞士军刀”,简称为 nc,是一个功能丰富的网络工具。最早是一个简单的TCP/IP工具,用于在网络上传输数据。随着时间的