ChatGLM:向量化构建本地知识库原理

news2024/10/6 5:55:31

一、概念

1.向量:是有大小和方向的量,可以使用带箭头的线段表示,箭头指向即为向量的方向,线段的长度表示向量的大小。

2.向量化:将语言模型的数据转化为向量。这通常通过嵌入模型(embedding models)完成,比如word2vec,GloVe,或者BERT等,这些模型可以将文本数据转化为向量形式。

3.向量数据库(Vector Database):也叫矢量数据库,主要用来存储和处理向量数据。

4.与sql查询的区别:使用向量数据库根据语义或上下文含义查找最相似或相关的数据,而不是使用基于精确匹配或预定义标准查询数据库的传统方法。

5.向量数据库的主要特点:高效存储与检索。

二、文本向量储存

主流的文本向量储存技术有

1.词袋模型(Bag-of-Words):词袋模型将文本表示为一个向量,其中向量的每个维度表示一个单词,而向量的值表示该单词在文本中的出现频率或权重。可以使用词频(Term Frequency)或词频-逆文档频率(TF-IDF)等方法来计算向量的值。

2.Word2Vec:Word2Vec 是一种基于神经网络的词嵌入模型,Word2vec主要是基于两个核心思想:连续词袋模型和skip-gram模型。

它将单词映射为连续向量空间中的向量。通过训练神经网络,Word2Vec 可以学习到单词之间的语义和语法关系,从而产生具有语义相关性的向量表示。

3.GloVe:GloVe(Global Vectors for Word Representation)也是一种词嵌入模型,它通过统计单词在上下文中的共现关系来生成向量表示。GloVe 模型将全局的词语共现统计信息与局部的上下文窗口统计信息相结合,产生更加全面和准确的向量表示。

4.BERT:BERT(Bidirectional Encoder Representations from Transformers)是一种基于 Transformer 模型的预训练语言模型。通过训练大规模的语料库,BERT 能够生成上下文敏感的单词嵌入向量,捕捉到单词的语义和句子之间的关系。

5.Doc2Vec:Doc2Vec 是一种将整个文档(而不仅仅是单词)嵌入为向量的技术。它类似于 Word2Vec,但将文档作为一个整体进行嵌入,从而生成文档级别的向量表示。

而今天我要介绍的的项目使用的是以word2vec为基础生成的embedding模型,适合于通过较少的资源生成精度较高的问答结果。

三、word2vec模型

Text2vec模型使用词嵌入(Word Embedding)技术来实现文本向量化。词嵌入是一种将单词映射到连续向量空间的技术,能够捕捉到单词之间的语义和语法关系。通过将文本中的每个单词映射为词嵌入向量,text2vec模型可以将整个文本表示为一个向量序列,从而保留了文本的语义信息。

在文本向量化过程中,text2vec模型可以使用不同的词嵌入算法,如Word2Vec、GloVe、BERT等。这些算法基于不同的原理和训练方法,但都旨在将单词表示为具有语义相关性的向量。目前使用广泛的还是word2vec.

通过使用word2vec模型,我们可以将文本数据转换为数值向量,以便应用于各种机器学习和自然语言处理任务,例如文本分类、情感分析、机器翻译等。文本向量化的过程使得计算机能够更好地理解和处理文本数据,从而提高了文本相关任务的性能和效果。但是word2vec也有他自身的局限性,比如比较适合处理短文本,面对长文本容易出现问题数量判断错误,问题的题干理解不清晰等问题。

word2vec模型的优缺点:

1.优点:会考虑上下文,速度快,通用性强。

2.缺点:由于词和向量是一对一的关系,所以无法理解多义词。

(1)概念

Word2Vec是用来生成词向量的工具,而词向量与语言模型有着密切的关系。Word2Vec旨在从巨大的词汇量中高效学习词向量,并预测与输入词汇关联度大的其他词汇。

Word2Vec是轻量级的神经网络,其模型仅仅包括输入层、隐藏层和输出层。word2vec为什么不用现成的DNN模型,要继续优化出新方法呢?最主要的问题:DNN模型的这个处理过程非常耗时。word2vec也使用了CBOW与Skip-Gram来训练模型与得到词向量,但是并没有使用传统的DNN模型,而是对其进行了改进。最先优化使用的数据结构是用霍夫曼树来代替隐藏层和输出层的神经元。

word2vec工具主要包含两个模型:跳字模型(skip-gram)和连续词袋模型(continuous bag of words,简称CBOW)

(2)CBOW模型

