搜索文档时,结果看起来相关却毫无意义;搜索概念时,返回的全是噪音。每个做AI的人都会遇到这个时刻——然后他们发现了向量数据库。这篇文章讲透背后的数学原理、架构设计和算法,更重要的是:单靠向量搜索,AI代理的记忆功能还差什么。

向量本质是一串数字,比如[0.12, -0.87, 0.44, ...]。它的威力在于这些数字代表的含义:神经网络将一段内容的语义编码成高维空间中的一个点。当嵌入模型(如OpenAI的text-embedding-3-large、Cohere的embed-v3或本地模型nomic-embed-text)处理句子时,通常输出768到3072维的向量。每个维度捕捉内容的某个潜在特征——这些含义不是人工设定的,而是模型在训练中自动学习的。

打开网易新闻 查看精彩图片

核心特性在于:语义相似的内容在这个空间中距离相近。"法国的首都"和"巴黎"生成的向量接近,"我最喜欢的三明治"和"巴黎"则相距甚远。向量空间的距离≈概念距离。实际应用中,一段文本通过API调用转化为约3072个数字,每个数字代表该句子的语义分量。

两个向量之间的距离通常用余弦相似度(向量夹角)、欧氏距离(直线距离)或点积(幅度加权夹角)来衡量。文本场景最常用余弦相似度,因为它忽略向量幅度,只关注方向——即纯粹的概念对齐程度。

向量数据库有两个核心工作流:写入(将内容转为存储向量)和检索(找到与查询最相似的向量)。写入流程分三步:嵌入——内容(文本、图像、音频、代码)经过嵌入模型输出密集数值向量,每段内容产生一个向量(若分块则产生多个);存储——向量与元数据(ID、时间戳、来源、类别等后续过滤字段)一并保存,大多数数据库将向量和元数据分开存储以优化结构;索引——原始存储不足以支持快速检索,数据库会构建向量索引,让最近邻搜索跳过暴力比对。