开启左侧

向量数据库及文本向量化介绍

[复制链接]
mazaoxie 发表于 昨天 21:24 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
作者:CSDN博客
向量数据库

调研背景:项目需要通过自然语言到数据库中取数,计划把数据库库表结构标注后吐给大模型来根据自然语言构建查询SQL。但是考虑到大模型的上下文限制,我们不能把库表数据一次性交给大模型,需要先对数据预筛一遍。这里就考虑将数据库库表中的关键信息向量化后存入向量数据库,再使用大模型提取自然语言中的关键指标进行向量化。通过向量数据库进行相似度匹配。将预筛出的数据再交给大模型进行分析,以此降低大模型的负担。
1.概述

​                在数学中,向量是具有大小和方向的量,可用带箭头的线段表示(箭头方向为向量方向,线段长度为模长)。向量间的关系可通过欧氏距离、余弦相似度、汉明距离等方式来衡量。
​                数据向量是基于不同特征或属性来描述对象的数据表示。每个向量代表一个单独的数据点,例如一个词或一张图片,由描述其许多特性的值的集合组成。这些变量有时被称为“特征”或“维度”。
​                向量数据库是专门用来存储和查询高维向量的数据库。与传统数据库将数据存储为行和列不同,向量数据库将数据表示为高维向量,并通过计算向量之间的距离或相似度来进行搜索 。这种方法使得向量数据库能够高效地处理非结构化数据,并支持诸如相似性搜索、推荐系统、图像识别等AI应用 。
2.核心能力

    管理:向量数据库以原始数据形式处理数据,能够有效地组织和管理数据,便于AI模型应用。存储:能够存储向量数据,包括各种AI模型需要使用到的高维数据。检索:向量数据库特别擅长高效地检索数据,这一个特点能够确保AI模型在需要的时候快速获得所需的数据。这也是向量数据库能够在一些推荐系统或者检索系统中得到应用的重要原因。
3.工作原理

其工作原理大致可以分为以下几个步骤:
3.1.数据表示为向量

​                向量数据库首先需要将原始数据(如图像、文本、音频等)通过深度学习模型或嵌入模型转换为向量表示。这些向量通常是由多个数值组成的数组,每个数值代表原始数据的一种特征。例如,使用预训练的BERT模型可以将文本转换为向量,使用ResNet模型可以将图像转换为向量。这种向量化表示使得非结构化数据能够在高维空间中进行高效的存储和查询。
3.2.向量存储与索引

​        向量数据库会将这些向量存储在数据库中,并通常使用一些高效的索引结构来加速查询。这些索引结构包括但不限于:
    倒排索引:用于处理离散特征的文本检索,在向量数据库中,通常会结合其他高效算法进行向量检索。KD树(K-Dimensional Tree):用于高维空间的数据分割,可以加速最近邻搜索。LSH(Locality Sensitive Hashing):用于将相似的向量映射到相同的桶中,帮助加速相似度查询。HNSW(Hierarchical Navigable Small World):一种基于图的结构,能够快速进行最近邻搜索,是目前非常流行的近似最近邻搜索算法。
3.3.相似度计算

​        向量数据库的一个核心功能是快速计算两个向量之间的相似度。常用的相似度度量包括但不限于:
    余弦相似度(Cosine Similarity):计算两个向量夹角的余弦值,适用于文本和词向量。欧氏距离(Euclidean Distance):计算两个向量之间的直线距离,适用于一般的数值型数据。曼哈顿距离(Manhattan Distance):也称为城市街区距离,计算两个向量各维度差值的绝对值之和。
3.4.向量查询

​                        当用户提交一个查询向量时,向量数据库会通过索引结构进行快速搜索,返回与查询向量最相似的若干个向量(通常是K个最近邻向量)。这个过程涉及相似度计算,即计算查询向量与数据库中每个向量的相似度,并根据相似度大小进行排序。常用的相似度计算方法包括余弦相似度、欧几里得距离等。为了提高查询效率,向量数据库通常使用近似最近邻搜索算法(如FAISS、Annoy、ScaNN等),这些算法可以在保证一定精度的前提下,显著提高查询速度。
4.应用场景

向量数据库在各种 AI 应用场景中发挥着关键作用,例如:
    图像和人脸识别:向量数据库广泛用于人脸识别系统和图像相似性搜索应用程序。推荐系统: 它们通过有效地找到与用户互动或感兴趣的项目相似的项目来为推荐引擎提供支持。自然语言处理 (NLP): 在 NLP 中,向量数据库用于文档相似性、情感分析和文档聚类等任务。异常检测: 它们可用于检测各个领域的异常情况,例如网络安全或制造业,方法是识别偏离规范的数据点。生物医学研究: 在基因组学和其他生物医学研究中,向量数据库可用于分析和比较高维生物数据。电子商务搜索: 对于电子商务平台,向量数据库通过根据产品功能或用户偏好提供准确和相关的结果来增强搜索功能。多媒体内容检索: 向量数据库在检索类似的多媒体内容(例如查找视觉上相似的图像或视频)方面发挥着关键作用。
