AIGC 提示:文章存在大量 LLM 创作内容,仅供参考,请仔细甄别
向量数据库近年受到广泛关注,常被认为与大语言模型(LLM)的兴起直接相关。
诚然,LLM是推动这项技术普及的重要因素,但向量数据库的底层思想和技术雏形,根植于更早的计算机科学领域。
这篇文章希望带各位理解其发展脉络,从技术本质出发,审视其从早期探索到成熟产品的演进路径。
一、技术本质:相似性搜索的底层逻辑
向量数据库的核心能力,并非新兴概念,而是大规模相似性搜索的工程实现。其核心原理可概括为“表示-检索”两步:
第一步:数据向量化(表示)
将非结构化数据(如图像、音频、文本、分子结构等)通过算法转化为高维向量(特征向量)。这一步本质是“特征提取”——向量的每一位数字对应数据的某个特征(如图像的颜色、纹理,音频的音调音色,文本的语义等),向量空间中的位置关系则反映数据特征的相似性。
第二步:近似最近邻检索
当需要查找相似数据时,先将目标数据转化为查询向量,再在包含海量向量的空间中快速找到与查询向量“距离最近”的前K个向量。这里的“距离”(如欧氏距离、余弦相似度)被视为数据相似性的数学度量。
这一“用向量表示数据、用空间距离度量相似”的范式,是所有相似性搜索问题的通用解法,也是向量数据库的底层逻辑。
二、前LLM时代:垂直领域的“专家工具”
在LLM普及前,向量搜索技术已在多个领域应用,但更多以“工具库”形式存在,依赖专业领域知识,尚未形成标准化产品。
不同领域的早期实践
向量搜索的核心场景始终是“找相似”,不同领域通过专用方法实现数据向量化和检索:
| 领域 | 核心问题 | 特征提取方法(向量化) | 典型应用场景 |
|---|---|---|---|
| 计算机视觉 | 以图搜图、人脸识别 | SIFT(关键点)、HOG(纹理)、颜色直方图等 | 淘宝“拍立淘”、安防人脸比对 |
| 音频处理 | 听歌识曲、声纹识别 | MFCC(梅尔频率倒谱系数) | Shazam听歌识曲(音频片段特征匹配) |
| 推荐系统 | 相似物品推荐 | 协同过滤(用户/物品隐向量)、TF-IDF | Netflix影视推荐、Amazon商品推荐 |
| 生物信息学 | 药物筛选、基因比对 | 分子指纹(化学结构二进制向量) | 制药公司候选分子检索 |
这些场景中,向量搜索依赖领域专家设计特征提取算法,例如计算机视觉需手动设计图像特征提取器,音频处理需理解声学特征。同时,检索工具多为基础算法库(如Facebook的FAISS、Spotify的Annoy、NMSLIB),开发者需自行集成到业务系统,处理数据存储、索引构建、服务扩缩容等工程问题。此时的向量搜索是“领域专用技术”,门槛高、工具原始、应用场景垂直。
三、LLM时代:从“工具”到“数据库”的跨越
LLM的普及并非改变向量搜索的本质,而是通过三方面变革推动其从“垂直工具”升级为“通用基础设施”:
1. 通用Embedding:降低向量化门槛
LLM(如OpenAI的text-embedding-ada-002)和多模态模型(如CLIP)提供了通用特征提取能力。无需领域专家设计专用算法,普通开发者可通过API将文本、图像、代码等数据转化为语义丰富的向量。例如,一段产品描述、一张设计图,甚至一段蛋白质序列,都能通过同一模型生成向量,且向量空间中的距离直接反映语义相似性。这大幅降低了向量化的技术门槛,让向量搜索从“领域专家工具”变为通用能力。
2. 应用场景:从“搜索”到“记忆”的扩展
LLM自身存在两个局限:无状态(无法“记住”未训练的数据)、上下文长度有限。向量数据库恰好作为LLM的外部记忆系统,通过“检索增强生成(RAG)”架构,将用户问题相关的私有知识(如公司文档、产品手册)从向量库中检索出来,作为上下文输入LLM,使其生成更准确的回答。此时,向量数据库的角色不再只是“搜索引擎”,而是AI应用的“长期记忆库”和“事实来源”,应用场景从“找相似”扩展到智能问答、内容生成、知识管理等更广泛领域。
3. 产品形态:从“算法库”到“数据库”的成熟
早期向量搜索工具是基础算法库(如FAISS),缺乏数据库的核心能力(数据持久化、CRUD接口、可扩展性、安全性等)。
随着LLM推动需求爆发,市场需要标准化产品——原生向量数据库(如Milvus、Pinecone、Weaviate)应运而生。这些产品封装了底层算法库,提供完整的数据库功能:支持数据增删改查、自动索引构建、云原生部署、多租户隔离等,同时兼容传统数据库生态(如PostgreSQL通过pgvector插件支持向量搜索)。
至此,向量搜索从“开发者手动集成的工具”升级为“开箱即用的数据库服务”。
四、实践中的技术选型与架构思考
理解向量数据库的本质与演进后,在技术选型和架构设计中可更清晰地判断需求匹配度:
核心问题:是否需要“全功能向量数据库”?
- 小规模、低QPS场景:若数据量百万级以下、查询频率低(如内部文档搜索),pgvector插件(PostgreSQL扩展)可能是更优解——无需维护独立数据库,简化技术栈。
- 复杂RAG或高并发场景:若需处理亿级向量、毫秒级响应(如大规模产品推荐、实时智能问答),原生向量数据库(如Milvus、Pinecone)更合适,其针对向量检索做了深度优化,支持分布式扩容、隔离性保障。
- 极简场景:若仅需嵌入应用(如本地工具、轻量服务),FAISS、Annoy等基础库可能足够,降低资源消耗。
全局架构:向量数据库作为“记忆中间件”
在AI应用架构中,向量数据库需与上下游协同:
- 上游:关注Embedding模型的选择(通用模型或领域微调模型)、向量生成的效率(批量/实时处理);
- 下游:结合业务逻辑设计检索策略(如混合搜索——向量检索+关键词过滤、多轮召回——初筛+精排),提升结果准确性。
需注意,向量搜索是“近似检索”(非精确匹配),在金融风控、专利查重等要求100%召回率的场景中,需搭配精确匹配策略(如数据库全量扫描)作为补充。
总结
向量数据库的发展始终围绕“相似性搜索”的核心逻辑:通过向量表示数据,通过空间距离度量相似性。
变化的是实现方式与应用范围——从领域专家设计的专用工具,到LLM推动的通用数据库;从垂直场景的“找相似”,到AI应用的“记忆系统”。
理解这一脉络,不仅能更清晰地把握技术本质,也能在实践中避免盲目跟风:
根据数据规模、并发需求、业务场景,选择最适配的工具(插件、库、数据库),让向量搜索真正服务于业务价值,而非成为技术负担。
Appendix
引言:从前端视角看“搜索”的进化
作为前端,我们最常打交道的“数据查询”是什么?是用户在搜索框里输入“React性能优化”,我们调用API,后端去数据库 LIKE '%React性能优化%'。
这种方式有两个痛点:
- 不解风情:用户搜“React best practice”,搜不到“React最佳实践”的文章。它只能做字面匹配。
- 无法跨模态:用户想“以图搜图”,找相似风格的图片,传统数据库无能为力。
问题的本质是:传统数据库存储和检索的是“符号”,而非“语义/含义”。
为了解决这个问题,我们需要一种新的技术,它能理解并度量“含义”的相似度。这就是向量数据库登场的舞台。
1. 概念引入:为何要有向量数据库?
核心动机:让机器能够像人一样,基于语义相似性而非字面完全匹配来检索信息。
实现路径的演变:
-
第一步:万物皆可“向量化” (Embedding)
- AI领域的一大突破是嵌入(Embedding)技术。它像一个“通用翻译器”,能将世界上任何非结构化数据(文本、图片、音频、甚至代码)转换成一个由数字组成的“意义坐标”——向量(Vector)。
- 关键特性:在向量空间中,距离相近的向量,其代表的原始数据在语义上也相似。例如,“苹果手机”的向量与“iPhone”的向量会非常接近,但与“香蕉”的向量会很远。
-
第二步:海量向量的“安居”与“乐业”
- 我们有了海量的向量数据,新的问题来了:如何高效地存储这些高维度的向量(通常是几百到几千维),并且能快速地从亿万个向量中,找到与“目标向量”最相似的那几个?
- 传统的数据库(如MySQL)并不擅长这种计算。在一个有1亿行数据的表里,为每个查询都计算与1亿个向量的距离,将是一场灾难。
- 向量数据库(Vector Database) 应运而生。它就是专门为存储、管理和高效检索向量数据而设计的“特种数据库”。
第一性原理:在保留语义信息的前提下,将非结构化数据转化为高维空间中的点(向量),并通过空间索引技术,将“查找最相似的N个点”这个暴力计算问题(O(N)),转化为一个高效的近似查找问题(如 O(log N))。
2. 具体内容:向量数据库是什么/怎么样工作?
是什么:向量数据库是一个专门用于存储和查询向量嵌入的数据库。它的核心能力是近似最近邻(Approximate Nearest Neighbor, ANN) 搜索。
核心工作流:
-
数据入库(Indexing / Upsert)
- 前端/服务端:准备原始数据(如一篇文章、一张图片)。
- Embedding 模型:调用一个预训练好的模型(如 OpenAI的
text-embedding-ada-002,或开源的 CLIP 模型),将原始数据“翻译”成向量。 - 向量数据库:将这个向量连同它的元数据(metadata,如文章ID、图片URL)一起存入数据库。在存储时,数据库会使用特殊的索引算法(如 HNSW, IVF)来组织这些向量,就像给图书馆的书架做分区。
-
数据查询(Query / Search)
- 前端/服务端:用户输入查询(一段文字、上传一张图片)。
- Embedding 模型:同样,将用户的查询也“翻译”成一个查询向量。
- 向量数据库:接收这个查询向量,利用其内部的ANN索引,快速地在亿万向量中找到距离最近的 Top-K 个向量。
- 返回结果:数据库返回这 Top-K 个向量的元数据(如文章ID、图片URL)以及它们的相似度得分。
- 前端/服务端:根据返回的元数据,从传统数据库(如PostgreSQL)或对象存储(如S3)中取出完整的原始数据,呈现给用户。
3. 延伸拓展:深度与广度
深度挖掘:ANN 索引算法
向量数据库之所以快,核心在于其**近似最近邻(ANN)**算法,它牺牲了100%的精确性来换取千百倍的速度提升。常见的索引算法有:
- HNSW (Hierarchical Navigable Small World):目前最主流、性能最好的算法之一。可以想象成一个多层级的“社交网络图”。从最顶层稀疏的“枢纽节点”开始导航,快速定位到目标区域,然后逐层下降,进入更精细的网络层进行精确查找。它在召回率和查询速度之间取得了很好的平衡。是 Milvus, Weaviate, Pinecone 等主流数据库的默认选择。
- IVF (Inverted File System):倒排索引。可以理解为对向量空间做“聚类”。先把所有向量分成很多个“簇”(clusters),查询时,先找到查询向量属于哪个(或哪几个)簇,然后只在这个小范围的簇内进行暴力搜索。适合静态数据集。
-
- LSH (Locality-Sensitive Hashing): 局部敏感哈希。用特殊的哈希函数,让原始空间中距离近的点,有很大概率被哈希到同一个桶里。查询时,只要在查询向量所在的桶里查找即可。
广度延伸:向量数据库的生态与选型
向量数据库市场百花齐放,可以分为三类:
- 原生向量数据库:为向量而生。
- 开源/自托管:
Milvus,Weaviate,Qdrant。适合对数据隐私、成本控制和定制化有高要求的团队。 - 托管服务 (DBaaS):
Pinecone,Zilliz Cloud (Milvus的云版)。开箱即用,免运维,弹性伸缩,适合快速迭代和验证。
- 开源/自托管:
- 传统数据库的“向量插件”:在现有数据库上扩展向量搜索能力。
pgvectorfor PostgreSQL, Redis Stack'sRediSearch。适合那些已有大量数据在这些传统数据库中,且向量搜索不是唯一或最核心负载的场景。可以简化技术栈,但极限性能和功能丰富度可能不如原生库。
- 搜索引擎的“向量化”:
Elasticsearch,OpenSearch也加入了对向量搜索的支持。适合已经深度使用ES,并希望在全文检索的基础上增加语义搜索能力的场景。
选型考量:数据规模、查询QPS、延迟要求、成本、团队技术栈、部署模式(云 vs 私有)、生态集成度(如与LangChain的集成)等。
Cheat Sheet
- 解决了什么问题? 解决了海量非结构化数据(文本、图片等)的语义相似性搜索问题,超越了传统数据库的字面匹配。
- 核心原理? Embedding (数据->向量) + ANN 索引 (向量->高效检索)。
- 工作流程?
- 写:
Data -> Embedding Model -> Vector -> Vector DB Index - 读:
Query -> Embedding Model -> Query Vector -> ANN Search -> Top-K Vectors -> Metadata -> Final Result
- 写:
- 关键技术? ANN索引算法,如 HNSW (图索引,快且准)、IVF (聚类+倒排)。
- 主要玩家?
- 原生: Milvus, Pinecone, Weaviate
- 插件: pgvector (PostgreSQL), RediSearch (Redis)
- 搜索引擎: Elasticsearch (KNN)