跳转至

第2章:发展历程 - 关键技术节点与演进

技术发展时间线

timeline
    title 向量数据库技术演进史

    section 萌芽期
        2000年代初期 : NNDS研究开始
                        朴素最近邻搜索

    section 索引算法突破
        2003 : KD-Tree优化
               空间分割索引
        2006 : LSH局部敏感哈希
               随机投影方法
        2011 : PQ乘积量化
               有损压缩索引

    section 现代向量数据库
        2017 : FAISS发布
               Facebook开源
        2019 : HNSW算法成熟
               分层导航小世界
        2020 : Pinecone云服务
               托管向量数据库

    section 爆发期
        2021-2022 : Milvus、Qdrant
                    开源数据库涌现
        2023-2024 : 大模型驱动
                    RAG应用爆发

一、萌芽期:从学术研究到概念形成

什么是最近邻搜索

最近邻搜索(Nearest Neighbor Search, NNS) 是向量数据库的核心问题:给定一个查询向量,在数据集中找到与它最相似的向量。

最早的研究可以追溯到1970年代,计算机科学家开始研究如何高效解决"在N个点中找到最近的点"这个问题。

早期方法的局限性

早期的方法如KD-Tree,在高维数据(维度>20)下会遭遇"维度灾难",检索效率急剧下降。

# 维度灾难示意图
dimensions = [2, 10, 50, 100, 500, 1000]
efficiency = [1.0, 0.8, 0.3, 0.1, 0.01, 0.001]  # 相对检索效率

# 维度越高,数据分布越稀疏
# 导致"所有点之间的距离都差不多远"

二、索引算法突破期

1. 局部敏感哈希(LSH)- 2003-2006

局部敏感哈希(Locality-Sensitive Hashing, LSH) 是第一个能够在大规模高维数据上有效进行近似最近邻搜索的算法。

核心思想:相近的向量经过哈希后,会有很高的概率被映射到相同的"桶"中。

graph LR
    subgraph LSH工作原理
        A[向量A: 相似] -->|哈希函数| C[桶1]
        B[向量B: 相似] -->|哈希函数| C
        D[向量C: 不相似] -->|哈希函数| E[桶2]

        C --> F[在桶内精确搜索]
    end

    style A fill:#b3e5fc
    style B fill:#b3e5fc
    style D fill:#ffccbc
    style C fill:#c8e6c9

LSH的优缺点

优点 缺点
理论成熟 哈希桶数量需要预设
适合低维数据 内存占用较大
查询速度快 精度有限

2. 乘积量化(PQ)- 2011

乘积量化(Product Quantization, PQ) 由法国研究机构提出,是一种有损压缩方法,能够将高维向量压缩到更小的存储空间。

核心思想: 1. 将向量分成多个子向量 2. 对每个子向量空间进行聚类 3. 用聚类中心的ID代替原始子向量

# PQ压缩示例
original_vector = [0.23, -0.45, 0.89, -0.12, 0.56, -0.78]  # 6维原始向量

# PQ压缩后:用聚类中心ID表示
# 假设分成3组,每组2维
# [0.23, -0.45] -> 聚类中心ID: 42
# [0.89, -0.12] -> 聚类中心ID: 17
# [0.56, -0.78] -> 聚类中心ID: 89

compressed = [42, 17, 89]  # 只存储3个整数
# 压缩率:6个浮点数 -> 3个整数 = 50倍压缩

三、深度学习驱动期

词嵌入的崛起

2013年,Google发布了 Word2Vec 模型,首次实现了将词语转换为密集向量的突破。这种"嵌入"技术让机器能够理解词语之间的语义关系。

# Word2Vec示例:词语到向量的映射
word_vectors = {
    "king": [0.5, 0.3, -0.2, 0.8],
    "queen": [0.4, 0.2, -0.1, 0.9],
    "man": [0.6, -0.1, 0.4, 0.2],
    "woman": [0.3, 0.1, 0.5, 0.3]
}

# king - man + woman ≈ queen (向量运算!)
# 这说明向量确实编码了语义信息

Transformer与向量表示

2017年,Transformer架构被提出,随后产生了 BERT、GPT 等大语言模型。这些模型能够生成高质量的上下文相关向量表示,极大推动了向量数据库的发展。

四、现代向量数据库诞生期

1. FAISS - 2017

FAISS(Facebook AI Similarity Search) 由Facebook(现Meta)开源,是第一个工业级的向量检索库。

