AI创想

标题: 一文带你了解向量数据库 [打印本页]

作者: AI小编    时间: 9 小时前
标题: 一文带你了解向量数据库
作者:CSDN博客
一. 向量数据库概述

1. 向量数据库的定义

向量数据库是一种专门用于存储、管理和检索向量数据的数据库系统。向量在这里通常是指具有多个数值维度的数据表示形式,它可以将文本、图像、音频等非结构化数据通过嵌入模型(Embedding Model)将数据转换为向量。例如,在自然语言处理中,一个单词或句子可以通过词嵌入模型(如 Word2Vec、BERT 等)转换成一个固定维度的向量,这些向量就可以存储在向量数据库中。
(, 下载次数: 0)


嵌入模型(Embedding Model)会将各种数据 (例如文本、图像、图表和视频) 转换为数值向量,以便捕捉其在多维向量空间中的含义和细微差别。嵌入技术的选择取决于应用需求,同时要兼顾语义深度、计算效率、要编码的数据的类型、维度等因素。通过将向量映射到多维空间,可以对向量的语义相似性进行细致的分析,从而显著提高搜索和数据分类的准确性。在使用 AI 聊天机器人、大语言模型 (LLM)、检索增强生成 (RAG) 和向量数据库的 AI 应用中以及在搜索引擎和许多其他用例中,嵌入模型(Embedding Model)发挥着至关重要的作用。
下图是经过嵌入模型(Embedding Model)转化后的向量空间特征表示。

(, 下载次数: 0)


2. 向量数据库的特征


3. 向量索引的作用

在向量数据库中,索引对于提升高维度数据空间内搜索操作的效率和速度至关重要。考虑到向量数据库中存储的数据的复杂性和数量,索引机制对于快速定位和检索与查询相关性最高的向量至关重要。下面详细解析了向量数据库中索引的主要功能和优势:
向量索引对于向量数据库的性能和功能至关重要,使其能够快速、有效地管理和搜索大量高度复杂的高维数据。这项功能对于各种应用都有着至关重要的意义,从推荐系统、个性化引擎,到 AI 赋能的分析和内容检索系统,皆包括其中。
4. 向量数据库的主要用途

二. 向量数据库工作原理及常见数据检索算法

1. 向量数据库工作原理

2. 向量数据检索算法

(1)精确最近邻搜索(Exact Nearest Neighbor Search, ENNS)算法

这类算法会遍历整个向量数据库,计算查询向量与每个向量的距离或相似度,然后找出最相似的向量。它的优点是能够得到精确的检索结果,但缺点是当数据量很大时,计算成本非常高。例如,在一个小规模的向量数据库(如只有几百个向量)中,精确最近邻搜索可以很好地工作,但对于大规模数据(如数百万甚至数千万向量)来说,这种方法可能需要很长时间。
(2)近似最近邻搜索(Approximate Nearest Neighbor Search, ANNS)算法

三.向量数据库与传统数据库的区别

向量数据库在数据组织和检索方法上与传统数据库大不相同。传统数据库的结构是处理离散的标量数据类型,比如数字和字符串,将它们组织成行和列。这种结构对于事务性数据来说很理想,但对于AI和机器学习中通常使用的复杂高维数据来说效率较低。相比之下,向量数据库旨在存储和管理向量数据——即代表多维空间中点的数字数组。
(, 下载次数: 0)


这使得向量数据库天生就适合于涉及相似性搜索的任务,其目标是在高维空间中找到最接近的数据点,这是图像和语音识别、推荐系统和自然语言处理等AI应用的一个常见要求。通过利用为高维矢量空间优化的索引和搜索算法,矢量数据库提供了一种更高效、更有效的方法来处理在先进AI和机器学习时代下日益盛行的那种数据。
(, 下载次数: 0)


