随着大模型的应用落地越来越广泛,好像不整个大模型应用都不好意思说自己是搞it的,刚好最近单位想做个内部知识系统,对沉淀的工具使用手册和问题答疑手册进一步跟新,利用RAG技术提升线上服务的交互对答体验,开放给用户减轻客服同事的日常工作量。说干就干,为了更快更好的起步首先想到利用开源成熟的产品进行搭建和推广,也就是花小钱办大事的思想。
说真的,这方面的知识网上挺多,国内的国外的应有尽有挑花眼,最终落到MaxKB这款产品,网上评价也很高,使用成本也不高开箱即用,很符合我的一贯作风,省钱省事第一效果兼顾。而且MaxKB半开源的状态很适合做一些微调整,更加符合定制化的诉求,比如替换不同图标、主题颜色以及屏蔽某个不必要的功能等。说实话这款产品做的挺好,基本能达到部署即上线的程度,且对结构化数据,如文本问答支持的很好,在默认分词规则之上通过设置分词规则能都达到很好的问答效果,准确率在97%左右。唯一不太理想的是目前的版本对docx文档中图像数据解析的不太好,无法有效的支持文本和图像数据的多模态格式融合,面对图片、视频等非结构化数据,好像采取不处理的方式忽略,不能够识别和加工。无法将这两类数据融合到问答效果中去,实属一大遗憾,也希望MaxKB团队能尽早推出支持多模态的版本,以适应日益增长的数据属性和实际需求。
继续研究网络上对多模态的支持情况,也有不少产品对这些诉求做了定制化的支持,不少产品出自大厂之手,成熟度很高值得去深入研究,说不定也可以给MaxKB做些贡献,本着这个朴素的想法,迈开脚步进入多模态开源系统融合的探索和尝试,发现很多磕绊的坑等着你进入~
开源软件的每个产品都是一块砖瓦,基本都是单独的功能实体,而往往使用者需要的是一间房,哪怕是一间茅草房也是样样具备,因此使用者最大的成本就是集成每块砖瓦的投入,最终形成一间成品房屋的过程。看似简单的组装过程,实际上每一步走下来都不通畅,总会出现各式各样的问题,甚至出现过不想继续折腾耗费时间和精力,好在最终磕磕绊绊的完成组装任务,对多模态的场景落地加深理解。如果再需要和现有系统进行结合,那集成的难度又上一层楼~~。总之一句话:开源软件节约的不是省下来的,是煎熬下来的,有没有成就感不好说,酸爽的感觉那一定是有的。
开源第一坑:依赖关系。
建筑一间房的第一步,选择符合需求的砖和瓦。往往这些砖或瓦都有各自的版本,由不同的人或组织负责维护且独立发展。每块砖瓦有各自的实现方式和依赖关系,这些依赖关系会依赖于某些底层组件,而每个底层组件又存在不同的版本,这些依赖关系和版本信息像不像俄罗斯套娃,一层一层存在关联且规则固定,一旦打乱顺序就无法正常加载和运行。因此在组装的第一步就必须优先确定不同软件的匹配版本,听起来简单实则很难,因为没人知道具体的需求会选择那些开源软件来搭建服务,没人有义务来归纳总结这些软件间的匹配关系,组合情况太多太多~,有人总结那就是幸运,更多的情况是自己试,使用成本直线上升。
建筑一间房的第二步,空气墙的阻碍,好在国内都有镜像服务,找到好一点的服务商,基本能尽快解决这个问题。在这里推荐清华和阿里的镜像服务,镜像的软件都很全面,几乎没有遗漏下载速率很高且稳定。
建筑一间房的第三步,确认所需知识范围。因为所接触的基本都是新领域新知识,未知的方向自然是摸黑前行,那么收集信息的能力就是考核个人能力的时刻。网上能找到的信息,很多都是以点带面不成系统,很少能从头到尾解决遇到的所有问题,汇总问题的能力也是必须的。这次尝试通过使用deepseek、kimi、grok三个通用大模型来辅助进行系统选择和搭建,顺道体验一下ai编程的效率和能力,也算是额外的收获。
第三步中遇到很多问题,有大有小最终都有惊无险的解决了,后面也会将实验的代码全部贴出,力求即拿即用直接得出和我一样或类似的结果,而不需要出现问题再继续查找解决之道,供大家参考。
简述一下工具链的选择和编码过程,让大家对ai下协作解决实际问题有个全面的了解,通过这个过程借鉴到后续的学习工作中,起到抛砖引玉的作用效果。
- 大模型确定方案

