Skip to content

Commit 67ade02

Browse files
committed
chore: enrich demo fixtures and fix pages trial links
1 parent 85b8b1a commit 67ade02

24 files changed

+1944
-150
lines changed

README.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
# OfferPotato
66

77
<p align="center">
8-
<a href="https://github.com/ly-xxx/Offer-loom/stargazers"><img src="https://img.shields.io/github/stars/ly-xxx/Offer-loom?style=flat-square" alt="GitHub stars" /></a>
9-
<a href="https://github.com/ly-xxx/Offer-loom/network/members"><img src="https://img.shields.io/github/forks/ly-xxx/Offer-loom?style=flat-square" alt="GitHub forks" /></a>
10-
<a href="https://github.com/ly-xxx/Offer-loom/issues"><img src="https://img.shields.io/github/issues/ly-xxx/Offer-loom?style=flat-square" alt="GitHub issues" /></a>
8+
<a href="https://github.com/ly-xxx/Offer-Patato/stargazers"><img src="https://img.shields.io/github/stars/ly-xxx/Offer-Patato?style=flat-square" alt="GitHub stars" /></a>
9+
<a href="https://github.com/ly-xxx/Offer-Patato/network/members"><img src="https://img.shields.io/github/forks/ly-xxx/Offer-Patato?style=flat-square" alt="GitHub forks" /></a>
10+
<a href="https://github.com/ly-xxx/Offer-Patato/issues"><img src="https://img.shields.io/github/issues/ly-xxx/Offer-Patato?style=flat-square" alt="GitHub issues" /></a>
1111
<a href="./LICENSE"><img src="https://img.shields.io/badge/license-MIT-16a34a?style=flat-square" alt="MIT license" /></a>
1212
</p>
1313

@@ -28,13 +28,13 @@
2828
</p>
2929

3030
<p align="center">
31-
<a href="https://ly-xxx.github.io/Offer-loom/">
31+
<a href="https://ly-xxx.github.io/Offer-Patato/">
3232
<img src="https://img.shields.io/badge/ONLINE%20TRY%20NOW-GitHub%20Pages-ff5a1f?style=for-the-badge&logo=githubpages&logoColor=white" alt="Try OfferPotato Demo" />
3333
</a>
3434
</p>
3535

3636
<p align="center">
37-
<strong><a href="https://ly-xxx.github.io/Offer-loom/">在线试用入口</a></strong>(无需本地安装)
37+
<strong><a href="https://ly-xxx.github.io/Offer-Patato/">在线试用入口</a></strong>(无需本地安装)
3838
</p>
3939

4040
**如果你正在准备技术面试,大概率会遇到这三个死局:**
@@ -69,8 +69,8 @@ OfferPotato 不绑定特定技术栈。无论你是准备 LLM、前端、后端
6969
仓库内置了公开的测试数据,即便你还没整理好自己的资料,也可以直接跑起来体验整套界面和工作流。
7070

7171
```bash
72-
git clone https://github.com/ly-xxx/Offer-loom.git
73-
cd Offer-loom
72+
git clone https://github.com/ly-xxx/Offer-Patato.git
73+
cd Offer-Patato
7474
npm install
7575
npm run setup:serve
7676
```
@@ -195,10 +195,10 @@ sources/
195195

196196
## Star History
197197

198-
<a href="https://www.star-history.com/#ly-xxx/Offer-loom&Date">
198+
<a href="https://www.star-history.com/#ly-xxx/Offer-Patato&Date">
199199
<picture>
200-
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=ly-xxx/Offer-loom&type=Date&theme=dark" />
201-
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=ly-xxx/Offer-loom&type=Date" />
202-
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=ly-xxx/Offer-loom&type=Date" />
200+
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=ly-xxx/Offer-Patato&type=Date&theme=dark" />
201+
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=ly-xxx/Offer-Patato&type=Date" />
202+
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=ly-xxx/Offer-Patato&type=Date" />
203203
</picture>
204204
</a>

web/public/demo-api/documents.json

