-
Notifications
You must be signed in to change notification settings - Fork 37
Expand file tree
/
Copy pathquiz.json
More file actions
78 lines (78 loc) · 3.02 KB
/
Copy pathquiz.json
File metadata and controls
78 lines (78 loc) · 3.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
{
"lesson": "51-literature-retrieval",
"title": "顶点课 51 —— 文献检索",
"questions": [
{
"stage": "pre",
"question": "为什么检索客户端要分别跑一轮 BM25 和一轮引用图谱检索?",
"options": [
"因为 BM25 需要图谱来构建索引",
"因为词汇匹配会漏掉用不同术语表述的基础论文,而图谱匹配会漏掉与种子论文没有引用关系的论文",
"因为 mock API 要求这样做",
"因为解析器不支持其他方式"
],
"correct": 1,
"explanation": "两种方式互补。词汇匹配覆盖共享术语的论文;图谱匹配覆盖有引用关系但措辞不同的论文。"
},
{
"stage": "pre",
"question": "为什么引用图谱遍历的跳数上限是两跳?",
"options": [
"因为超过两跳后结果集往往偏离主题,淹没下游排序",
"因为 Python 递归限制不允许三跳",
"因为 BM25 只能打分两跳以内的论文",
"因为语料库只存储了两层引用"
],
"correct": 0,
"explanation": "两跳是实际上限。在一个连通图上三跳会导致结果集爆炸,而且很少能带回更多相关论文。"
},
{
"stage": "check",
"question": "对于一个在每篇文档中都出现的词,idf 计算结果是什么?",
"options": [
"一个很大的正数",
"接近零的值",
"负无穷",
"未定义;BM25 实现会跳过它"
],
"correct": 1,
"explanation": "当 df 等于 N 时,log 里的分子分母很接近,加 1 后保持非负但很小。处处出现的常见词贡献接近于零。"
},
{
"stage": "check",
"question": "合并步骤用哪个字段对两轮结果进行去重?",
"options": [
"论文标题文本",
"稳定的论文 id",
"年份加第一作者",
"BM25 分数桶"
],
"correct": 1,
"explanation": "论文 id 是稳定标识。标题和作者在不同版本间会重复,仅靠年份也有歧义。"
},
{
"stage": "check",
"question": "对于距离种子集两跳的论文,graph_score 返回什么值?",
"options": [
"零",
"默认 0.3",
"默认 1.0",
"BM25 分数除以十"
],
"correct": 1,
"explanation": "默认的图谱分数计划是:零跳 1.0,一跳 0.6,两跳 0.3,超过两跳为零。"
},
{
"stage": "check",
"question": "为什么语料库在 RetrievalClient 中一次性加载,而不是每次查询都重新获取?",
"options": [
"因为 mock API 每次调用都很慢",
"因为 BM25 索引和引用图谱在构造时一次性建好,之后跨查询复用",
"因为解析器是全局的",
"因为时效性评分需要它"
],
"correct": 1,
"explanation": "索引构建是开销大的步骤。复用索引把这个成本分摊到客户端处理的每次查询上。"
}
]
}