本地知识库软件(ai本地知识库)真没想到
利用AI的力量构建您的个人知识库+自动化工作流程。无需编程,只需拖拽即可创建强大的工作流,自动化所有任务。
最近做了一个无代码AI工作流+知识库的产品vectorvein.com,顺便开源了一个本地的版本https://github.com/AndersonBY/vector-vein,今天给诸位介绍一下为什么做这样一个产品以及它的使用方式。
如果对背景不感兴趣的朋友可以直接拉到后半部分看产品介绍和使用方式
背景介绍大语言模型的发展给各个行业带来了不小的冲击,ChatGPT已经成为人尽皆知的名词了,而基于ChatGPT能力开发的各类通用领域产品、垂直领域产品也层出不穷让人眼花缭乱最开始ChatGPT仅仅以聊天的产品形态就已经吸引了大量的用户,稍微有点开发能力的开发者,如果没有想象力但是有行动力的话就会开发一个套壳ChatGPT聊天产品,于是我们见到了可能是有史以来最多聊天类软件诞生的时期,只不过对面不是真人而是机器人。
接下来稍微有些想象力的开发者会考虑结合一些细分的垂直领域来做产品,比如典型的市场营销文案策划产品描述领域的AI产品再后来不满足于聊天形式的开发者们继续尝试拓展它的能力边界,于是有了AutoGPT和Langchain。
这样的明星项目。他们都是基于当前大语言模型的能力之上构建的新的应用形式,可以满足更具体更不一样的细化的需求。
AutoGPT和Langchain虽然都很强很有潜力,但是说实话如果让一个没写过代码的人去使用,基本不太现实于是大部分时候没有开发能力的用户只能通过一次次聊天来使用AI的能力但是我个人认为,如果要在工作中真正利用大语言模型来进行提效,聊天可能并不是最高效的一种形式。
举个例子,我看到一篇微信文章的标题好像挺有意思,想要听AI总结的音频,同时看看思维导图,然后顺便把这个文章存入我的个人知识库方便后续搜索提问这样一个个人的工作流,里面虽然用到了AI的能力,但是如果单纯用ChatGPT聊天的形式我还需要花费不少时间完成工作流中其它的部分。
这套工作流如果对我来说是经常用到的并且我有编程能力,那么我可以写成一个固定的程序然而这个程序很可能只能满足我的需求而不能满足你的需求,另外总不能遇到一个工作流就写个程序吧?而这样的工作流在每个人的生活和工作中会有很多。
简单对比一下:编程能力要求自定义化程度ChatGPT网页版无低Langchain有高那么有没有介于ChatGPT和Langchain之间的产品?不需要编程但是也有一定的自定义化程度?这个时候很容易就能想到无代码平台。
尽管无代码平台已经不是新鲜的概念,但是在大语言模型的加持之下完全值得重新做一遍这里面非常重要的一个原因就在于大语言模型把流程中大量复杂的逻辑全部搞定了,使得用户只需要设计好需要什么输入和输出以及如何触发工作流,中间的处理部分交给大语言模型就行,不再需要用编程的思维去设计逻辑处理中的各个细节。
这样的无代码平台是真正面向无代码能力用户友好的其实基于Langchain有一个叫langflow的项目,已经比较接近我想要的效果了。
通过节点和连线的方式构建产品原型,非常清晰易懂,美中不足的是依然依赖于聊天的方式进行交互,重心并不在更多的输入和输出和工作流提效上正好前段时间公司有一些业务部门希望用AI来提效,我就从未来的扩展性和产品易用性思考了一下核心的诉求点:。
产品有一定的自定义化能力,可以让不同的业务部门根据自己需求快速设计构建工作流对设计工作流的人无编程能力要求使用工作流的人可以无需感知编辑页面于是就有了向量脉络这个AI工作流无代码平台,只需要通过简单的拖拽就能快速构建工作流,实现各类日常工作流的智能化和自动化。
向量脉络介绍
最开始我先做了一个SaaS的版本vectorvein.com,你可以点击阅读原文查看这周我用类似的前后端结构基于pywebview做了一个开源版,可以在本地使用,直接调用OpenAI的接口 开源的代码已经放在Github上:。
https://github.com/AndersonBY/vector-vein为了方便大家快速开始使用,我准备了一些官方模板方便你直接添加到自己的工作流中。
下面我以一个模板为例来介绍一下向量脉络是如何使用的。
上面是一个可以将任意语言文章总结为中文思维导图的工作流模板,添加到自己的工作流以后是这样的使用界面:
一个工作流代表了一个工作任务流程,包含了输入、输出以及工作流的触发方式(按钮触发、定时自动触发)你可以任意定义输入是什么,输出是什么,以及输入是如何处理并到达输出结果的举几个例子让你理解不同的输入输出如何组成不同的工作流:。
翻译工作流,输入是一个英文的Word文档,输出也是Word文档,你可以设计工作流将输入的中文文档翻译后生成中文文档思维导图工作流,如果将翻译工作流的输出改为思维导图,那么你就可以得到一个读取英文Word文档并总结为中文思维导图的工作流。
网络文章摘要工作流,如果将思维导图工作流的输入改为网络文章的URL,那么你就可以得到一个读取网络文章并总结为中文思维导图的工作流客户差评自动分类工作流,输入是一个包含差评内容的表格,并自定义需要分类的关键词,即可自动将差评分类,输出就是自动生成包含分类结果的Excel表格。
回到任意语言文章总结为中文思维导图的例子,输入是一个网址,工作流触发方式是按钮,点击按钮后工作流运行,输出是一个思维导图。
点击编辑按钮到编辑页面看看:
应该很容易就能看明白,左侧是节点选择区,右边是工作流画布这里一个节点(矩形模块)代表一个子任务,不同的节点互相之间通过连线形成一个完整的工作流任务首先是文本爬虫节点,作用很简单就是将给定网址的正文内容爬取出来,给出标题和正文两个输出端口。
下一个是文本合成节点,以变量+模板的形式合成一段文字,具体有什么变量可以由用户自己设计。模板中的变量在工作流运行的时候会被替换为来源输入的结果。
这样我们将爬虫的标题和正文连到文本合成,就得到一个简单的爬取+合成的子流程了。
下一个节点是OpenAI节点,可以接收Prompt和温度等参数,我们将前面文本合成的结果连接到OpenAI节点的Prompt端口。
把OpenAI的输出连到思维导图节点,再加上一个按钮触发节点,我们就大功告成了。注意按钮触发节点不需要连接到其它节点,它作为特殊节点只要放在画布上就行。
点击保存以后我们就可以正常使用这个文章总结思维导图工作流了。如下图所示在左边输入任意网址然后点击运行即可在右边得到AI总结的思维导图结果。
同样的工作流如果我们稍作修改,还可以输出一段音频总结直接播放。
再看一个更加复杂一点的例子,输入是一张差评内容表格以及分类列表,AI自动分类并给出处理后的表格文件。
这个工作流的设计如下:
你会看到里面包含了一个编程函数节点,对于目前没有的任务节点你可以简单编写一个函数来手动实现输入输出也许你会觉得这个要求就高了,但是我告诉你,其实这个工作流的函数节点里的代码我也是直接让AI自己写的下面是我的Prompt:。
编写一个Python函数,函数名是main(),接收两个参数table1和table2,两个参数都是CSV表格的字符串将两个表格按照“编号”这一列合并为一张表格,返回合并后的CSV表格字符串只需要输出代码,绝对不要写其它非代码内容。
然后就得到我想要的代码了。甚至可以直接在工作流中用这个方式来实现自然语言描述需求然后AI生成函数并运行。
不过为了省钱省时间,一般来说AI写好的函数如果没有问题我会直接保存下来不用每次都从自然语言描述来生成向量脉络另一个重要的功能是私有知识库的结合,也就是Embedding+向量数据库通过私有知识库,我们可以实现更为个性化的功能。
比如上传客服知识库以后可以帮助客服根据聊天记录找到相关知识并且用AI组织新语言生成一个礼貌的客服回复内容
得到的输出结果直接点复制按钮就可以粘贴回复客户了其实叫向量脉络最开始的原因就是我希望能日常在手机上看到的文章能快速存入我自己的向量数据库,还能方便搜索和提问,后来有了工作流的需求就整合在一起了除了开源的本地版本,目前向量脉络的SaaS版本支持在浏览器进行操作,未来会支持在小程序里打开你自己的AI工作流,更加深度整合到移动端的使用流程中,这也是我最开始的初衷。
毕竟目前大部分人还是使用移动端更多一些向量脉络开源版的结构最后简单介绍一下向量脉络的开源版整体结构和设计思考,也方便希望加入开发的朋友快速了解这个项目开源版是基于pywebview进行开发的,虽然是一个本地的PC端软件,但依然是前后端分离的结构。
前端采用Vue3+Vite+Ant Design Vue+Vue Flow不过我对前端技术不那么熟悉,也就去年开始自学的Vue,可能代码质量和风格还有所欠缺,希望有熟悉前端的朋友可以帮忙改进一下前端都放在frontend里,如果需要开发的朋友先安装pnpm然后在frontend里面:
pnpm install后端部分都是Python,api里包含了与前端交互的接口,用户的数据是采用peewee这个ORM来储存在数据库里(本地版使用SQLite),各个模型的定义放在models里面,utilities里面是各类工具型代码,web放的是前端打包后的资源,worker里的tasks放的是各个不同任务节点的具体处理函数。
textCrawler在前端里有一段定义如下,其中task_name就是指定用后端哪个task函数来运行处理templateData: {"description": "description","task_name"
: "web_crawlers.text_crawler","has_inputs": true,"template": {"url": {"required": true,"placeholder":
"","show": true,"multiline": false,"value": "","password": false,"name": "url","display_name": "url",
"type": "str","clear_after_run": true,"list": false,"field_type": "input" },"output_type": {...},
"output_text": {...},"output_title": {...}, } }而在后端的text_crawler函数是类似这样的@taskdeftext_crawler( workflow_data: dict,
node_id: str,): workflow = Workflow(workflow_data) url = workflow.get_node_field_value(node_id,
"url")if url isNoneor url == "":raise Exception("url is empty") ...这个项目中涉及到一点非常简单的图论算法,就是有向无环图的拓扑排序
。由于每个节点代表一个任务,这个任务可能有前后连接的关系,因此需要通过拓扑排序来确定工作流每个函数的运行顺序,确保每个函数运行时它的所有输入值都已经有结果。
非常惭愧的是,虽然以前给学生们教过这个知识点,但我还是偷懒了直接让ChatGPT给我写了这段算法的代码关于向量数据库,我选用的是Qdrant,它支持简单的本地运行和服务端分布式部署,而且使用方便,速度也不错。
后端的开发采用PDM(https://pdm.fming.dev/)管理项目,这是我这一年一直在用的Python包和依赖管理器安装PDM后在backend目录下运行pdm install安装后端所需要的各个Python模块。
然后运行pdm run build-front可以直接构建打包前端资源放到后端的web里日常开发直接运行pdm run dev打包成PC软件只需要运行pdm run build最后是关于向量脉络开源版未来
我希望加入的功能:使用开源的本地版大语言模型如ChatGLM-6B、Vicuna-13B等替代OpenAI的ChatGPT接口加上Huggingface上的各种AI模型,如语音合成、语音识别任务节点加入搜索引擎的接口实现自动化搜索和格式化输出。
加入更多触发的方式如定时触发、钉钉、飞书、企业微信机器人触发等。希望有能力的朋友可以一起开发更多功能出来,也希望更多的朋友可以结合自己的实际情况设计更多有意思的工作流分享给大家。
免责声明:本站所有信息均搜集自互联网,并不代表本站观点,本站不对其真实合法性负责。如有信息侵犯了您的权益,请告知,本站将立刻处理。联系QQ:1640731186