向量数据库与传统数据库的对比如下表所示:
对比维度向量数据库传统数据库
数据类型主要存储高维向量数据,能够将文本、图像、音频等非结构化数据通过嵌入转换为向量进行存储以存储结构化数据为主,如关系型数据库存储以表格形式呈现的数据,包括数字、字符串等类型,也有部分数据库用于存储非结构化或半结构化数据,但处理方式与向量数据不同
查询方式基于相似性的检索是其核心,通过计算向量之间的相似度(如欧几里得距离、余弦相似度等)来查找与查询向量相似的向量数据,例如在语义搜索中输入一个文本向量,检索出语义相似的文本向量以精确查询和基于规则的查询为主,如通过 SQL 语句按照特定的条件精确匹配数据,例如查找某字段等于特定值的所有记录
索引机制采用特殊的索引结构来处理高维向量数据,以提高检索效率,常见的有 IVF - PQ 等索引技术,能够对高维向量空间进行有效的组织和划分有多种索引机制,如 B 树索引用于加速范围查询和精确查询,在关系型数据库中广泛应用,还有哈希索引用于快速的精确匹配查询等
性能特点在处理大规模高维向量数据的相似性检索时具有优势,能够在较短时间内返回与查询向量相似的结果,但数据插入和更新操作的性能可能会受到索引结构和数据规模的影响对于结构化数据的传统查询操作(如精确查询、范围查询等)性能较好,尤其是经过优化的数据库系统,但对于复杂的相似性检索或高维数据处理可能不如向量数据库高效
典型应用场景在人工智能和机器学习领域应用广泛,如自然语言处理中的语义搜索、图像识别中的相似图像检索、推荐系统等,用于处理和分析具有高维特征的非结构化数据应用于各种需要存储和管理结构化数据的场景,如企业的事务处理系统(如订单管理、库存管理等)、在线事务处理(OLTP)和联机分析处理(OLAP)系统等,用于处理传统的企业数据和业务逻辑
数据动态更新一般支持向量数据的动态插入、删除和更新操作,以适应数据不断变化的应用场景,但更新操作可能会对索引产生一定的影响,需要进行相应的维护也支持数据的增删改操作,并且在事务处理方面有严格的机制保障数据的一致性和完整性,对于频繁的动态更新操作通常能够较好地处理,但具体性能取决于数据库的类型和规模等因素
四. 常见的开源向量数据库

常见的开源向量数据库主要有Milvus、Faiss、Weaviate、PgVector、Chroma、LanceDB等。
(, 下载次数: 0)


由 Zilliz 开发,专为处理大规模、高维向量数据设计,支持 HNSW、IVF、PQ 等多种索引算法,得益于分布式架构,水平扩展能力出色,能处理大规模数据,适用于大规模分布式部署场景,在智能安防系统中可用于对海量监控视频图像向量进行存储与检索。
Facebook AI Research 开发的向量搜索库,以 C++ 编写并提供 Python 接口,在处理大规模向量数据时性能卓越,内存操作速度快,提供多种高效索引结构,常用于图像检索研究。
开源的向量数据库,允许存储来自喜欢的 ML 模型的数据对象和向量嵌入,并能轻松扩展到数十亿个数据对象,其速度较快,能在几毫秒内从数百万个对象中快速搜索十个最近邻,还提供推荐、摘要和神经搜索框架集成等功能,适用于语义搜索、知识图谱、推荐系统等场景。
开源的嵌入式数据库,通过将知识、事实和技能作为可插拔项供 LLM 使用,使构建 LLM 应用变得简单,对 CPU 的依赖较低,更多依赖内存来处理大规模数据,适合快速原型开发、小规模应用、多媒体内容处理等场景。
开源的向量数据库扩展,基于 PostgreSQL,支持混合数据查询、中小规模 AI 应用,具有良好的易用性.
开源的向量数据库,性能高,适合边缘设备、数据湖分析等场景,支持在资源受限或本地化场景中使用。
流行的开源搜索引擎,通过 k - NN 插件支持基于向量的相似性搜索,其生态系统成熟,能很好地适用于混合搜索场景,在企业级搜索应用中,既可以通过关键词搜索文档,也能基于文档的向量表示进行语义搜索。
向量数据库和进行向量相似性搜索的工具,作为 API 服务运行,中规中矩,Qps 相对较高、延迟相对较低,在 CPU 和磁盘 IO 方面的利用率较高,适合规模不大且对延迟有高要求的应用。
参考材料


原文地址:https://blog.csdn.net/garyond/article/details/148950401




欢迎光临 AI创想 (https://www.llms-ai.com/) Powered by Discuz! X3.4