手把手教你从零搭建自己的知识库从零开始实现了大模型外接知识库的流程:中文数据集处理词向量模型训练文档向量化向量数

gensim依赖于scipy和numpy,一定要先安装前两者再安装gensim是一个著名的开源Python库,用于从原始的非结构化的文本中,无监督地学习到文本隐层的主题向量表达。Gensim支持包括TF-IDF,LDA和word2vec在内的多种主题模型算法,因此很多算法工程师会将其作为主题建模的首选库。

Word2Vec是一种用于处理自然语言处理的模型,它是在2013年由Google的研究员Mikolov等人首次提出的。Word2Vec通过训练海量的文本数据,能够将每个单词转换为一个具有一定维度的向量。这个向量就可以代表这个单词的语义。因为这个向量是在大量语境中学到的,所以这个向量能很好的表达这个单词的语义。Word2Vec包括Skip-Gram和CBOW两种模型,主要是通过优化模型计算词与词之间的关系,从而获得词的向量表示。Skip-Gram模型是通过一个词预测其上下文。举个例子,给定词汇"苹果",Skip-Gram模型的目标是生成它的上下文"吃了一个大"和"感觉真满足"。CBOW模型是给定一个词的上下文词汇,预测这个词。比如,给定上下文"吃了一个大"和"感觉真满足",CBOW模型会预测中间的词汇,也就是"苹果"。这两种模型都是通过学习词汇与其上下文之间的关系,获得词的向量表示。这两个向量的距离可以用来衡量两个词语义上的相似度,距离越近意味着两个词语义上越相似。

按照具体数据集的规范解压提取出数据

OpenChineseConvert(OpenCC)是一个开源的中文简繁转换项目,致力于制作高质量的基于统计语料的简繁转换词库。还提供函数库(libopencc)、命令行简繁转换工具、人工校对工具、词典生成程序、在线转换服务及图形用户界面。

pip3installopencc-python-reimplemented对于数据集我们需要依此进行四个操作:

我们下载的是.zip文件,先原地解压THUCNews.zip

对于数据集我们需要依此进行四个操作:

需要把所有数据集合并为一个数据集,作为最终训练模型用的数据集

数据集并不大,m2pro性能也很能打了,直接在本地硬造就行。训练10轮,m2pro32g大约一个半小时可以完成

model=Word2Vec(sentences,vector_size=300,window=5,epochs=10,compute_loss=True,callbacks=[epoch_logger])模型使用词向量生成print(model.vector_size)print(model.total_train_time)print(model.wv.most_similar('猫'))print(model.wv.most_similar('吉林大学'))结果:

3004965.289603250014[('狗',0.7110657691955566),('猫咪',0.671169638633728),('小猫',0.6650978326797485),('兔子',0.6501124501228333),('小狗',0.6325607895851135),('小猫咪',0.6306896805763245),('犬',0.6204975843429565),('宠物猫',0.6035280227661133),('吉娃娃',0.5858094096183777),('宠物狗',0.5799086093902588)][('东北师范大学',0.7164520621299744),('大连理工大学',0.6689789295196533),('哈尔滨工程大学',0.6448072791099548),('哈尔滨工业大学',0.6404638886451721),('西北农林科技大学',0.637593150138855),('东北财经大学',0.6347334384918213),('中国医科大学',0.630100429058075),('杭州大学',0.6278619766235352),('华东政法学院',0.6263515949249268),('白求恩医科大学',0.6260219216346741)]句向量生成word2vec模型本身只能对词语进行embedding操作,如果想对句子进行embedding,有以下几种方法:

我们采用最简单的第一种方法

defencode(self,sentences:List[str],show_progress_bar:bool=False)->ndarray:all_embeddings=[]forsentenceintqdm(sentences,desc='Word2VecEmbeddings',disable=notshow_progress_bar):emb=[]count=0forwordinsentence:#过滤停用词ifwordinself.stopwords:continue#调用词向量ifwordinself.w2v.key_to_index:emb.append(self.w2v.get_vector(word,norm=True))count+=1else:iflen(word)==1:continue#再切分ws=self.jieba.lcut(word,cut_all=True,HMM=True)forwinws:ifwinself.w2v.key_to_index:emb.append(self.w2v.get_vector(w,norm=True))count+=1tensor_x=np.array(emb).sum(axis=0)#纵轴相加ifcount>0:avg_tensor_x=np.divide(tensor_x,count)else:avg_tensor_x=np.zeros(self.w2v.vector_size,dtype=float)all_embeddings.append(avg_tensor_x)all_embeddings=np.array(all_embeddings,dtype=float)ifinput_is_string:all_embeddings=all_embeddings[0]returnall_embeddings文档分块固定大小分块按内容划分我们使用最简单的算法来对文档进行分句