连续词袋模型(Continuous Bag-of-Word Model, CBOW)是一个三层神经网络,输入已知上下文,输出对下个单词的预测。CBOW模型的第一层是输入层, 输入已知上下文的词向量;中间一层称为线性隐含层, 它将所有输入的词向量累加; 第三层是一棵哈夫曼树, 树的的叶节点与语料库中的单词一一对应, 而树的每个非叶节点是一个二分类器(一般是softmax感知机等), 树的每个非叶节点都直接与隐含层相连。将上下文的词向量输入CBOW模型, 由隐含层累加得到中间向量,将中间向量输入哈夫曼树的根节点, 根节点会将其分到左子树或右子树。每个非叶节点都会对中间向量进行分类, 直到达到某个叶节点,该叶节点对应的单词就是对下个单词的预测。

训练过程:

首先根据预料库建立词汇表, 词汇表中所有单词拥有一个随机的词向量。我们从语料库选择一段文本进行训练;

将单词W的上下文的词向量输入CBOW, 由隐含层累加, 在第三层的哈夫曼树中沿着某个特定的路径到达某个叶节点, 从给出对单词W的预测。

训练过程中我们已经知道了单词W, 根据W的哈夫曼编码我们可以确定从根节点到叶节点的正确路径, 也确定了路径上所有分类器应该作出的预测.

我们采用梯度下降法调整输入的词向量, 使得实际路径向正确路径靠拢。在训练结束后我们可以从词汇表中得到每个单词对应的词向量

(3) Skip-gram

Skip-gram模型同样是一个三层神经网络,skip-gram模型的结构与CBOW模型正好相反,skip-gram模型输入某个单词,输出对它上下文词向量的预测。

Skip-gram的核心同样是一个哈夫曼树, 每一个单词从树根开始到达叶节点,可以预测出它上下文中的一个单词。对每个单词进行N-1次迭代,得到对它上下文中所有单词的预测, 根据训练数据调整词向量得到足够精确的结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1085418.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法-动态规划】0-1 背包问题

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

解锁 OpenAI 密钥的新利器:OpenAI Key 有效性查询工具,支持GPT4

在寻找新的创意或解决问题时,OpenAI 的 GPT 模型是一个强大的工具。但是,一旦您拥有了自己的 OpenAI 密钥,您可能会遇到一个常见的问题 - 如何验证您的密钥是否有效?这个问题可能令人困扰,但不必再担心了。现在&#x…

多功能按键中断

key1 开关实现led1亮灭,key2开关实现蜂鸣器开关,key3开关实现风扇开关 main.c #include "uart.h" #include "key_it.h" #include "led.h" int main() {char c;char *s;uart4_init();//串口初始化all_led_init();key_it_config();fengshan_init…

Day 05 python学习笔记

循环 应用:循环轮播图 最基础、最核心 循环:周而复始,谓之循环 (为了代码尽量不要重复) while循环 while的格式 索引定义 while 表达式(只要结果为布尔值即可): 循环体 通过条件的不断变化,从…

1315. 网格 - 卡特兰数

1315. 网格 - AcWing题库 只要是触及上面这条红线的,就以第一次触及的点为起点沿红线反转,终点的位置与红线对称的位置可以看作触及红线的路线的终点。 yx1 横坐标容易得出时m - 1,(m n) - (m - 1)得出纵坐标n 1 …

JVM面试题:(四)四种引用方式强弱软虚

四种引用方式: 强引用 强引用是平常中使用最多的引用,强引用在程序内存不足(OOM)的时候也不会被回收,使用 方式: String str new String(“str”); System.out.println(str); 软引用 软引用在程序内存不…

07-网络篇-抓包分析TCP

为了抓包方便一些&#xff0c;我在ubuntu虚拟机运行服务端程序&#xff0c;而在windows运行客户端程序&#xff0c;关于客户端与服务端程序如下。 ##1.程序 客户端&#xff1a; vs_client.cpp #include "stdafx.h" #include <iostream> #include <winsock2…

MapStruct_概念、如何使用、子集和映射、合并、Spring方式、表达式、自定义切面处理

文章目录 ①. 什么是MapStruct&#xff1f;②. 如何使用MapStruct?③. 子集和映射④. 合并映射⑤. Spring依赖注入⑥. 常量、默认值和表达式⑦. 自定义切面处理 ①. 什么是MapStruct&#xff1f; ①. MapStruct是一款基于Java注解的对象属性映射工具,使用的时候我们只要在接口…

SQL 教程||SQL 简介

