犀牛鸟 2026 研究笔记 estelledc.github.io

Ch37: 五平台 RAG 对照实验——同一 corpus 横向评测

Part 9 终章 · 前置:Ch33–Ch36 + Ch20 Benchmark Lab

结论先行大师不站队单个平台——用 同一套 lab corpus + queries-smoke-20.jsonl + 统一 LLM,在 WeKnora / Dify / RAGFlow / FastGPT / AnythingLLM 上跑 smoke,结果填入 results-smoke-template.md。这是选型与 PR 论证的 最低成本可复现实验;禁止写「X 全面最好」,只写 场景化赢家(A 组精确、D 组表格、C 组多跳等)。


一、日常类比

五平台对照像 同一份考卷五所学校联考:题目(query)、教材(corpus)、阅卷标准(expect 字段)固定,才能说「A 校数学强、B 校语文强」。换 corpus 或换 LLM 却不记录,等于换考卷却比较总分——结论无效。


二、Commit / 版本 Pin 说明

实验前填 results-smoke-template.md 元数据表:

平台 Pin 建议
WeKnora git rev-parse HEAD
Dify Docker 0.15.x 或 clone 日 2026-06
RAGFlow compose 镜像 tag + commit
FastGPT main @ 2026-06 commit
AnythingLLM master @ 2026-06 commit
LLM(统一) 例 DeepSeek-chat,五平台同一 API Key

Corpus 版本固定:lab/corpus/ v0.1(三篇 MD,见下表)。


三、Lab 资产目录地图

路径 用途
lab/corpus/weknora-arch.md 三路检索、RRF、Agentic(B/C/T 组)
lab/corpus/parse-pitfalls.md DISPIMG、HTML 表(D 组)
lab/corpus/faq-version-conflict.md 8 vs 10 库时效冲突(A3)
lab/queries-smoke-20.jsonl 20 条分组 query(A–E + X/M/T)
lab/results-smoke-template.md ✓/✗ 填表 + 200 字结论
lab/README.md 30 min 最小 smoke 步骤

benchmark/smoke-10.jsonl 关系:10 条走 RAGAS 脚本回归;20 条走 五平台横向——corpus 中 relevant_doc_ids 对齐。


四、一条具体调用链(以 WeKnora 跑 A1 为例)

固定 corpus 已 ingest 到知识库 kb-lab-v01

用户输入「错误码 E1042 是什么意思?」  # queries-smoke-20.jsonl id=A1
  → internal/handler/chat_handler.go              # POST /chat/query
  → internal/service/chat_service.go                # Answer()
  → internal/service/retrieval_service.go           # HybridSearch
  → internal/infrastructure/retrieval/bm25.go       # 精确路命中 E1042
  → internal/infrastructure/retrieval/vector.go
  → internal/infrastructure/retrieval/graph.go      # PMI(C 组才关键)
  → internal/infrastructure/retrieval/rrf.go        # 融合
  → internal/infrastructure/rerank/...              # 复合 Rerank
  → internal/infrastructure/llm/client.go           # 生成(统一 DeepSeek)

其他平台见 Ch33–Ch36 各章调用链。同 query、不同链,结果才可比。


五、实验分组与 grep 辅助

类型 条数建议 预期差异点
A 精确错误码/参数 ≥4 BM25 / 关键词路
B 概念改写 ≥4 向量语义
C 多跳关系 ≥4 WeKnora 三路/图谱
D 表格/解析 ≥4 RAGFlow DeepDoc
E FAQ 口语 ≥4 FastGPT QA 索引
X/M/T 对抗/跨语言/长文 各 ≥1 鲁棒与成本
jq -r '.id + " " + .group' lab/queries-smoke-20.jsonl
rg 'E1042|DISPIMG|向量库' lab/corpus/

六、结果表示例(仅 WeKnora,其余平台待填)

摘自 results-smoke-template.md示范行只填 WeKnora 的 A1、D3

query_id WeKnora Dify RAGFlow FastGPT AnythingLLM 备注
A1         BM25 命中错误码(示例)
D3         parse 过滤 DISPIMG(示例)

图例:✓ · ✗ · △ · 空=未测。完整 smoke 见 lab/README.md(A3/X1/M1)。200 字结论必填,骨架见 results-smoke-template.md


七、动手练习(45–60 分钟)

时段 任务
0–10 min Fork/clone lab/corpus/ 三文件,五平台各建空知识库
10–25 min WeKnora ingest 全套 corpus,跑 A1、D3 人工判 ✓/✗
25–40 min 任选 第二平台(建议 RAGFlow)同 corpus ingest,只复跑 A1、D3
40–60 min 复制 results-smoke-template.md,填元数据 + A1/D3 示例 + 100 字结论

Cases:D3→case-1785;D 组→case-1725;A3→faq-version-conflict.md


章末自检


延伸阅读