利用deepseek模型,筛选出多模态识别文本、图片的基本方案,经过给出建议并通过资料查看,最终选定技术栈为openai的CLIP多模态模型承接文本+图片的识别工具。

在CLIP的基础上,选用开源LLaVA模型,结合LLM综合视觉文本的特征合并,更好的对外提供图像和文本的融合服务。

重点:确认好模型后,开始选定依赖关系的基础版本,因为此次部署的核心要素是实现文本+图像的融合服务,那么需要选定多模态支持效果更优的LLaVA源码版本LLaVA1.6,这也就关联到模型和数据的版本,由指定源码驱动模型数据,实现良好的识别、映射、生成等服务。llava-module模型数据是llava-336px-pretrain-llama-2-7b-chat,CLIP模型数据是clip-vit-large-patch14-336,至此准备工作基本完成。
再补充一下,因为是小数据量的验证和实验,对硬件环境不会太过于苛刻,两块4090卡做实验。虚拟环境是必须要部署的,使用conda 也很好创建单独的测试环境,谁也不想因为环境被感染无法推进的苦涩情景,因为LLaVA1.6给出的建议是匹配python3.11以上的版本,因此虚拟环境的创建以python3.11版本为基准。
附上虚拟环境创建语句: conda create --name rag-mutl python=3.11 。
- 大模型编写基础代码

这段像模像样的架构设计流程,也是由deepseek生成,给出一种很专业的感觉,也埋下一点苦涩的记忆(看似很专业后续接连修改,依赖关系以及版本是修改的重点)。经过无休止的多伦折腾之后,有些问题单靠一个deepseek无法有效结果,进而引入kimi、grok两套模型,最终得到一个能跑通的实现代码,也算是对三家厂商的ai编程能力变相进行一次检验和排查,对中外产品稍有一些心得和体会,后续再慢慢说来。
- 大模型调试
仅通过本次使用python语言,实现多模态文本+图像识别系统的开发和定位排错的整个过程,对ai编程的方法、定位方式、排错效果进行一点心得总结,仅是个人小结不是盖棺定论的下结论,无法涵盖博大精深的研发流程和语言等方方面面。
平心而论,ai编程的进化程度超出我的想象,在pyhton的开发能力上我感觉至少能达到一名中级程序员的水品,编程规范性、基本语法的简练程度、异常分值的信息记录等,都做的很好。如果再考虑到代码生成效率,那能力水平简直可以再往上高拔一点。
大模型编程改错的方法也比较简单,借助于模型上下文环境的关联性,基本都是在上一次或原有代码的基础上做错误分析、原因查询和再次生成改进代码,这三家模型用起来体验感都非常好,基本可以做到拷贝、黏贴来完成指定的代码编写。综合整套代码下来,ai编程对提示词要求并不算高,简单说明清楚功能点就行,可以从侧面反映出在ai编程调优方面,大模型还是具备量大出奇迹的效果。
- 大模型使用体验对比
本次所有代码在不同大模型下的完成比例:
|
模型 |
比例 |
备注 |
|
deepseek |
60% |
架构方案、初始版本、改错主力 问题解析、分析比较到位,回答信息格式规则布局等也看着比较舒服 每天都会出现服务器繁忙,无法使用的情形 |
|
kimi |
30% |
deepseek无法使用时使用 回答信息格式稍差,问题回复准确度感觉不如deepseek(由deepseek转来,可能缺少有效上下文) 服务器稳定,没有出现无法使用的情形,作为补充很胜任 |
|
grok |
10% |
解决一个其他两个模型未解决的问题 响应很快,几乎都是秒回 服务器能力、算法解析能力比较强 个人感觉解析分析问题针对性最强 全程中文问答,对中文支持理解能力很好 |
各模型没有明显的优劣之分,主要看个人使用习惯和使用诉求,能解决实际问题就是好工具。
完整代码参考如下:
链接: https://pan.baidu.com/s/11KSptfEqzAny8e6dibzUDA?pwd=d7j6 提取码: d7j6

653

被折叠的 条评论
为什么被折叠?



