引言
在学习与使用LangChain的过程中,接触到了向量数据库,通过为大语言模型提供一个自己的语料库,可以让模型的回复结果都从语料库中来,这样模型就可以回答一些它不知道的问题.但对向量数据库的概念并不熟悉,所以仔细了解一下什么是向量数据库
向量数据库的概念
简单介绍向量数据库
- 概念
向量数据库并不是一个新的概念,在大语言模型出来之前他就已经存在了,随着大语言模型的出现,向量数据库就跟Agent一样被推向了一个新的高度,那么向量数据库到底是什么样的呢?
向量数据库顾名思义是一种用于存储和处理向量数据的数据库系统.与传统的关系型数据库MySQL/Oracle这种以表格(二维)存储的数据不同,向量数据库处理的是更高维的向量数据,例如图像,音频,文本等.当然三维空间中的人大概是观察不到更高维的样子,不过向量数据可以延用数学方式表达A1(1,2,3,4,5,......)
向量数据库的出现是为了优化向量数据的存储,索引和查询的效率.具有特定的算法来对向量之间进行相似相查询,分析,分类等. 2. 与关系型数据库的差异
向量数据库与传统的关系型数据库有着显著的差异
- 存储的数据结构
关系型数据库:采用二维表格的形式存储数据,数据都是以行和列的形式存储在数据库中,每个表都有固定的列(字段)和数据类型
向量数据库:存储和处理高维度的向量数据,数据以向量的形式存在,在概念上没有固定的形式,需要根据实际应用进行改变.
- 查询操作
关系型数据库:使用SQL语句进行数据库操作
向量数据库:支持向量之家的相似相查询,通过提供特定的查询接口和算法来处理向量数据.
向量数据库的存储机制
向量数据库通过向量嵌入技术存储数据,将各类对象(如图片、文档或视频)映射为多维空间中的向量。每个对象都对应一个向量,该向量捕捉了对象的多样特征或属性。相似对象在向量空间中彼此靠近,而不相似的对象则相隔较远。
向量嵌入就是一种将高维的离散数据映射到低维连续向量空间的技术
向量嵌入的特点一般包括:
- 降维: 将高维的离散数据转换为低维的连续向量,方便计算机处理和理解。
- 语义信息: 在向量空间中,相似的数据会在空间中更加接近,这使得模型更容易捕捉到数据之间的语义关系。
- 泛化能力: 向量嵌入可以泛化到未见过的数据,使得模型在处理新数据时表现更好。 在LangChain或者是SpringAI中用到的向量嵌入技术则是OpenAI提供的OpenAIEmbeddings模型,他提供了一个便捷的方法将数据进行向量化.
相似性搜索的方式
-
聚类
聚类是一种基于数据相似性的分组方法,它将数据集中的对象根据它们之间的相似性聚合到一起
-
近似最近邻
这种方法的基本思想是每次将向量加到数据库中的时候,就先找到与它最相邻的向量,然后将它们连接起来,这样就构成了一个图。当需要搜索的时候,就可以从图中的某个节点开始,不断的进行最相邻搜索和最短路径计算,直到找到最相似的向量
如何衡量相似性
在相似性搜索中,需要计算两个向量之间的距离,然后根据距离来判断它们的相似度
-
余弦相似度:
两个向量之间的夹角余弦值,对向量的长度不敏感,只关注向量的方向,因此适用于高维向量的相似性计算
-
点积相似度:
两个向量之间的点积值,它简单易懂,计算速度快,并且兼顾了向量的长度和方向
-
欧几里得距离:
两个向量之间的距离,可以反映向量的绝对距离,适用于需要考虑向量长度的相似性计算
如何处理数据集
根据向量嵌入的概念,可以知道数据会被嵌入模型分为不同的维度,为了保证高质量的数据,就需要人为的进行数据清洗,否则可能就会造成以下问题
-
数据质量下降:未经处理的文本数据可能包含大量噪音、无关信息或格式不一致的内容,这会降低向量数据库的数据质量。
-
语义不一致:不同数据的描述可能采用不同的表达方式,语义可能不一致,这会导致向量数据库中相似度计算的不准确性。
-
搜索效率下降:未经处理的文本数据使得搜索引擎难以准确匹配用户查询,降低了搜索效率和准确性。
-
数据冗余:未经处理的数据可能存在冗余信息,导致数据库中存在重复内容,增加了存储开销。
-
难以比较和分类:未经处理的数据难以进行比较和分类,使得向量数据库无法有效地组织和利用这些信息。
存储方式
数据存储在向量数据库中可以是在内存中也可以是在磁盘里面,当然存储的位置不同也有着一定的区别.主要涉及访问速度,数据的持久性,容量和成本等问题.
- 访问速度: 从计算机的访问内存和磁盘的速度差异可知向量数据库访问的速度差异,毫无疑问的访问内存速度>访问访问磁盘速度 2.数据的持久性: 内存中的数据通常是临时存储的,断电或系统重启时数据会丢失,因此内存中的数据都是临时的. 磁盘存储具有数据持久性,数据在磁盘上存储并持久保存,即使系统重启或断电,数据也不会丢失,需要长期保存的数据则放在磁盘中. 磁盘中的数据容量是大于内存的. 3.成本差异: 内存的成本相较于磁盘是更高的,在内存中存储大量的数据就需要更多的资源与成本.
LangChain中的向量数据库应用
向量数据库在LangChain中主要应用在memory与RAG(检索增强生成应用程序)
-
有关memory
学过LangChain记忆组件与用过ChatGPT的都知道,它是有记忆的,但是这个记忆不是真正意义上的记忆.他是将聊天记录作为提示词一起传送回大模型,聊天记录也有长度限制,不能过长,否则时间与token的消耗将会大大增加.
在记忆组件中采用向量数据库存储记忆就能根据相似相搜索快速找到相关的记忆(聊天记录),记忆数据精确没有干扰项,响应速度也更快(新版本似乎已经将这个记忆组件类型删除了)
-
RAG(检索增强生成应用程序)
RAG就是通过给大模型提供额外数据增强大语言模型能力的方式.
LLM可以对广泛的主题进行推理,但他们的知识仅限于公共数据,也就是它所训练的数据集。如果想构建可以推理私有数据或者为LLM增加新的知识,引入合适的信息并将其插入到模型提示符中的过程称为检索增强生成 (RAG).
简单来说就是为LLM提供一个外挂知识库,他不知道的问题可以从这个外挂知识库中找到答案.
官方传送门:Build a Retrieval Augmented Generation (RAG) App | 🦜️🔗 LangChain
如何学习大模型
现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。
作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。
我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。
![](https://img-blog.csdnimg.cn/img_convert/4fddec469cd6f4fe2b4ee15074fee153.png)
一、AGI大模型系统学习路线
很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。
二、AI大模型视频教程
三、AI大模型各大学习书籍
四、AI大模型各大场景实战案例
五、结束语
学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。
再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。
因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。