Embedding和向量数据库-P6-6、向量数据库基本介绍

向量数据库初探:为什么AI需要它?

在我们深入探讨向量数据库之前,有必要先理解传统关系型数据库的局限性。

关系型数据库(如MySQL、Oracle、PostgreSQL)使用表格结构存储数据,查询时依赖WHERE关键字进行精准匹配。这种方式的短板在于:它无法理解数据的语义。例如,搜索“苹果”,它只能匹配到包含“苹果”二字的字段,而无法区分你指的是水果还是手机公司。

向量数据库的出现,正是为了解决这一问题。它不再使用传统的表结构,而是存储两种核心数据:

  1. 向量数据:将文本、图片、音频等通过Embedding模型转化为数学向量,用于语义对比。
  2. 元数据:用于存储业务的附加信息,如日期、类别等。

索引:数据库的“目录”

这里我们引入了“索引”的概念。无论是关系型数据库还是向量数据库,索引都扮演着目录的角色。就像我们查书时,会先看目录找到对应页码,而不是通读全书。索引能大幅提升数据检索的效率。

向量检索算法:从精确到高效

向量数据库的核心在于检索算法,主要分为两类:

  1. KNN(K-最近邻):这是一种暴力匹配方法,它会将查询向量与库中所有向量逐一比对,找出最相似的K个。优点是100%精确,缺点是当数据量巨大时,速度极慢,不适合实时响应。

  2. ANN(近似最近邻):这是目前向量数据库的主流方法。它牺牲一点点精度,换取极高的检索速度,通过巧妙的索引结构,无需遍历所有数据就能找到近似的最近邻。目前最主流的ANN算法有两个:

    • FAISS (Facebook AI Similarity Search):由Facebook开源。其核心思想可以理解为分类。类似逛超市,你需要一件商品(如“脉动”),会先去“饮料区”,再在该区的货架上寻找。FAISS先将海量数据分到不同类别(分区),查询时先确定类别,再在类别内部精细比对。
    • HNSW (Hierarchical Navigable Small World):其核心思想是分层导航。类似于从外地去西安某小区,策略是“先大范围,再小范围”。先通过飞机快速抵达西安市(高层网络),然后打车精确到具体小区(低层网络)。HNSW构建了一个多层网络图,查询时从上至下逐层深入,先快速缩小范围,再进行精确匹配。

向量数据库的核心功能

无论什么数据库,核心功能都是增、删、改、查

  • 插入:将数据(文本、图片等)及其对应的向量插入数据库,系统会自动构建索引。
  • 删除:移除不需要的数据及其向量。
  • 更新:修改已有的数据记录。
  • 查询:这是向量数据库的灵魂,分为两种模式:
    • 相似性检索:基于语义相似度。输入一个查询,数据库会找出语义上最相似的向量。
    • 过滤检索(混合检索):在相似性检索的基础上,叠加传统数据库的条件过滤。例如查询“近一年发布的,与‘人工智能’语义相关的文章”。这里的“近一年”是硬性条件,而“语义相关”则是软性的相似度判断。

思考题

  1. 问题:当数据量很小时(例如几百条记录),我们应该使用KNN还是ANN算法?为什么?
    答案:建议使用KNN。因为数据量小,KNN暴力比对的速度完全可接受,且能保证100%的精确度。ANN的索引构建和搜索会有额外开销,在大数据量下才体现出性能优势。

  2. 问题:如果要搜索“近一个月发布的、关于‘新能源汽车销量’的公众号文章”,应该使用哪种检索方式?
    答案:应使用混合检索(过滤检索)。其中“关于‘新能源汽车销量’”部分使用相似性检索,而“近一个月发布”部分使用条件过滤。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