# FAISS基本使用示例
import faiss
import numpy as np

# 创建10000个128维的随机向量作为数据集
dimension = 128
vectors = np.random.random((10000, dimension)).astype('float32')

# 建立索引
index = faiss.IndexFlatL2(vectors.shape[1])  # L2距离索引
index.add(vectors)

# 查询
query = np.random.random((1, dimension)).astype('float32')
distances, indices = index.search(query, k=5)  # 找5个最近邻

print(f"最近邻索引: {indices}")
print(f"距离: {distances}")

FAISS的贡献: - 证明了工业级向量检索的可行性 - 提供了多种索引算法(IVF、PQ、HNSW等) - 开源推动了整个领域的发展

2. HNSW算法成熟 - 2019

HNSW(Hierarchical Navigable Small World) 是目前最主流的向量索引算法之一,由俄罗斯科学家发明。

核心思想:构建多层图结构,上层稀疏、下层密集,通过"高速公路"实现快速搜索。

graph TB
    subgraph Layer 2 [上层 - 稀疏]
        L2_A((A)) --> L2_C((C))
        L2_B((B)) --> L2_C
        L2_C --> L2_E((E))
    end

    subgraph Layer 1 [中层]
        L1_A((A)) --> L1_B((B))
        L1_B --> L1_C((C))
        L1_C --> L1_D((D))
        L1_D --> L1_E((E))
    end

    subgraph Layer 0 [底层 - 密集]
        L0_A((A)) --> L0_B((B))
        L0_B --> L0_C((C))
        L0_C --> L0_D((D))
        L0_D --> L0_E((E))
        L0_B --> L0_E
        L0_A --> L0_D
    end

    style L2_A fill:#bbdefb
    style L2_C fill:#bbdefb
    style L2_B fill:#bbdefb
    style L2_E fill:#bbdefb

    style Layer 0 fill:#fff3e0,color:#000
    style Layer 1 fill:#e8f5e9,color:#000
    style Layer 2 fill:#fce4ec,color:#000

HNSW的优势: - 查询速度极快(毫秒级) - 精度高(接近100%召回率) - 无需调参,使用简单

五、云服务与开源并进期

2020-2022:云原生向量数据库兴起

产品 公司 特点
Pinecone Pinecone 全托管、云原生
Milvus Zilliz 开源、云原生
Qdrant Qdrant团队 开源、 Rust实现
Weaviate SeMI Technologies 混合搜索
Chroma Chroma公司 轻量级、面向LLM

2023-2024:大模型时代的爆发

ChatGPT 的成功证明了 LLM 的强大能力,也带火了 RAG(检索增强生成) 架构。向量数据库作为 RAG 的核心组件,迎来了爆发式增长。

flowchart LR
    A[大语言模型] -->|驱动| B[RAG应用]
    B -->|依赖| C[向量数据库]

    C -->|海量需求| D[市场爆发]
    D -->|资本涌入| E[产品成熟]

    style A fill:#e1f5fe
    style B fill:#fff3e0
    style C fill:#e8f5e8
    style D fill:#ffccbc
    style E fill:#c8e6c9

六、技术演进规律总结

演进的驱动力

mindmap
  root((向量数据库演进驱动力))
    算法突破
      KD-Tree
      LSH
      HNSW
      PQ
    硬件进步
      GPU加速
      大内存
      SSD普及
    深度学习
      Word2Vec
      Transformer
      多模态模型
    市场需求
      语义搜索
      RAG爆发
      多模态AI

关键技术节点回顾

年份 技术/产品 意义
2003 LSH 解决了高维数据检索问题
2011 PQ 实现了向量压缩存储
2013 Word2Vec 证明了语义向量表示的可行性
2017 FAISS 首个工业级向量检索库
2019 HNSW 实现了极速高精度的向量搜索
2020 Pinecone 开启了云原生向量数据库时代
2023 RAG爆发 向量数据库成为AI基础设施

本章小结

本章要点:

  1. 萌芽期(1970-2000):最近邻搜索问题被提出,早期算法遭遇维度灾难
  2. 算法突破期(2003-2011):LSH和PQ算法奠定了理论基础
  3. 深度学习驱动期(2013-2017):Word2Vec和Transformer证明了向量表示的可行性
  4. 现代数据库期(2017-至今):FAISS开源、HNSW成熟、云服务兴起、RAG爆发

下一章预告第3章:核心原理 - 深入理解向量表示、距离计算和索引结构 →