5.常见向量数据库

产品名称特点适用场景开源/商业优势局限性
Milvus开源、分布式,支持多种索引算法(如IVF, HNSW, ANNOY),支持向量数据和混合数据类型,社区活跃大规模高维数据检索,AI应用,推荐系统,搜索引擎开源1. 高度可扩展,支持分布式架构 2. 多种索引方式灵活选择 3. 社区活跃,支持大规模数据集1. 性能优化和集群管理可能复杂 2. 部署和维护较为复杂
Pinecone全托管云服务,简化运维,支持实时更新,自动扩展,支持向量搜索和稀疏向量中小企业、快速部署,云原生应用,AI即服务平台商业1. 易于部署和管理,免去基础设施运维 2. 实时向量更新 3. 提供高可用、高性能的云服务1. 高度依赖云服务商 2. 成本可能随规模增长而增加
Elasticsearch通过插件(如Elastic Learned Sparse Encoder)支持向量搜索,强大的全文检索能力结合全文检索的场景,如日志分析、日志搜索和分析、业务监控开源+商业1. 强大的全文检索功能,结合向量搜索提供混合搜索 2. 庞大的社区和插件生态1. 向量搜索支持是插件形式,性能可能不如专门的向量数据库 2. 配置和调优复杂
FAISSMeta开源的向量检索库,支持GPU加速,支持多种向量索引算法,如IVF, HNSW算法研究、定制化开发、需要高性能的检索场景开源1. 高性能,支持GPU加速 2. 灵活的定制化能力,适合研究性应用 3. 社区支持1. 需要手动搭建上层服务和数据管理 2. 不提供全面的运维和监控功能
Qdrant轻量级,Rust开发,支持过滤查询,支持向量与非向量数据混合检索,支持动态数据更新中小规模实时应用,边缘计算应用,在线推荐开源1. 高性能,轻量级,支持高并发 2. 灵活的过滤查询功能,支持多种数据类型 3. 易于部署1. 相比Milvus,功能稍显简单 2. 不支持分布式集群
PGVectorPostgreSQL扩展,原生支持向量存储与SQL查询,兼容传统关系型数据库能力需要结合SQL与向量搜索的现有PG用户开源1. 无缝集成到现有PostgreSQL数据库中 2. 保留SQL查询的优势 3. 易于与传统应用结合1. 不适合大规模向量数据处理 2. 性能在大数据量下可能受到限制
上文提到过,向量数据库需要将数据转成向量再存入数据库,这个过程需要自己处理,下面就介绍下文本的向量化。
文本向量化

1.概述

​                文本向量化是将非结构化的文本数据转换为结构化数值向量的过程,是自然语言处理(NLP)任务的基础步骤。通过向量化,文本语义信息被编码为计算机可处理的数学表示,支撑下游任务如分类、聚类、检索等。
2.核心方法分类

2.1.传统方式

​                传统的文本向量化方法主要是通过简单的统计学技术来将文本转换为向量表示。虽然这些方法相对简单,且易于实现,但它们的表示能力有限,通常无法捕捉到词汇之间深层的语义关系。
​        2.1.1.词袋模型
​                词袋模型是一种最简单的文本表示方法。它忽略了文本中词汇的顺序,仅仅根据文本中各个词汇的出现频率来构建特征向量。每个文本被表示为一个词汇表中词语出现次数的向量。优点是实现简单、易于理解,但缺点是忽略了词序、语法和语义。
​        2.1.2.TF-IDF
​                TF-IDF是对词袋模型的改进,它考虑了词频和文档频率两个因素。TF衡量一个词在当前文档中的重要性,而IDF则衡量该词在所有文档中的稀有程度。TF-IDF的优势在于可以降低常见词汇的权重,提高稀有词汇的代表性,使得向量更加精炼和有区分度。
​        2.1.3.N-Gram模型
​                N-Gram模型通过将文本划分为连续的N个词组(即N个连续的词),可以捕捉到一定的上下文信息。N-Gram可以帮助捕捉词序信息,但随着N的增大,模型复杂度也会显著增加,且高维度的数据可能导致稀疏性问题。
2.2.词嵌入