Lines changed: 52 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,25 @@
11
[
22
{
3-
"id": "doc-guide-llm",
3+
"id": "doc-guide-rag-playbook",
44
"kind": "guide",
55
"ext": "md",
6-
"path": "sources/documents/demo/llm-guide.md",
7-
"relPath": "demo/llm-guide.md",
6+
"path": "sources/documents/demo/rag-playbook.md",
7+
"relPath": "demo/rag-playbook.md",
88
"sourceId": "demo-guide-source",
9-
"title": "LLM 与 RAG 面试主线(Demo)",
10-
"updatedAt": "2026-03-27T09:40:00.000Z",
11-
"knowledgeHitCount": 3
9+
"title": "RAG 架构与检索策略(Demo)",
10+
"updatedAt": "2026-03-27T09:30:00.000Z",
11+
"knowledgeHitCount": 7
12+
},
13+
{
14+
"id": "doc-guide-rag-eval",
15+
"kind": "guide",
16+
"ext": "md",
17+
"path": "sources/documents/demo/rag-eval-and-ops.md",
18+
"relPath": "demo/rag-eval-and-ops.md",
19+
"sourceId": "demo-guide-source",
20+
"title": "RAG 评估、上线与运维(Demo)",
21+
"updatedAt": "2026-03-27T09:36:00.000Z",
22+
"knowledgeHitCount": 6
1223
},
1324
{
1425
"id": "doc-work-offerloom",
@@ -18,7 +29,40 @@
1829
"relPath": "offerloom/architecture-notes.md",
1930
"sourceId": "demo-mywork",
2031
"title": "OfferLoom 架构笔记(Demo)",
21-
"updatedAt": "2026-03-27T09:45:00.000Z",
22-
"knowledgeHitCount": 2
32+
"updatedAt": "2026-03-27T11:35:00.000Z",
33+
"knowledgeHitCount": 9
34+
},
35+
{
36+
"id": "doc-work-rag-architecture",
37+
"kind": "work",
38+
"ext": "md",
39+
"path": "mywork/rag-compass/architecture/overview.md",
40+
"relPath": "rag-compass/architecture/overview.md",
41+
"sourceId": "demo-mywork",
42+
"title": "RAGCompass 架构设计(Demo)",
43+
"updatedAt": "2026-03-27T09:48:00.000Z",
44+
"knowledgeHitCount": 5
45+
},
46+
{
47+
"id": "doc-work-rag-evaluation",
48+
"kind": "work",
49+
"ext": "md",
50+
"path": "mywork/rag-compass/eval/offline-report.md",
51+
"relPath": "rag-compass/eval/offline-report.md",
52+
"sourceId": "demo-mywork",
53+
"title": "RAGCompass 离线评估报告(Demo)",
54+
"updatedAt": "2026-03-27T09:52:00.000Z",
55+
"knowledgeHitCount": 4
56+
},
57+
{
58+
"id": "doc-work-rag-ops",
59+
"kind": "work",
60+
"ext": "md",
61+
"path": "mywork/rag-compass/ops/indexing-runbook.md",
62+
"relPath": "rag-compass/ops/indexing-runbook.md",
63+
"sourceId": "demo-mywork",
64+
"title": "RAGCompass 索引运维 Runbook(Demo)",
65+
"updatedAt": "2026-03-27T09:55:00.000Z",
66+
"knowledgeHitCount": 4
2367
}
2468
]
Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
{
2+
"id": "doc-guide-rag-eval",
3+
"kind": "guide",
4+
"ext": "md",
5+
"path": "sources/documents/demo/rag-eval-and-ops.md",
6+
"relPath": "demo/rag-eval-and-ops.md",
7+
"sourceId": "demo-guide-source",
8+
"title": "RAG 评估、上线与运维(Demo)",
9+
"updatedAt": "2026-03-27T09:36:00.000Z",
10+
"watchPath": null,
11+
"meta": {},
12+
"content": "# RAG 评估、上线与运维\n\n## 质量评估框架\n采用 Recall@k、nDCG、Groundedness、Hallucination rate 四维评估。\n\n## 多租户权限模型\n租户级索引隔离 + 文档 ACL + 查询时二次过滤。\n\n## 索引与回滚\n增量批次采用两阶段提交,失败时按批次号回滚并重放。",
13+
"sections": [
14+
{
15+
"anchor": "eval-framework",
16+
"heading": "质量评估框架",
17+
"level": 2,
18+
"startLine": 3,
19+
"endLine": 6,
20+
"knowledgeHitCount": 2,
21+
"content": "采用 Recall@k、nDCG、Groundedness、Hallucination rate 四维评估。",
22+
"relatedQuestions": [
23+
{
24+
"id": "demo-q-6",
25+
"text": "为什么你们选 cross-encoder reranker,不是只用向量相似度?",
26+
"displayText": "为什么你们选 cross-encoder reranker,不是只用向量相似度?",
27+
"difficulty": "medium",
28+
"score": 0.9,
29+
"questionType": "evaluation",
30+
"translatedText": "为什么你们选 cross-encoder reranker,不是只用向量相似度?",
31+
"isRevisited": false,
32+
"generatedCount": 1,
33+
"generatedStatus": "ready",
34+
"lastGeneratedAt": "2026-03-27T10:10:00.000Z",
35+
"generated": {
36+
"elevator_pitch": "相关性质量提升显著。",
37+
"full_answer_markdown": "Cross-encoder 在 hard negative 上明显优于单纯向量相似度。",
38+
"work_story": "我们离线 A/B 中 MRR 提升 12%。",
39+
"work_evidence_status": "direct",
40+
"follow_ups": ["延迟增加怎么补?", "是否蒸馏轻量模型?"],
41+
"missing_basics": []
42+
}
43+
},
44+
{
45+
"id": "demo-q-7",
46+
"text": "你们怎么评估 hallucination 和 groundedness?",
47+
"displayText": "你们怎么评估 hallucination 和 groundedness?",
48+
"difficulty": "hard",
49+
"score": 0.94,
50+
"questionType": "evaluation",
51+
"translatedText": "你们怎么评估 hallucination 和 groundedness?",
52+
"isRevisited": false,
53+
"generatedCount": 1,
54+
"generatedStatus": "ready",
55+
"lastGeneratedAt": "2026-03-27T10:12:00.000Z",
56+
"generated": {
57+
"elevator_pitch": "引用一致性 + 人审抽检双轨。",
58+
"full_answer_markdown": "自动评测看引用命中和语义一致性,再做人审抽检闭环。",
59+
"work_story": "RAGCompass 每周固定抽检 200 条问答。",
60+
"work_evidence_status": "adjacent",
61+
"follow_ups": ["阈值怎么设?", "误报如何处理?"],
62+
"missing_basics": []
63+
}
64+
}
65+
]
66+
},
67+
{
68+
"anchor": "tenant-acl",
69+
"heading": "多租户权限模型",
70+
"level": 2,
71+
"startLine": 8,
72+
"endLine": 11,
73+
"knowledgeHitCount": 2,
74+
"content": "租户级索引隔离 + 文档 ACL + 查询时二次过滤。",
75+
"relatedQuestions": [
76+
{
77+
"id": "demo-q-8",
78+
"text": "多租户文档怎么做权限隔离,避免串库?",
79+
"displayText": "多租户文档怎么做权限隔离,避免串库?",
80+
"difficulty": "hard",
81+
"score": 0.92,
82+
"questionType": "security",
83+
"translatedText": "多租户文档怎么做权限隔离,避免串库?",
84+
"isRevisited": false,
85+
"generatedCount": 1,
86+
"generatedStatus": "ready",
87+
"lastGeneratedAt": "2026-03-27T10:14:00.000Z",
88+
"generated": {
89+
"elevator_pitch": "双重过滤保证安全边界。",
90+
"full_answer_markdown": "索引分租户隔离,召回后再走 ACL 过滤并记录审计日志。",
91+
"work_story": "我们在网关和检索层都做了 tenant_id 校验。",
92+
"work_evidence_status": "direct",
93+
"follow_ups": ["跨租户共享文档如何做?", "审计日志保留多久?"],
94+
"missing_basics": []
95+
}
96+
}
97+
]
98+
},
99+
{
100+
"anchor": "index-rollback",
101+
"heading": "索引与回滚",
102+
"level": 2,
103+
"startLine": 13,
104+
"endLine": 16,
105+
"knowledgeHitCount": 2,
106+
"content": "增量批次采用两阶段提交,失败时按批次号回滚并重放。",
107+
"relatedQuestions": [
108+
{
109+
"id": "demo-q-9",
110+
"text": "索引增量更新失败时怎么回滚和重放?",
111+
"displayText": "索引增量更新失败时怎么回滚和重放?",
112+
"difficulty": "medium",
113+
"score": 0.93,
114+
"questionType": "ops",
115+
"translatedText": "索引增量更新失败时怎么回滚和重放?",
116+
"isRevisited": false,
117+
"generatedCount": 1,
118+
"generatedStatus": "ready",
119+
"lastGeneratedAt": "2026-03-27T10:16:00.000Z",
120+
"generated": {
121+
"elevator_pitch": "批次化提交 + 可重放日志。",
122+
"full_answer_markdown": "每个批次带版本号,提交失败回滚到上个稳定版本并重放事件流。",
123+
"work_story": "RAGCompass 夜间增量任务失败后可 10 分钟恢复。",
124+
"work_evidence_status": "direct",
125+
"follow_ups": ["重放幂等怎么保证?", "回滚期间如何服务?"],
126+
"missing_basics": []
127+
}
128+
}
129+
]
130+
}
131+
],
132+
"looseRelatedQuestions": [
133+
{
134+
"id": "demo-q-10",
135+
"text": "RAG 场景下怎么做 token 成本优化?",
136+
"displayText": "RAG 场景下怎么做 token 成本优化?",
137+
"difficulty": "medium",
138+
"score": 0.77,
139+
"questionType": "cost",
140+
"translatedText": "RAG 场景下怎么做 token 成本优化?",
141+
"isRevisited": true,
142+
"generatedCount": 1,
143+
"generatedStatus": "ready",
144+
"lastGeneratedAt": "2026-03-27T10:18:00.000Z",
145+
"generated": {
146+
"elevator_pitch": "缓存、压缩和分级模型。",
147+
"full_answer_markdown": "通过 query cache、摘要压缩和模型分级路由可以显著降本。",
148+
"work_story": "RAGCompass 在重复查询上命中缓存后成本下降 37%。",
149+
"work_evidence_status": "adjacent",
150+
"follow_ups": ["缓存一致性怎么做?"],
151+
"missing_basics": []
152+
}
153+
}
154+
]
155+
}
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
{
2+
"id": "doc-guide-rag-playbook",
3+
"kind": "guide",
4+
"ext": "md",
5+
"path": "sources/documents/demo/rag-playbook.md",
6+
"relPath": "demo/rag-playbook.md",
7+
"sourceId": "demo-guide-source",
8+
"title": "RAG 架构与检索策略(Demo)",
9+
"updatedAt": "2026-03-27T09:30:00.000Z",
10+
"watchPath": null,
11+
"meta": {},
12+
"content": "# RAG 架构与检索策略\n\n## 架构总览\n采用 Query Rewrite + Hybrid Retrieval + Cross-Encoder Rerank + Citation Guardrail。\n\n## 召回策略\n第一阶段向量召回 80 条 + BM25 40 条,融合去重后进入重排。\n\n## Chunk 方案\n按语义段 + 结构标题双切片,窗口 420 token,重叠 80 token。",
13+
"sections": [
14+
{
15+
"anchor": "rag-arch-overview",
16+
"heading": "架构总览",
17+
"level": 2,
18+
"startLine": 3,
19+
"endLine": 6,
20+
"knowledgeHitCount": 2,
21+
"content": "采用 Query Rewrite + Hybrid Retrieval + Cross-Encoder Rerank + Citation Guardrail。",
22+
"relatedQuestions": [
23+
{
24+
"id": "demo-q-1",
25+
"text": "为什么选择 RAG 而不是直接微调?",
26+
"displayText": "为什么选择 RAG 而不是直接微调?",
27+
"difficulty": "medium",
28+
"score": 0.93,
29+
"questionType": "system",
30+
"translatedText": "为什么选择 RAG 而不是直接微调?",
31+
"isRevisited": false,
32+
"generatedCount": 1,
33+
"generatedStatus": "ready",
34+
"lastGeneratedAt": "2026-03-27T10:00:00.000Z",
35+
"generated": {
36+
"elevator_pitch": "知识更新快时优先 RAG。",
37+
"full_answer_markdown": "RAG 在可追溯性、更新速度和成本上更适合业务知识域。",
38+
"work_story": "RAGCompass 每日增量入库,不需要反复重训。",
39+
"work_evidence_status": "direct",
40+
"follow_ups": ["何时切微调?", "怎么控召回噪声?"],
41+
"missing_basics": []
42+
}
43+
}
44+
]
45+
},
46+
{
47+
"anchor": "retrieval-strategy",
48+
"heading": "召回策略",
49+
"level": 2,
50+
"startLine": 8,
51+
"endLine": 11,
52+
"knowledgeHitCount": 3,
53+
"content": "第一阶段向量召回 80 条 + BM25 40 条,融合去重后进入重排。",
54+
"relatedQuestions": [
55+
{
56+
"id": "demo-q-4",
57+
"text": "召回链路怎么兼顾延迟和覆盖率?",
58+
"displayText": "召回链路怎么兼顾延迟和覆盖率?",
59+
"difficulty": "hard",
60+
"score": 0.95,
61+
"questionType": "retrieval",
62+
"translatedText": "召回链路怎么兼顾延迟和覆盖率?",
63+
"isRevisited": false,
64+
"generatedCount": 1,
65+
"generatedStatus": "ready",
66+
"lastGeneratedAt": "2026-03-27T10:06:00.000Z",
67+
"generated": {
68+
"elevator_pitch": "两阶段召回与动态 topk。",
69+
"full_answer_markdown": "先扩召回保覆盖,再用重排和阈值裁剪控制时延。",
70+
"work_story": "我们在 RAGCompass 对不同 query 长度动态调整 topk。",
71+
"work_evidence_status": "direct",
72+
"follow_ups": ["峰值时怎么退化?", "重排慢了怎么办?"],
73+
"missing_basics": []
74+
}
75+
}
76+
]
77+
},
78+
{
79+
"anchor": "chunking-strategy",
80+
"heading": "Chunk 方案",
81+
"level": 2,
82+
"startLine": 13,
83+
"endLine": 16,
84+
"knowledgeHitCount": 2,
85+
"content": "按语义段 + 结构标题双切片,窗口 420 token,重叠 80 token。",
86+
"relatedQuestions": [
87+
{
88+
"id": "demo-q-5",
89+
"text": "Chunk 策略怎么做,如何避免 lost-in-the-middle?",
90+
"displayText": "Chunk 策略怎么做,如何避免 lost-in-the-middle?",
91+
"difficulty": "medium",
92+
"score": 0.91,
93+
"questionType": "retrieval",
94+
"translatedText": "Chunk 策略怎么做,如何避免 lost-in-the-middle?",
95+
"isRevisited": false,
96+
"generatedCount": 1,
97+
"generatedStatus": "ready",
98+
"lastGeneratedAt": "2026-03-27T10:08:00.000Z",
99+
"generated": {
100+
"elevator_pitch": "结构化切片 + 位置重排。",
101+
"full_answer_markdown": "采用语义切片并给首尾片段加权,降低中段信息被忽视的问题。",
102+
"work_story": "RAGCompass 在召回后会做位置校正重排。",
103+
"work_evidence_status": "adjacent",
104+
"follow_ups": ["重叠比例如何选?", "多语言文档怎么切?"],
105+
"missing_basics": []
106+
}
107+
}
108+
]
109+
}
110+
],
111+
"looseRelatedQuestions": []
112+
}

0 commit comments

Comments
 (0)