SQL 简介&#xff08;开个新坑&#xff09; SQL&#xff08;结构化查询语言&#xff09;是用于访问和操作数据库中的数据的标准数据库编程语言。 SQL是关系数据库系统的标准语言。所有关系数据库管理系统(RDMS)&#xff0c;如MySQL、MS Access、Oracle、Sybase、Informix、Po…

第四章——密码学的数学引论

一.数论 1.素数 200以内的素数&#xff1a; 2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 算术基本定理&#xff1a; 任何一个不等于0的正整数a都可以写…

接上面 通过索引index 和类型Java.lang.string.来注入

index 属性表示构造函数参数的索引&#xff0c;value 属性表示构造函数参数的值。

【web实现右侧弹窗】JS+CSS如何实现右侧缓慢弹窗动态效果『附完整源码下载』

文章目录 写在前面涉及知识点页面效果1、页面DOM创建1.1创建底层操作dom节点1.2 创建存放弹窗dom节点 2、页面联动功能实现&#xff08;关闭与弹出&#xff09;2.1 点击非右侧区域实现关闭2.2 点击叉叉及关闭按钮实现关闭功能 3、完整源码包下载3.1百度网盘3.2 123云盘3.3邮箱留…

没用的知识增加了,尝试用文心实现褒义词贬义词快速分类

尝试用文心实现褒义词贬义词快速分类 一、我的需求二、项目环境搭建千帆SDK安装及使用流程 三、项目实现过程创建应用获取签名调用接口计算向量积总结 百度世界大会将于10月17日在北京首钢园举办&#xff0c;今天进入倒计时五天了。通过官方渠道的信息了解到&#xff0c;这次是…

【APUE】文件系统 — 进程环境

目录 一、再提 main 函数 二、进程的终止 2.1 正常终止 2.1.1 从 main 函数用 return 返回 2.1.2 主动调用 exit 函数 2.1.3 钩子函数 2.1.4 调用 _exit 或 _Exit 2.2 异常终止 三、命令行参数的分析 3.1 getopt 3.2 示例 四、环境变量 4.1 简介 4.2 查看环境…

内网收集哈希传递

1.内网收集的前提 获得一个主机权限 补丁提权 可以使用 systeminfo 然后使用python脚本找到缺少的补丁 下载下来 让后使用exp提权 收集信息 路由信息 补丁接口 dns域看一看是不是域控 扫描别的端口 看看有没有内在的web网站 哈希传递 哈希是啥 哈希…

墨者学院 WordPress 远程命令执行漏洞(CVE-2018-15877)

1. 背景介绍 近日&#xff0c;WordPress 插件Plainview Activity Monitor被曝出存在一个远程命令执行漏洞。Plainview Activity Monitor 是一款网站用户活动监控插件。 远程攻击者可以通过构造的url来诱导wordpress管理员来点击恶意链接最终导致远程命令执行 2.影响范围 Pla…

ajax同步与异步,json-serve的安装与使用,node.js的下载

20.ajax json 轻量级的数据格式做配置文件网络传输 xml 重量级的数据格式 可扩展标记语言做配置文件网络传输 现在目前主流就是大量采用json做网络传输数据格式 1.ajax的概念: 与服务器进行’通信’的一种技术,能够实现异步的刷新页面 **同步:**按照顺序一步步的执行,容易造…

Python应用-矩阵乘法-特征提取

目录 常规运算应用场景&#xff1a;特征提取特征矩阵权重矩阵举例说明代码展示 常规运算 import numpy as npmatrix1 np.array([[1, 2], [3, 4]]) matrix2 np.array([[5, 6], [7, 8]]) result np.dot(matrix1, matrix2) print(result) 输出结果&#xff1a; [[19 22][43 …

是谁还没听过杨氏矩阵~原理和实现代码都已经准备好了

有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从上到下是递增的&#xff0c;请编写程序在这样的矩阵中查找某个数字是否存在。 要求&#xff1a;时间复杂度小于O(N); 看到这个题目时&#xff0c;我们会马上想到暴力求解&#xff0c;即遍历这个矩阵的每…

Excel往Word复制表格时删除空格

1.背景 在编写文档&#xff0c;经常需要从Excel往Word里复制表格 但是复制过去的表格前面会出现空格&#xff08;缩进&#xff09; 再WPS中试了很多方法&#xff0c;终于摆脱了挨个删除的困扰 2. WPS排版中删除 选择表格菜单栏-选在【开始】-【排版】选择【更多段落处理】-【段…