defsplit_sentences(text):sent_delimiters=['。','?','!','','!','.']fordelimiterinsent_delimiters:text=text.replace(delimiter,'\n')sentences=text.split('\n')sentences=[sentforsentinsentencesifsent.strip()]returnsentences除此之外,还可以考虑使用以下库:pyltp(语言技术平台):pyltp是哈工大社会计算与信息检索研究中心研发的一款中文自然语言处理工具包,可以很好地处理中文文本。pkuseg:pkuseg是北京大学的一个分词工具,也有一定的分句能力。spaCy:spaCy是另一个用于NLP任务的强大Python库NLTK:自然语言工具包(NLTK)是一个流行的Python库,用于处理自然语言数据。

向量相似度的计算通常基于一种叫做余弦相似度(CosineSimilarity)的度量方法。余弦相似度直观地表示了两个向量间的夹角,其值越接近于1,表示两个向量越相似。

defcosine_similarity(vec1,vec2):norm_vec1=numpy.linalg.norm(vec1)norm_vec2=numpy.linalg.norm(vec2)ifnorm_vec1==0ornorm_vec2==0:return0else:dot_product=numpy.dot(vec1,vec2)returndot_product/(norm_vec1*norm_vec2)知识库检索现在万事俱备,让我们来简单跑通一下这个流程

将知识加入大模型上下文常用prompt模板:

Pinecone是一个专门为工程师与开发者设计的向量数据库。作为一个全托管的服务,它减轻了工程师以及运维人员的负担,使得客户可以聚焦于数据内在价值的抽取。

Weaviate是一个开源的向量数据库,可以存储对象、向量,支持将矢量搜索与结构化过滤与云原生数据库容错和可拓展性等能力相结合。支持GraphQL、REST和各种语言的客户端访问

面向下一代的生成式AI向量数据库,同时也具备云原生的特性。

一个开源的向量数据库。可以快速基于Python和JavaScript构建内存级LLM应用

构建在Milvus之上的数据基础设施。

如果我们想把知识库作为大模型的外接知识库,就需要借助向量数据库来存储之前被向量化的文档。我们选用Qdrant来部署(为了Rust!)

对于mac,需要使用mps后端。同时需要修改模型的路径,修改为

