向量 = 给语义“拍一张数字照片”
你可以把向量想象成一种语义坐标。
每个文字片段(一句话、一段记忆)送到向量模型里,出来的那串数字(比如 [0.12, -0.34, 0.78, …])就是它在“语义世界”中的位置。
这张“数字照片”抓住了这段话的意思,而不是具体的用词。
举个例子:
“我养了一只狗” → 向量 A
“我的宠物是柯基” → 向量 B
“明天会下雨” → 向量 C
在语义世界里,A 和 B 的点会很近,因为它们都和“养狗/宠物”有关。
而 C 的点会离它们俩都很远,因为它在讲天气。
为什么近就代表“相关”?——靠训练时的拉近与推远
向量模型在训练时,做的事情非常直接:
把意思相近的文本拉近,把意思无关的文本推远。
训练数据是大量的“文本对”和相似度标签,比如:
正例:“今天好热”→“气温很高”(拉近)
负例:“今天好热”→“今天股票跌了”(推远)
经过几亿次这样的“拉”和“推”,模型就学会了一套规则:把语义相近的任何文本,都映射到空间中彼此靠近的位置。
所以,当把记忆文本和当前问题都映射到同一个空间后,距离自然就代表了语义相关性。
检索时发生了什么?——在语义地图上找邻居
当你问 Agent:“我的宠物叫什么名字?”
这句问题被向量模型转换成查询向量 Q,也就是问题在语义空间里的一个点。
向量数据库里,保存着每条记忆的向量位置,比如:
M1:“我养了一只狗叫旺财” → 在位置 P1
M2:“我喜欢吃披萨” → 在位置 P2
M3:“我家狗狗是柯基” → 在位置 P3
计算 Q 到所有 P 的距离,发现 P1 和 P3 离 Q 非常近,P2 离得远。
于是 M1、M3 被提取出来,因为它们在语义地图上和问题站在了同一个街区。
这就是“怎么知道哪些记忆是当前问题所需要的”本质:
不是靠关键词匹配,而是靠在意思构成的高维空间中,找离问题点最近的那些记忆点。
一个形象的二维类比(实际是几百维)
想象你把世界上所有文本的意思,压平到一个巨大的二维地图上:
“狗”、“宠物”、“遛狗”相关的内容,都集中在“宠物区”。
“机票”、“航班”、“出行”集中在“旅行区”。
“代码”、“调试”、“报错”集中在“编程区”。
当你问一个关于“宠物”的问题,这个问题会被定位到地图的宠物区。
然后你划一个半径很小的圆,圆里所有的记忆就都和宠物有关。
那些“机票”“代码”的记忆远在别的区,根本不会被选中。
真实模型用的是几百上千维的空间,它比你想象的地图要细腻得多,能区分“狗”和“猫”的细微差异,也能捕捉“可爱”和“凶猛”这种抽象关系。
一个容易被忽略的关键:同一个模型映射
能实现这种效果,还有一个硬性要求:
记忆入库时用的向量模型,和查询时用的向量模型,必须是同一个。
因为每个模型创造的“语义世界”不同,地图比例尺、街道命名都不一样。
只有用同一张“地图”,查询向量才能准确地落在记忆旁边。
总结
向量:就是语义的数字坐标,意思相近 = 坐标靠近。
怎么知道哪些记忆相关:把问题也变成坐标,在坐标空间里找离它最近的那些记忆点。
这背后是模型被训练成了把相似文本映射到相近位置的规则。
整个过程完全基于语义理解,而不是关键词匹配,所以即使问题说“宠物”,记忆里写的是“狗”,它们也能撞到一起。
评论 (0)