qinghuan
← 回到知识探索

AI 直觉 / 趣味知识

一句话变成向量,事实就存进去了吗?

Embedding 帮助找可能相关的材料,材料是否真实、过期或有权读取仍是另一组问题。

展开本文目录
  1. 向量是为任务计算出的表示
  2. 找回向量之后,还要找回原文
  3. 用一组小材料检查自己究竟存了什么
  4. 记住这三点
  5. 别把例子用过头
  6. 自己试一小步
  7. 查原始资料
  8. 找一份资料继续练
开始前,会这些就够了
  • 知道向量可以用于相似度比较
遇到不熟悉的词,先看这 1 个解释
Embedding(嵌入)
把文字等对象转换为向量的表示方法,也常指转换后的向量。模型通过训练,让这些数值适合某种比较任务,例如从许多段落中找出与问题相关的材料。
打开完整术语小抄 ↗

假设实验室有两份开放时间通知,一份已经作废,一份本周生效。把它们都转成向量后,搜索“周末几点开放”,两份材料都可能被找到。向量检索很擅长帮你缩小阅读范围,但它不会因为数字排在前面,就自动替通知办理作废手续。

Embedding 是把文本转成数值表示的过程。这里最容易混淆的是三件事:模型学过什么、向量表达了什么,以及资料库实际保存了哪份原文。它们合作完成检索,却不是同一个东西。

向量是为任务计算出的表示

编码器读入一段文字,输出一组数。训练希望这些数在某种比较方法下,对任务有帮助,例如让问题靠近能回答它的段落。DPR 的双编码器就是分别编码问题与材料,再用分数选择候选。这说明检索目标是相关性,不是给每条句子颁发真假证明。

不要把某一维随意命名成“正确程度”或“资料新鲜度”。常见稠密向量的各维往往共同工作,不能只看到某个数就解读出一个独立事实。相关文本也可能互相矛盾:它们谈的是同一件事,恰好观点或版本不同。是否被模型区分开,需要实测,不能预先保证。

同一段文字换一个编码模型,表示方式也可能变化。查询和资料应使用彼此匹配的编码流程;更换模型后,不能只因为向量维数一样,就把新查询向量直接拿去比较旧索引。维数相同只是形状兼容,不代表两套坐标表达相同含义。

找回向量之后,还要找回原文

实际知识库通常为每个片段保存向量,同时保留片段编号、原文、来源和版本等信息。检索先返回候选,再根据编号取得可供阅读的内容。BGE 的公开演示也把向量分数映射回原始语料;它没有让读者仅凭一串浮点数检查答案。

回到两份通知,应用可以用生效状态过滤作废版本,再检查日期和适用场所。这里的判断来自明确字段和规则。若只有“相似度最高的一条”,旧通知仍可能成为输入;模型回答得再流畅,也无法补上检索阶段没有执行的版本选择。

权限同样应由应用控制。某个片段与问题很相关,不代表当前用户有权看它。来源更新或撤回时,原文、向量索引和读取规则需要按应用约定同步处理。只往新索引添加一条记录,并不会自动让旧记录停止参与检索。

用一组小材料检查自己究竟存了什么

不下载模型也能做一个纸面检查:给两份通知分别填编号、版本、生效日期和原文,写下检索后还需要检查哪些字段。再问自己,如果删除来源文字,只剩向量和分数,是否还能复核“周末开放”这句话。这个问题检查的是证据能否追溯,不是在测模型效果。

真正评价编码器时,再准备有正确候选标注的问题,记录该找到的材料是否进入候选,以及错误版本是否混入。找到了不等于回答正确,没找到也不一定是模型理解差,还可能是资料缺失、切分丢条件或过滤错误。先分清表示、检索和资料管理的职责,排错才有具体入口。

记住这三点

  • Embedding 提供可比较的表示,不提供独立的事实认证。
  • 向量应能映射回原文与版本信息,便于核对和撤回。
  • 更换模型、更新资料和过滤权限,都是应用需要明确处理的事情。

别把例子用过头

  • 两份通知是虚构例子,没有声称某个模型一定把它们排成某种顺序。
  • 本文讨论常见文本检索流程,不声称所有 embedding 都是同一种稠密编码器。

自己试一小步

一份通知更新后,怎样检查旧内容不会继续被当成当前答案?

  1. 自行写一份旧通知和一份替代通知,给它们分别加版本与状态。
  2. 画出候选编号到原文的读取过程,标记何处执行版本和权限过滤。
  3. 设计找不到新通知、旧通知仍在索引、引用编号失效三种情况。

做到这些,就算完成

  • 每个返回片段都有可核对原文。
  • 明确区分相关性分数与生效状态。
  • 没有用向量维数相同证明不同模型的表示可混用。

查原始资料

想确认一个细节,先看这份资料对应的部分,不必从头读完所有文档。

找一份资料继续练

先选一项,按下面的范围继续学;不必从头读完整门课程。