# quipus **Repository Path**: jackyAtUstc/quipus ## Basic Information - **Project Name**: quipus - **Description**: quipus 构建精彩世界 - **Primary Language**: Go - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-04-28 - **Last Updated**: 2025-04-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 奇谱RAG 奇谱,一款简单、易用的Go版本的知识检索生成系统。奇谱的Rag模块的构建算法是参考了LightRag的算法流程的Go版本优化实现,它可以帮助你快速、准确地构建自己的知识库,搭建属于自己的AI智能助手。 ## 🎉 新闻 - 2025-04-14: 奇谱RAG 0.1.0 正式发布! ## 系统特征 - 支持知识库的管理 - 支持知识库的创建、更新、删除和测试, - 支持LightRag的Go版本实现的增强检索服务 - 支持文件(pdf、doc、ppt、txt、html)的上传和解析,支持向量切片、知识图谱、知识总结、知识问答、知识检索、知识生成功能 - 支持文件的增量更新 - 支持大模型供应商管理、模型管理 - 支持ollma、openai、智谱、kimi、百度千帆、腾讯云(openai接口)、阿里云(openai接口) - 支持供应商的添加、修改、删除和测试 - 支持助手的添加、修改、删除和测试 - 支持场景的添加、修改、删除 - 支持基于主题场景的对话: - 支持基于场景的对话的创建、修改、删除和测试 - 支持基于场景的对话的对话记录的查看 - 支持基于场景的对话的对话记录的导出 - 支持主题的知识库的总结的话题的自动导入,更方便用户进行对话 - 支持多租户 - 支持成员的管理 - 支持成员角色的管理 - 支持成员的自注册 - 支持微信用户小程序登录 ## 编译 编译打包容器镜像:在scrip/build目录下执行docker.sh编译并打包容器镜像,镜像中包含了前端和后端 执行front.sh将生成前端代码,并将前端代码拷贝到后端目录下 在用户本地进行开发编译时,可以使用make命令进行编译 ## 部署 在docker/deployment下,修改.env, etc/qp.env 对于milvus和dgraph,在需要知识库功能时,须将其include到docker-compose.yml ``` docker-compose up -d ``` ## 开始 在部署完毕后,打开浏览器,输入http://localhost:7227,即可开始使用奇谱RAG。 ### 1 注册/登录 在登录时,如果系统中不存在用户,则自动进行注册新用户。 登录时,第一个登录系统的用户为系统管理员。 后续注册登录的为租户管理员,通过子账户登录的为租户范围内的用户。不同租户之间的数据是隔离的。租户管理员可以管理子账户 ### 2 设置模型供应商和模型 配置模型 租户管理员可以设置模型供应商和模型,模型供应商包括openai、 ollama、智谱、kimi、百度千帆、腾讯云(openai接口)、阿里云(openai接口)等,模型包括llama、chatglm等。模型供应商和模型可以用于生成知识库中的知识,也可以用于生成知识库中的知识问答。 设置的模型在租户范围内可见。 用户首先创建模型供应商,然后基于模型供应商创建模型。当前的模型支持Chat和embedding,设置参数较为简单,chat模型设置最大的token长度,embeding设置Dim的长度,以便在知识库构建和知识召回时使用。 创建模型供应商时,每个供应商的参数会有所差异,基于当前系统设置好的模板进行选择。系统设置的模型模板的路径在etc/llm-provider目录下。 ### 3 设置知识库 知识库列表 知识库配置 知识库数据 点击侧边栏知识库按钮,可以见租户范围内的知识库列表,知识库创建者可以编辑或修改知识库。 用户设置知识库的基本信息和上传文件。在构建时,需要用户手工点击构建按钮,开始执行构建任务。构建可以全量更新和增量更新。增量更新,适用于用户增量上传文件后进行的构建更新。 用户创建/编辑知识时,可以设置知识的构建类型分为以下三类: - 向量分块:分块无论用户是否选择,都会执行分块。当前分块的默认配置在/etc/rag/rag.yaml中,通过chunk_token进行切分,程序读取的文本达到chunk_token长度的3倍时,开始执行切分:首先计算最前面的chunk_token长度的文本的tokens的度,然后再按句子的进行计算每个句子的token度,并进行累加,若计算的tokens的长度达到了chunk_token时,则将上述的已计算的文本作为一个chunk块。 - 知识图谱:在分块的基础上,将每段文本交由LLM Model进行知识的提取,提取出实体、关系、属性,构建知识图谱。 - 知识总结:在分块的基础上,将每段文本交由LLM Model进行知识的总结,提取出title和summary,构建知识总结。 用户在构建完成后,可以对构建好的知识库进行测试,测试时,用户可以输入测试文本,系统会返回测试结果。 在构建过程,记录每一步的执行记录,以便断点续建。 ### 4 设置助手 助手列表 助手配置 点击侧边栏助手按钮,可以见租户范围内的助手列表,助手创建者可以编辑或修改助手。 在设置助手时,用户可以设置助手的名称、描述、模型、提示词。当前提示词生成比较简单,用户输入关键词,点击生成按钮,系统会将关键词交由LLM Model进行生成,生成后,用户可以编辑提示词。 用户在设置时,可以设置是否同时生成虚拟人,虚拟人在本系统中是一个和用户对等的智能体。虚拟人可以用于场景的对话。 在设置助手时,提供了调测的功能,用于测试prompt和模型是否满足要求。 ### 5 设置虚拟人 用户可以创建或修改自己的虚拟人,虚拟人可以绑定不同的助手,虚拟人可以用于场景的对话。当前虚拟人只支持一个助手。在后续虚拟人可以支持多个助手。根据任务的需要,由多个助手协同完成任务。 ### 6 设置主题 主题列表 话题列表 主题对话 历史对话 主题配置 点击侧边栏主题按钮,可以见租户范围内的主题场景列表,场景创建者可以编辑或修改场景。 创建/修改主题场景:可以设置主题的名称、描述、虚拟人、绑定的知识库。在保存后,会自动将知识库的知识库总结的话题信息同步到主题场景中,后续开放支持编辑话题的能力。 主题对话历史列表:点击对话过的历史,会将该次对话的上下文信息同步到对话框中,用户可以继续对话。 主题对话:用户输入对话内容,系统会根据用户输入的内容,调用虚拟人的助手,将从知识库根据用户设置的交互模式从知识库中进行知识召回,并交由LLM Model进行生成。 因此,创建者之外的租户用户在使用这里的主题场景时,可以知识当前的主题包含的主要内容,问答可以更有针对性。 ### 7 模型修改 1. 导出模型文件 ```bash ollama show --modelfile qwen2 > Modelfile ``` 2. 修改模型文件 ```bash PARAMETER num_ctx 32768 ``` 3. 重新创建模型: ```bash ollama create -f Modelfile qwen2m ``` ## 引用的第三方库资料 如有遗漏,请通过邮件告知 - [LightRAG](https://github.com/HKUDS/LightRAG) 本系统的知识库的核心算法基于LightRag, 在LightRag的基础上进行了修改。在处理流程上的修改点包括:chunk的切分优化逻辑、智识图谱构建过程中的LLM返回的信息的检验、知识图谱的构建过程中的知识合并、知识总结。 - [Memos](https://github.com/usememos/memos) 本系框架参考了Memos的前后端交互框架,复用了后端service部分代码,修复了其中的一些问题,在关系数据的持久化使用了gorm框架,支持了多租户。Memos是一个开源的笔记应用,支持Markdown、图片、文件上传、分享等功能。 - [gomark](https://github.com/usememos/gomark) 使用了gomark的markdown解析器,用于解析markdown文件。 - [mark3labs](https://github.com/mark3labs/mcp-go) 使用了mark3labs的mcp框架。 - [Milvus](https://github.com/milvus-io/milvus) 使用Milvus作为向量数据库,用于存储向量。 - [Dgraph](https://github.com/hypermodeinc/dgraph) 使用Dgraph作为知识图谱数据库,用于存储知识图谱。 - [libreoffice](https://github.com/LibreOffice/core) 使用libreoffice进行文档转换。 ## 沟通 关于奇谱的任何问题,欢迎联系:quipus_issue@foxmail.com