起因
最近学习AI知识才了解向量数据库,才发现之前自己居然完全没了解过向量数据库。了解了以后解决了我多年的困惑。
本文不会出现任何专有名词和算法,用小白文解释一下存在这么一种技术,我相信很多老技术人和我一样,只听过向量数据库名词,却完全不知道是干嘛用的
关于搜索多年的疑惑
我对搜索的印象还留在Elasticsearch最多了解一些ClickHouse或者基于HDFS的一些技术,但我一直没了解过向量数据库。
近年我发现搜索是越来越难用了,不管是国内的还是国际的一些大厂,搜索总是不合心意,感觉不如多年前,问题到底出在哪我一直都不清楚,我只能不断吐槽这些软件越来越难用了,直到我了解了向量数据库。
什么向量数据库
什么是向量
向量是一个中学数学概念,不复述,复述了也不一定理解。
向量在搜索或推荐中的作用到底是做什么呢?
我们只需要知道现在向量在软件领域的作用就是用来表示一种数据,文字,图片,视频都可以用向量表示
这个向量不是简单的1-5维向量,目前通常使用的是32-2048维的向量。
我们使用某种算法把任意数据(现在流行叫多模态数据)转化为一个向量。那2048个数可以完全解释一个视频么,显然是不行的,但目前的计算能力如果扩充这个长度会出现性能问题,其次AI算法的描述也存在问题,可能不同的数据有的适合512维的,有的适合2048维的,但我们不可能详尽的分库分表,这也是未来AI领域的挑战之一。
向量数据库
向量数据库的核心功能只有3点
- 存储向量和向量关联ID
- 具备构建向量索引的能力
- 基于索引查询向量近似度的查询能力
向量搜索最简单的架构和流程
架构组成
-
数据预处理模块
负责把文字、图片、视频等原始数据转换成向量。比如把一段文字通过算法变成一串数字,把一张图片分解成数字特征。这里通常使用的是向量AI模型去做转化。
-
向量存储引擎
负责保存这些数字向量,并记录每个向量对应的原始数据信息(比如文档ID、图片路径等)。
-
索引构建模块
将存储的向量按照特定规则组织成"索引",类似图书馆的分类目录,方便快速查找。
-
查询处理模块
当用户输入搜索内容时,先将其转换成向量,再通过索引快速匹配相似的向量,最后返回对应的原始数据。这里查询用的向量必须和写入时使用相同的向量模型
流程步骤(举个例子)
假设你要搜索"蓝色圆领毛衣",流程如下:
- 输入转换:系统先把"蓝色圆领毛衣"这句话转成一个2048维的向量。
- 向量匹配:在数据库中,用这个向量和已存储的商品描述向量做数学计算,找到最相似的前几个向量。
- 结果返回:把匹配到的商品信息(如商品ID、图片、价格)展示给你。
对比传统搜索:传统方式可能只匹配关键词"蓝色""圆领",但可能漏掉"深蓝""高领毛衣"这类相关但表述不同的商品,而向量搜索能通过"语义相似度"更精准地找到类似商品。
向量在大模型和RAG当中的应用场景
什么是RAG?
RAG(Retrieval-Augmented Generation,检索增强生成)是让大模型在回答问题时,先从外部数据中找最相关的资料,再结合资料生成答案。向量数据库就是RAG中用来"找资料"的工具。
具体应用场景
1. 智能客服中的问题解答
- 流程:用户问"我的订单为什么没收到?",大模型先把问题转成向量,通过向量数据库找到最匹配的"订单延迟处理"知识库文档向量,再根据文档内容回答用户。
- 优势:传统关键词匹配可能只能回答固定问题,但向量搜索能理解"延迟""超时""没送到"等不同说法的相似性。
2. 文档检索与问答系统
- 流程:公司内部有大量技术文档,用户问"如何重置服务器密码?",系统用向量搜索快速找到相关章节的文档,再生成步骤说明。
- 优势:传统搜索可能因文档标题不含"重置"这个词而找不到,但向量能通过内容语义匹配到"服务器密码重置指南"。
3. 商品推荐系统
- 流程:电商系统把用户浏览过的商品向量与数据库中其他商品向量对比,推荐相似或搭配商品(比如买"无线蓝牙耳机"后推荐"降噪耳塞")。
- 优势:传统推荐可能只基于"同类商品销量",但向量能捕捉"蓝牙耳机+运动耳机"的关联性。
4. 图片/视频搜索
- 流程:上传一张"红色跑车"图片,系统将其转成向量后,找到数据库中相似的图片或视频(比如某品牌跑车广告)。
- 优势:传统搜索需要输入关键词"红色""跑车",但向量能直接通过图像特征匹配。
向量搜索 vs 传统搜索的核心区别
场景 | 传统搜索 | 向量搜索 |
---|---|---|
用户问"手机没电" | 只匹配包含"没电""电量不足"的文档 | 能理解"充电问题""续航故障"等相似语义 |
搜索"圆领毛衣" | 只找标题或标签含"圆领"的商品 | 可能匹配"高领但款式类似的毛衣" |
总结:向量搜索不是"完全准确",但能通过数学计算理解"模糊的相似性",这正是传统关键词搜索做不到的。虽然目前体验仍有不足,但它是未来处理复杂、多模态数据的必然方向。