​                词嵌入技术通过将词汇映射为低维度、稠密的向量,能够更好地捕捉词汇之间的语义关系。相比传统方法,词嵌入能够反映词与词之间的相似性和语境。
​        2.2.1.Word2Vec
​                Word2Vec是Google提出的一种深度学习模型,能够通过上下文信息学习词语的向量表示。它有两种主要的训练方法:CBOW(Continuous Bag of Words)和Skip-gram。Word2Vec通过优化一个目标函数,使得相似语境下的词语在向量空间中靠得更近,从而有效捕捉语义关系。
​        2.2.2.GloVe
​                GloVe是斯坦福大学提出的词嵌入模型。与Word2Vec不同,GloVe结合了全局词频统计信息,通过矩阵分解技术学习词嵌入。GloVe的优点在于它能够更好地利用词与词之间的全局共现关系。
​        2.2.3.FastText
​                FastText是Facebook提出的词嵌入方法,它的主要创新在于考虑了词的子词信息。FastText通过将词拆分为多个子词(如字母组合)来构建向量表示,这使得它能够处理低频词和未登录词的问题,并且能够更好地处理形态变化丰富的语言。
2.3.预训练语言模型

​                预训练语言模型代表了当前NLP领域的主流方法,它通过大规模的语料库训练模型,使其能够理解词汇、短语、句子等各种语言现象。预训练语言模型通常在生成式和判别式任务中都有出色的表现。
​        2.3.1.BERT
​                BERT是Google提出的双向Transformer预训练语言模型。与传统的单向语言模型不同,BERT在训练时同时考虑了上下文的左右两侧,能够更全面地理解句子的语义。BERT已经在许多NLP任务中设立了新的基准,包括问答、情感分析等。
​        2.3.2.GPT
​                GPT是OpenAI提出的生成式预训练模型,它基于Transformer架构,并使用了单向(从左到右)的自回归模型。GPT的优势在于它能够生成流畅、连贯的自然语言文本,特别适合文本生成任务。GPT系列(如GPT-3)在文本生成、对话系统等任务中表现出了强大的能力。
3.对比

方法优势劣势技术原理上下文处理典型应用场景
词袋模型1. 实现简单、计算效率高2. 适合小规模数据
3. 可解释性强
1. 忽略词序和上下文信息
2. 高维稀疏数据导致维度灾难
3. 无法处理同义词问题
基于词频统计,构建词汇-文档矩阵无上下文感知短文本分类、垃圾邮件检测
TF-IDF1. 通过逆文档频率降低常见词权重
2. 改进版词袋模型
3. 适配多语言场景
1. 无法捕捉词语间语义关系
2. 仍存在稀疏性问题
3. 对短语表达不敏感
词频(TF)×逆文档频率(IDF)加权统计无上下文感知搜索引擎排序、关键词提取
N-Gram1. 捕获局部词序特征
2. 增强短文本表达能力
3. 支持短语级分析
1. 维度随N增大指数级增长
2. 数据稀疏性加剧
3. 长距离依赖仍无法解决
滑动窗口提取连续词序列局部上下文(N个词窗口)拼写纠错、生物序列分析
Word2Vec1. 分布式语义表示
2. 支持词向量算术运算
3. 计算效率较高
1. 无法处理一词多义
2. 未登录词(OOV)表现差
3. 忽略全局统计信息
浅层神经网络预测上下文(CBOW/SkipGram)静态上下文(固定窗口)词相似度计算、推荐系统
GloVe1. 融合全局共现统计
2. 对高频词建模更准确
3. 适合语料库分析
1. 存储共现矩阵内存消耗大
2. 仍需人工设定窗口大小
3. 更新迭代成本高
矩阵分解+对数概率比优化静态全局上下文知识图谱构建、词类比任务
FastText1. 子词嵌入解决OOV问题
2. 对形态丰富语言更有效
3. 适合低频词处理
1. 训练时间比Word2Vec长2-5倍
2. 词向量包含冗余子词信息
字符n-gram组合的词袋表示静态上下文(子词结构)多语言NER、社交媒体文本分析
BERT1. 双向Transformer编码
2. 动态上下文感知
3. 支持多种下游任务微调
1. 预训练需数千GPU小时
2. 推理延迟高(>50ms)
3. [CLS]表征存在信息损失
掩码语言模型+下一句预测全文本双向上下文问答系统、语义相似度计算
GPT1. 自回归生成流畅文本
2. 零样本学习能力强
3. 支持长文本生成
1. 单方向上下文限制
2. 事实性错误率>15%3. 存在生成有害内容风险
自回归语言模型(Transformer Decoder)从左到右单向上下文对话系统、创意写作

原文地址:https://blog.csdn.net/weixin_52464308/article/details/145927317
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题
阅读排行更多+

Powered by Discuz! X3.4© 2001-2013 Discuz Team.( 京ICP备17022993号-3 )