ARTIFACT // TINKER-RAG-EVAL-SAMPLE.SH (SHELL)
本地文档问答 (RAG) 可下载测试样例生成与引用核验脚本 (tinker-rag-eval-sample.sh)
一键生成包含精确条款编号、参数表与干扰项的本地测试文档样例,并自动执行引用溯源核验与上下文截断测试。
[核心实测结论 / TL;DR]本配置包「本地文档问答 (RAG) 可下载测试样例生成与引用核验脚本」(文件名:tinker-rag-eval-sample.sh,格式:SHELL)是 Tinker AI 实测工坊配套指南《local-rag-citation-and-failure-cases》的参数化生产模板。支持在本地浏览器实时定制 问答生成模型 Tag (RAG_CHAT_MODEL=qwen2.5:14b-instruct-q4_K_M)、本地向量嵌入模型 (EMBED_MODEL=bge-m3)、问答上下文窗口 (num_ctx) (RAG_NUM_CTX=8192) 等 3 项核心变量,默认遵循 127.0.0.1 回环绑定与最小权限规范。
01 // HOMELAB本地 AI / HomeLab· 验证日期:2026-10-23
查看全部 42 套配置附件 →tinker-rag-eval-sample.sh
查看配套实测指南 →本地文档问答 (RAG) 可下载测试样例生成与引用核验脚本
一键生成包含精确条款编号、参数表与干扰项的本地测试文档样例,并自动执行引用溯源核验与上下文截断测试。
参数化定制变量 (Variables — 自动保存在本地浏览器)
UTF-8 编码 · 零延迟实时编译
#!/usr/bin/env bash
# Tinker AI — Local Document Q&A (RAG) Sample Corpus & Citation Check (Guide #4)
set -euo pipefail
CHAT_MODEL="qwen2.5:14b-instruct-q4_K_M"
EMBED_MODEL="bge-m3"
CTX="8192"
cat << 'EOF' > ./sample-homelab-sla-policy.md
# Tinker HomeLab Storage & Backup Policy (Rev 2026.10)
## Section 3.1: RPO & Snapshot Frequency
All SQLite application databases (webui.db, n8n.sqlite) MUST be snapshotted every 6 hours using zstd compression. Maximum Recovery Point Objective (RPO) is strictly 6 hours.
## Section 3.2: Cold Storage Retention Trap
Daily archives are retained on local NVMe for 14 days, and replicated to offline NAS cold storage for 90 days. NOTE: Temporary cache directories (/root/.ollama/models/blobs) are EXCLUDED from daily tar snapshots.
## Section 4.4: Emergency Rollback Threshold
If post-upgrade p95 token latency degrades by more than 28% at num_ctx=8192, operators must revert to the previous pinned container digest within 15 minutes.
EOF
echo "=== Generated ./sample-homelab-sla-policy.md ==="
echo "=== Testing Citation Accuracy & Context Retention on $CHAT_MODEL (num_ctx=$CTX) ==="
DOC_CONTENT=$(cat ./sample-homelab-sla-policy.md)
curl -sS http://127.0.0.1:11434/api/generate -d "{
\"model\": \"$CHAT_MODEL\",
\"stream\": false,
\"options\": { \"num_ctx\": $CTX, \"temperature\": 0 },
\"prompt\": $(python3 -c 'import json,sys; print(json.dumps("Answer ONLY using the document below and cite the exact Section number. Question: Are Ollama model blobs included in daily tar snapshots, and what is the p95 latency rollback threshold?
Document:
" + sys.stdin.read()))' < ./sample-homelab-sla-policy.md)
}" | python3 -c 'import sys,json; print(json.load(sys.stdin).get("response",""))'
PARAMETER SPECIFICATION // 参数化变量规范说明表
「tinker-rag-eval-sample.sh」可定制环境变量与默认值说明
本配置模板(SHELL 格式)支持 3 项运行时参数注入,所有替换均在本地浏览器内完成。
| 模板占位符 | 参数用途说明 | 安全默认值 | 填写示例 |
|---|---|---|---|
{{RAG_CHAT_MODEL}} | 问答生成模型 Tag | qwen2.5:14b-instruct-q4_K_M | qwen2.5:14b-instruct-q4_K_M |
{{EMBED_MODEL}} | 本地向量嵌入模型 | bge-m3 | bge-m3 |
{{RAG_NUM_CTX}} | 问答上下文窗口 (num_ctx) | 8192 | 8192 |
PAIRED HARDWARE MANIFEST // 配套实测环境与边界记录
配套指南《本地文档问答 (RAG):可下载测试样例、引用检查和三大典型失败案例》验证基线
实测硬件与操作系统 (Hardware & OS)
Mac M3 Pro 36GB 与 RTX 4070 12GB · Ollama + Open WebUI 本地混合检索实测
锁定软件栈与模型版本 (Pinned Versions)
Ollama 0.5.7Open WebUI v0.5.10bge-m3:567mqwen2.5:14b-instruct-q4_K_M
离线与安全边界 (100% 本地向量化 + 本地模型生成)
文档切片向量化(`bge-m3`)与引文生成(`qwen2.5:14b`)全程在本地设备完成,敏感文档零外传。
已知限制与失败边界 (Known Limits)
- 失败案例 1(上下文静默截断):当检索出的 5 个片段连同系统提示词超过 3,500 tokens,而模型仍处于 Ollama 默认 `num_ctx=2048` 时,服务端会从头部静默丢弃前几个核心片段——导致你明明看到检索命中了,模型却回答“文档中未提及”。
- 失败案例 2(双栏 PDF 与跨页表格串行):默认 PDF 解析器按水平行扫描双栏文档,会将左栏半句话与右栏半句话强行拼在一起,导致参数表格张冠李戴。
- 失败案例 3(小模型条款编号幻觉):7B 以下模型在较高 temperature 下常编造看似合理的章节号(如把第 3.2 节写成第 2.4 节)。
DEPLOYMENT CHECKLIST // 配置落地核验步骤
部署 tinker-rag-eval-sample.sh 后的 3 步验收清单
- 已运行可下载的测试样例脚本,核验模型能否准确引用第 3.2 节与第 4.4 节条款。
- 已将问答模型的 `num_ctx` 设为 ≥ 8192 且 `temperature = 0`,消除头部切片静默截断。
- 已开启混合检索(`BM25 + Vector`),确保专有名词、错误码与条款编号精确召回。