
- 语义表示
- 信息检索
START WITH A QUESTION
搜索“冷气没效果”,为什么只找“空调”可能不够?
资料写着“空调不制冷”,用户却问“冷气没效果”。逐字匹配可能找不到它。语义检索尝试按含义寻找相关内容,但相近表达也可能属于不同任务,例如“空调安装”与“空调报修”。
一种做法是把文字变成数字向量,也就是一组有顺序的数字,让相近含义的向量更靠近。向量不是人的理解,也不是事实证明;它提供排序线索,仍需检查内容与适用条件。
BUILD YOUR VOCABULARY
先把三个概念讲清楚
关键词检索
根据词语命中与统计权重匹配资料。擅长专有名词、编号与精确术语;同义表达需要额外处理。
查“设备 A-17”时,精确编号可能比泛化语义重要。
嵌入向量
将文字映射为一组数字表示,通常由训练过的模型产生。数值维度不一定有可直接命名的意义。
实验手工用三个维度模拟主题接近程度,不是真实嵌入模型。
相似度与排序
余弦相似度比较两个向量的方向。相似度高代表表示接近,不代表文档正确或一定回答问题。
两篇都讨论空调,可能分别讲安装和报修。
FOLLOW THE PROCESS
把原理放进完整流程
- 01
准备可检索片段
保留标题、正文、来源、日期与权限,避免只有孤立向量。
- 02
表示查询
将查询转换成与资料相同方式产生的向量。
- 03
计算并排序
按相似度返回候选;也可结合关键词形成混合检索。
- 04
检查候选
验证是否直接回答问题,比较不同问法与无答案问题。
| 项目 | 向量 | 含义 |
|---|---|---|
| 查询 | [1, 0.9, 0] | 偏向制冷故障主题 |
| 报修资料 | [1, 1, 0] | 方向相近,余弦约 0.999 |
| 会议预订 | [0, 0, 1] | 方向垂直,余弦为 0 |
CHANGE ONE THING & OBSERVE
比较关键词与语义排序
选择不同问法并切换方法,查看每条资料的分数与排名。语义模式使用事先标明的手工向量,不是在线模型,也不根据答案隐藏调整分数。
查询向量 [1, 0.9, 0];各资料向量和计算结果如下。关键词同分时维持原顺序,0 分不应视为有效命中。
- 空调不制冷报修空调故障,请提交报修。 · 向量 [1, 1, 0]0
- 空调安装说明安装空调前确认墙体承重。 · 向量 [1, 0.1, 0]0
- 会议室预订会议室预订需登记时间。 · 向量 [0, 0, 1]0
KNOW THE LIMITS
哪些结论不能直接推出?
相似度分数不是事实置信度
0.9 的相似度不表示答案有 90% 概率正确,也不能跨模型直接比较分数。
相关资料仍可能无权查看
权限过滤必须作为系统规则执行,不能只靠提示要求模型保密。
READ, RUN & EXPLAIN
亲手计算两个向量的余弦相似度
以下示例仅使用 Python 3 标准库,可复制到本地 Python 环境运行。先看每一行的作用,再修改一个输入观察结果;无需网络或密钥。
from math import sqrt
a = [1, 0.9, 0]
b = [1, 1, 0]
dot = sum(x * y for x, y in zip(a, b))
length_a = sqrt(sum(x * x for x in a))
length_b = sqrt(sum(x * x for x in b))
score = dot / (length_a * length_b) if length_a and length_b else 0
print(round(score, 3))复制或下载只获取本课示例,不会自动执行。
逐行解释(8 行)
- 第 1 行
from math import sqrt导入平方根函数,用来计算向量长度。
- 第 2 行
a = [1, 0.9, 0]查询的手工向量。三个数只是教学表示。
- 第 3 行
b = [1, 1, 0]文档的手工向量,与查询维度一致。
- 第 4 行
dot = sum(x * y for x, y in zip(a, b))对应位置相乘再相加,称为点积。
- 第 5 行
length_a = sqrt(sum(x * x for x in a))各维平方求和后开平方,得到向量长度。
- 第 6 行
length_b = sqrt(sum(x * x for x in b))同样计算另一个向量的长度。
- 第 7 行
score = dot / (length_a * length_b) if length_a and length_b else 0点积除以长度乘积;零向量没有方向,本例约定返回 0。
- 第 8 行
print(round(score, 3))保留三位小数输出,便于阅读。
0.999
CHECK YOUR UNDERSTANDING
换一个角度,检查自己是否理解
已回答 0 / 3 题 · 当前答对 0 题
TAKE IT WITH YOU
带走三个判断,再做一次迁移练习
- 关键词与语义检索各有优势,可以组合。
- 嵌入是数字表示,相似度用于候选排序。
- 检索后仍需检查证据、时效与权限。
参考与延伸阅读
本课例子、代码和模拟数据为教学设计。以下一手文档用于延伸核对,不代表对本示例的认证。
- Python 官方教程:数据结构列表、集合与队列等示例语法参考。
- scikit-learn:模型评估评估指标与预测、决策的区别。
- IBM:检索增强生成检索与生成组合的进一步说明。
- NIST:AI 风险管理框架可靠性与风险管理的延伸阅读;不是特定项目的合规结论。