13 · Embedding 与混合检索
从关键词基线开始,理解语义搜索的收益与局限。
本站原创入门导读与合成教学示例。原始资料核实:2026-09-05。建议先读:12 · 规划、上下文与记忆。
理解概念
Embedding 把内容编码成向量,用距离或相似度寻找候选。查询和文档需要兼容的编码方式;更换模型后通常要重建索引。语义相近不等于事实相关,精确编号、日期和人名往往仍需要关键词检索。
混合检索结合关键词与向量候选,再去重或重排。先在小语料上建立可解释的关键词基线,再比较向量方法是否真正找回更多证据。每个返回片段保留文档编号、段落编号、版本与权限;过滤权限应发生在任何结果展示之前。
一个最小例子
代码
# 关键词基线,用于比较;没有使用真实 Embedding
corpus = {"A": "实验室 周三 开放", "B": "图书馆 周五 关闭"}
query = set("实验室 周三".split())
scores = {key: len(query & set(text.split()))
for key, text in corpus.items()}
print(sorted(scores, key=scores.get, reverse=True))
动手练习
加入同义词“化学实验室星期三能进去吗”。记录关键词基线失败的原因,再列出向量检索可能改善的情况与仍需精确匹配的字段。
验收与预期结果
基线把 A 排在 B 前;能够说明分词与同义词影响。评估用人工标注相关文档,而不是只看搜索结果似乎顺眼。
- 我能解释输入、过程与结果。
- 我保留了一个失败例与运行记录。
常见误区
相似度阈值不能跨模型直接复用。不要把原始向量当作匿名化保证,也不要忽略索引中的私有文档权限。
延伸阅读
以下是相关方向的原始资料;本站练习不是官方课程作业或逐字翻译。
理解需要时间,记录让每一步都有迹可循。
回到学习路线图