1 项目简介
奇谱系统当前版本以知识库为核心,基于知识库可以快构建自己的问答系统。知识库的Rag模块的构建算法是参考了LightRag的算法流程的Go版本优化实现,它可以帮助你快速、准确地构建自己的知识库,搭建属于自己的AI智能助手。与当前LLM项目以python为主不同,奇谱系统的开发语言使用golang进行开发。
项目位置:quipus: quipus 构建精彩世界
2 主要功能
-
支持知识库的管理
- 支持知识库的创建、更新、删除和测试,
- 支持LightRag的Go版本实现的增强检索服务
- 支持文件(pdf、doc、ppt、txt、html)的上传和解析,支持向量切片、知识图谱、知识总结、知识问答、知识检索、知识生成功能
- 支持文件的增量更新
-
支持模型供应商管理、模型管理
- 支持ollma、openai、智谱、kimi、百度千帆、腾讯云(openai接口)、阿里云(openai接口)
- 支持供应商的添加、修改、删除和测试
-
支持助手的添加、修改、删除和测试
-
支持基于主题场景的对话:
- 支持基于场景的对话的创建、修改、删除和测试
- 支持基于场景的对话的对话记录的查看
- 支持基于场景的对话的对话记录的导出
- 支持主题的知识库的总结的话题的自动导入,更方便用户进行对话
-
支持多租户
- 支持成员的管理
- 支持成员角色的管理
- 支持成员的自注册
- 支持微信用户小程序登录
3 编译及打包
下载代码
git clone https://gitee.com/quipus/quipus.git
编译:
可以通过容器镜像打包,可以修改docker.sh中的镜像版本号:
cd script/build
docker.sh
若是在主机上直接部署可以通过make进行编译
make qpc #编译客户端,可以通过qpc访问命令行make qpd #编译服务端之前,需要先到script/build目录下执行front.sh编译前端代码
4 部署
docker-deployment目录下执行
将docker-compose.yml中的容器镜像改为上述编译打包好的容器镜像
执行docker-compose up -d,默认端口为7227,若需要改端口,则需要修改.env中的端口
5 使用
5.1 注册登录
用户在登录系统时,如果系统中没有用户信息,则自动创建账户信息。
第一个登录本系统的用户为系统管理员用户
其他普通登录的用户为租户管理员,通过子账户登录,则为租户中的子用户。
5.2 模型设置
租户管理员可以设置模型供应商和模型,模型供应商包括openai、 ollama、智谱、kimi、百度千帆、腾讯云(openai接口)、阿里云(openai接口)等,模型包括llama、chatglm等。模型供应商和模型可以用于生成知识库中的知识,也可以用于生成知识库中的知识问答。 设置的模型在租户范围内可见。 用户首先创建模型供应商,然后基于模型供应商创建模型。当前的模型支持Chat和embedding,设置参数较为简单,chat模型设置最大的token长度,embeding设置Dim的长度,以便在知识库构建和知识召回时使用。 创建模型供应商时,每个供应商的参数会有所差异,基于当前系统设置好的模板进行选择。系统设置的模型模板的路径在etc/llm-provider目录下。
5.3 设置助手
点击侧边栏助手按钮,可以见租户范围内的助手列表,助手创建者可以编辑或修改助手。 在设置助手时,用户可以设置助手的名称、描述、模型、提示词。当前提示词生成比较简单,用户输入关键词,点击生成按钮,系统会将关键词交由LLM Model进行生成,生成后,用户可以编辑提示词。 用户在设置时,可以设置是否同时生成虚拟人,虚拟人在本系统中是一个和用户对等的智能体。虚拟人可以用于场景的对话。 在设置助手时,提供了调测的功能,用于测试prompt和模型是否满足要求。
5.4 设置知识库
点击侧边栏知识库按钮,可以见租户范围内的知识库列表,知识库创建者可以编辑或修改知识库。 用户设置知识库的基本信息和上传文件。在构建时,需要用户手工点击构建按钮,开始执行构建任务。构建可以全量更新和增量更新。增量更新,适用于用户增量上传文件后进行的构建更新。 用户创建/编辑知识时,可以设置知识的构建类型分为以下三类:
- 向量分块:分块无论用户是否选择,都会执行分块。当前分块的默认配置在/etc/rag/rag.yaml中,通过chunk_token进行切分,程序读取的文本达到chunk_token长度的3倍时,开始执行切分:首先计算最前面的chunk_token长度的文本的tokens的度,然后再按句子的进行计算每个句子的token度,并进行累加,若计算的tokens的长度达到了chunk_token时,则将上述的已计算的文本作为一个chunk块。
- 知识图谱:在分块的基础上,将每段文本交由LLM Model进行知识的提取,提取出实体、关系、属性,构建知识图谱。
- 知识总结:与标准的LightRag不同,奇谱提供了知识总结。在分块的基础上,将每段文本交由LLM Model进行知识的总结,提取出title和summary,构建知识总结。 用户在构建完成后,可以对构建好的知识库进行测试,测试时,用户可以输入测试文本,系统会返回测试结果。 在构建过程,记录每一步的执行记录,以便断点续建。
5.5 设置虚拟人
用户可以创建或修改自己的虚拟人,虚拟人可以绑定不同的助手,在当前虚拟人可以用于场景的对话。当前虚拟人只支持一个助手。在后续虚拟人可以支持多个助手。根据任务的需要,由多个助手协同完成任务。
5.6 主题场景
点击侧边栏主题按钮,可以见租户范围内的主题场景列表,场景创建者可以编辑或修改场景。
创建/修改主题场景:可以设置主题的名称、描述、虚拟人、绑定的知识库。在保存后,会自动将知识库的知识库总结的话题信息同步到主题场景中。
主题对话历史列表:点击对话过的历史,会将该次对话的上下文信息同步到对话框中,用户可以继续对话。 主题对话:用户输入对话内容,系统会根据用户输入的内容,调用虚拟人的助手,将从知识库根据用户设置的交互模式从知识库中进行知识召回,并交由LLM Model进行生成。 因此,用户在使用这里的主题场景时,可以知识当前的主题包含的主要内容,问答可以更有针对性。
6 总结
从实现方式,与python实现的知识库相比,奇谱本身的程序占用空间并不大。
与LightRag官方库相比,在保留了基本实现过程基础上,在实现过程中每个环节进行了一定的优化。并且增加了知识总结这一步骤。
在主题场景对话中,增加了topic这一信息,避免了用户对知识的不了解,而盲目进行沟通。