AI

向量化Embedding

你可能会说

它是怎么知道哪一段资料跟我问的话有关的?

用嵌入模型把一句话变成一串数字;意思相近的句子,这串数字的位置也相近,检索就是在比谁离得近。例如「明天下午有降雨」和「降雨预报」的数字很接近,和「今天吃了煎饼」差得很远。建知识库时每个块都算一次向量存起来,提问时把你的问题也换成向量,比出最近的几条。
也常被叫作嵌入文本向量Embedding 模型
运行流程 · 文字怎么变成坐标
嵌入模型只把文字换成数字,不做回答
明天下午有降雨0.21 · −0.44 · 0.87 · …降雨预报0.19 · −0.41 · 0.85 · …今天吃了煎饼−0.77 · 0.05 · −0.31 · …
维度这串数字有多少个
相似度「明天下午有降雨」↔「降雨预报」 0.93↔「今天吃了煎饼」 0.12
专门把文本映射成数字的模型,跟会说话的模型是两回事,选型看语言和支持长度
一句话得到一个坐标;意思相近的句子坐标也相近,这就是「按意思搜」的全部依据
数字的个数。维度高装得下更多细节,也更占存储、算得更慢
通常比两组数字的夹角,越接近 1 越相似;检索就按这个分数排序
容易混淆?这样区分
语义检索≠关键词匹配

关键词靠字面一样,搜「退款」找不到「不给退钱」。向量化比的是意思,换个说法也能命中;代价是专有名词、编号、型号容易飘,所以常常两路一起用。

换嵌入模型≠换个模型接着用

新旧模型算出的向量不在同一个坐标系里,混着比大小没有意义。换模型等于整库重算一遍,这是最常见的「明明有资料却搜不到」的原因。

常见做法 · Variants
中文 / 多语模型Multilingual
中文资料→搜得动
资料是中文就用支持中文的模型;用纯英文模型,中文检索几乎不可用
短文本 vs 长文本Short / Long
一句问话 整页文档
两端最好用同一个模型;有的模型只擅长短句,长段会被压扁
多模态嵌入Multimodal
图片↔文字
以图搜图、给商品图配文字检索;本质还是同一套坐标比较
典型使用场景
建知识库的那一步:每个块算一个向量存起来
块 2:退款政策 v3[0.21, −0.44, …]
存进向量库的是坐标和元数据,原文另外放在能读到的地方
换了一个嵌入模型,旧向量全部作废
旧模型算的 [0.21, …]
新模型算的 [0.88, …]
不在同一个坐标系里比大小没有意义,必须整库重算一遍
延伸阅读 · 权威出处