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

Ch21: WeKnora 源码走读导言——克隆、目录地图与调试环境

Part 8: WeKnora 源码走读(大师路径 · 阶段 D) 前置:Ch06 架构 + Ch14 动手实验 后续:Ch22 一次问答的完整旅程 系列目录:README · 大师成长路径


结论先行:成为 RAG 大师的最后一段路是 读得懂生产级代码。本章不教算法,教你怎么在 WeKnora 仓库里 不迷路——克隆、目录地图、一次 grep 定位、本地断点该打在哪。

一、你在 Part 8 要达成什么

读完 Part 8(Ch21–Ch32)后 标志
收到 issue 能判断改哪条管线 10 分钟内定位目录
能画出 query → answer 调用链 白板可讲
能独立提检索/解析/ API 类 PR 有测试 + 描述

Part 8 假设你已读完:Ch01–Ch06(概念+架构)、Ch14(环境跑通)。否则请先补 Ch14


二、克隆与本地环境(15 分钟)

git clone https://github.com/Tencent/WeKnora.git
cd WeKnora
cp .env.example .env
# 填入 LLM / Embedding Key;本地可 Ollama + DeepSeek API

docker compose up -d    # 推荐首次验证
# 或 make dev-start(以仓库 README 为准)

大师习惯:fork 到自己账号,分支命名 feat/your-topic,PR 前先 git fetch upstream && git rebase upstream/main


三、目录地图(按「管线」而非字母排序)

WeKnora/
├── cmd/                    # 进程入口(API server、worker…)
├── internal/
│   ├── handler/            # HTTP 层:参数校验、状态码
│   ├── application/
│   │   ├── service/        # 业务编排:一次「问答」的逻辑在这里串起来
│   │   └── repository/     # 数据库读写
│   ├── infrastructure/
│   │   └── docparser/      # Go 侧文档解析、chunk(与 Python 衔接)
│   └── types/              # 接口定义、DTO
├── pkg/ 或 internal/ 下     # 检索、融合、分块等(版本间可能在 pkg/ 或 internal/)
│   ├── eventmanager/       # 事件总线
│   ├── retriever/          # BM25 / vector / graph
│   ├── fusion/             # RRF
│   ├── rerank/             # 复合 Rerank
│   └── chunker/            # 自适应分块
├── docreader/              # Python 微服务:Excel/PDF/OCR 等
├── frontend/               # Vue 3 + Pinia
└── docker/                 # 部署

注意:开源项目目录会 refactor。本章给出 职能地图;若路径不一致,用 grep -r "RRF\|ReciprocalRank" . 找真实包名。


四、三条「grep 定位法」(issue 来了先用这个)

现象 第一条 grep 第二条
检索结果不对 HybridSearch\|Retrieve\|QueryReceived RRF\|Fuse
文档切坏了 Chunk\|chunker docparser\|docreader
API 400/500 handler/ + 路由名 service/ 同函数名
前端不刷新 stores/ + API 名 case-1761 模式

示例:

cd WeKnora
rg -l "ReciprocalRank\|RRF" --glob '*.go'
rg -l "ChunkSize\|chunker" --glob '*.go'
rg -l "DISPIMG\|excel" docreader/

五、读源码的推荐顺序(Part 8 章节对应)

主题 读什么
Ch21 本章 地图 + 环境
Ch22 请求旅程 handler → service → 检索入口
Ch23 事件总线 EventManager、Plugin 注册
Ch24 三路检索 BM25、Vector 并行
Ch25 融合与 Rerank RRF k=60、三信号
Ch26 图谱 PMI Graph retriever
Ch27 分块 adaptive chunker
Ch28 Python docreader 解析边界
Ch29 Go docparser HTML/MD 与 chunk 保护
Ch30 向量库适配器 10+ backend
Ch31 Wiki 自维护 inspector
Ch32 前端 + MCP 对话 UI、Tool 暴露

六、调试技巧

  1. 日志:启动 API 时开 debug;检索请求带 trace_id(若有)串联三路。
  2. 最小复现:单知识库 + 单文档 + 单 query,排除 Agent/联网干扰。
  3. 对比实验:改代码前后用 Ch20 Benchmark 跑 10 条。
  4. 读 PRweknora-practice 15 案 = 真实改动锚点。

章末 · 大师自检


延伸阅读