公司动态

AI入门教程(二十):

📅 2026/8/4 12:40:31
AI入门教程(二十):
前言:为什么要向量数据库?在AI时代,我们处理的数据形态发生了根本变化:传统数据库存储的是结构化数据:数字、字符串、日期AI应用处理的是语义:一段文本的含义、一张图片的内容、一段语音的意思这些语义信息被表示成向量(Vector)——一串浮点数,比如[0.123, -0.456, 0.789, ...]。向量数据库就是专门用来存储、索引、查询这些向量的数据库。它的核心价值是:在百万级甚至十亿级向量中,毫秒级找出与查询向量最相似的前K个结果。一、向量相似度搜索的挑战理解为什么需要专门的算法,先看暴力搜索的问题。1.1 暴力搜索的复杂度最简单的思路:计算查询向量与库中每个向量的相似度,排序取前K个。python复制下载import numpy as np from typing import List, Tuple def brute_force_search(query: np.ndarray, vectors: List[np.ndarray], top_k: int = 5): """暴力搜索:计算与所有向量的距离,排序返回Top K""" distances = [(idx, np.sqrt(np.sum((query - vec) ** 2))) for idx, vec in enumerate(vectors)] distances.sort(key=lambda x: x[1]) return distances[:top_k] # 10000个128维向量 np.random.seed(42) vectors = [np.random.randn(128) for _ in range(10000)] query = np.random.randn(128) results = brute_force_search(query, vectors, top_k=5) print("搜索结果:", results)问题很明显:100万向量要算100万次距离,10亿向量要算10亿次——生产环境完全不可接受。数据规模暴力搜索耗时能否接受?1万~1ms✅ 可以100万~100ms⚠️ 有点慢1000万~1s❌ 太慢1亿~10s❌ 不可用1.2 维度诅咒向量通常是高维的。OpenAI的text-embedding-3-small是1536维,large是3072维。高维空间里,传统空间索引(如KD-Tree)效率急剧下降,甚至比暴力搜索还慢。这就是为什么需要近似最近邻(ANN)算法:放弃100%准确率,换取100倍甚至1000倍的速度提升。二、主流ANN算法2.1 HNSW:分层小世界图HNSW(Hierarchical Navigable Small World)是目前最流行的算法,灵感来自六度分隔理论。核心思想:构建多层图结构,高层稀疏节点作为"高速通道",快速定位大致区域;底层全量数据精细搜索。分层结构:Layer 0:存全部向量层数越高,节点越少,充当高速通道