THE END
1.网上宠物店综合系统开发开题报告+文献综述+毕业设计.Doc文档...网上宠物店综合系统开发【开题报告+文献综述+毕业设计】.Doc,毕业设计开题报告 计算机科学与技术 网上宠物店综合系统开发 一、选题的背景与意义 随着时代的飞速发展,计算机逐渐走进人们的生活,使网络成为了继报纸、广播、电视之后的第四大媒体,并正以其便捷的信息传输形https://max.book118.com/html/2019/0328/8116054111002014.shtm
2.战网探索?《魔兽?世界》?的?特别?优惠,?包含?游?戏?时间、?坐骑、?宠物?和?服务,?还?有?更?多?精彩! https://shop.battlenet.com.cn/
3.用python写的“小蜜蜂”游戏玩游戏时要经常玩的游戏。 网站: * **Demonstraode Uso Metodo Get 实例: 宠物小精灵/ 1 上传者:weixin_42139252时间:2021-02-15 基于Python实现庆祝儿童节系统 # Happy-ChildrenDay-2020 ### 2024年儿童节快乐,不忘初心,方得始终 ### 六一至,自己减减压,心灵放放假,身体充充电,快乐多多加,烦恼...https://www.iteye.com/resource/weixin_43374296-10710288
4.Serverless架构思想总结UI驱动应用:让我们看看带有服务器端逻辑的传统三层面向客户端系统,比如电子商务应用,传统的架构是看上去像下面: 客户端(浏览器) ---> 宠物店服务器 --->数据库 这种架构的客户端相对不会太智能,系统中有太多逻辑:授权,分页,搜索和事务等都是由服务器应用实现。 而...https://www.jianshu.com/p/ebec593ef9da
5.TG托管网TG托管网信息发布平台免费信息发布_免费发布招聘信息_免费发帖_免费商铺推广,分类信息网站,免费发布招聘信息,免费发帖,免费商铺,网站托管,分类信息网站大全,B2B网址导航,抖音图文推广,baidu竞价包年。http://www.tuoguan1.com/
6.淘宝网淘宝网 - 亚洲较大的网上交易平台,提供各类服饰、美容、家居、数码、话费/点卡充值… 数亿优质商品,同时提供担保交易(先收货后付款)等安全交易保障服务,并由商家提供退货承诺、破损补寄等消费者保障服务,让你安心享受网上购物乐趣!...https://www.taobao.com/
1.メモリ管理—Python3.13.0ドキュメント概要: Python におけるメモリ管理には、全ての Python オブジェクトとデータ構造が入ったプライベートヒープ (private heap) が必須です。プライベートヒープの管理は、内部的には Python メモリマネージャ (Python memory manager) が確実に行います。Python メモリマネーhttps://docs.python.org/ja/3.13/c-api/memory.html
2.课程设计/毕业设计python宠物领养管理系统源码和开发文档https://github.com/geeeeeeeek/python_adopt 功能介绍 系统分为后台和前台两部分。 后台的主要功能: 宠物管理:管理系统可以录入、修改和查询宠物的基本信息,如宠物名称、型号、价格、备注等。 类型管理:系统可以管理宠物的类型信息,包括类型的名称等。 标签管理:管理标签录入、修改和查询标签的信息。 评论管理:管理和...https://blog.csdn.net/net19880504/article/details/137076397
3.社区宠物管理系统Pythonmob64ca13f9a97c的技术博客轮播图、公告栏、管理员、宠物资讯、资讯分类、普通用户、宠物类别、宠物信息,采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取MySQL作为后台数据的主要存储单元,采用JavaEE框架、Java技术、Ajax技术进行业务系统的编码及其开发,实现了本系统的...https://blog.51cto.com/u_16213589/11378659
4.[GitHub]GitHub上托管的的视频游戏附加组件地图等列表...[GitHub] GitHub 上托管的的视频游戏、附加组件、地图等列表。 GitHub 上的游戏 以下是可在 GitHub 上找到的开源游戏和游戏相关项目的列表 - 老式文字冒险、教育游戏、8 位平台游戏、基于浏览器的游戏、独立游戏、GameJam 项目、附加组件/地图/hacks/plugins 用于商业游戏https://www.aiwanba.net/post/9381.html
5.对于国内产品中宠物托运险说法正确的是()。A. 宠物托运意外死亡险基础版最高保障金额为5000元 B. 宠物三者责任意外伤害身故和伤残险高阶版保障...一家初创公司正在亚马逊EC2实例上为其客户托管网站.该网站由一个无状态Python应用程序 和一个MySQL数据...API的遗留应用程序上运行其系统供应商希望继续使用基于SFTP的应用程 序来上传数据.该公司希望使用托管...https://www.shuashuati.com/ti/c5d4f7fdd9924ae8a1667715586a440a.html
6.有没有办法在S3上托管内容的index.html功能?在腾讯云S3中,可以通过设置静态网站托管功能来实现index.html的托管。具体操作步骤如下: 登录腾讯云S3控制台,选择需要设置静态网站托管的存储桶。 在存储桶概览页面,点击“静态网站托管”按钮。 在弹出的设置静态网站托管的窗口中,填写index文档的对象键,例如“index.html”。 选择存储桶中的文件夹作为网站的根...https://cloud.tencent.com/developer/information/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E5%9C%A8S3%E4%B8%8A%E6%89%98%E7%AE%A1%E5%86%85%E5%AE%B9%E7%9A%84index.html%E5%8A%9F%E8%83%BD%EF%BC%9F
7.在PowerBIDesktop中使用Python创建PowerBI视觉对象...基于这些选择,Python 脚本编辑器将生成以下绑定代码。 编辑器创建了一个包含添加字段的“数据集”数据帧...从“值”部分选择或删除字段时,系统会自动生成或删除 Python 脚本编辑器中的支持代码。 在某些情况下...为每个用户创建一个显示其子女数和宠物数的条形图。 在“在此处粘贴或键入脚本代码”下,删除或注释掉...https://docs.microsoft.com/zh-cn/power-bi/desktop-python-visuals
8.APIGateway–亚马逊AWS官方博客总结 通过使用Cognito + IAM Role与 AWS API Gateway 的集成我们可以轻松实现对系统用户API级的权限管理,这可以大大降低基于微服务架构的现代化应用在权限管理...这里我们使用了 AWS 托管的 ElasticSearch 服务。在Lambda中我们直接使用 Elasticsearch 的 Python SDK 提供的API 将数据的相关标签写入索引中。 Uploader 云端...http://aws.amazon.com/cn/blogs/china/tag/api-gateway/feed/
9.pics?码农集市专业分享IT编程学习资源pics? Yu**un上传175KB文件格式zip 图片? (是的,问号是名称的一部分)是一个基于 PHP 的应用程序,主要用于托管 Internet 消息论坛的图像。 图片? 源于 Anantech 论坛,并在 pics.bbzzdd.com 上运行了一个参考版本。 (0)踩踩(0) 所需:1积分https://www.coder100.com/index/index/content/id/1275246
10.宠物智能饮水器物联网招标·按项目付费¥100 小程序开发OA数据库后台分销管理人工智能维护托管 4.4 销量4 好评3 咨询TA 微信咨询 动视湾流官方旗舰店 ¥100 R语言python数据分析代做stata服务...咨询TA 微信咨询 豌豆云-企业级技术服务商 ¥105 物联网平台开发设备管理*平台软件系统 达完源价 4.5好 销量3 好评3 咨询TA 微信咨询品牌...https://www.zbj.com/xq/6bCsGs8ZMWq1VTi8.html