BodySense 知识来源、RAG 摄入与媒体资产架构

把 Thought Forest、开放医学证据、专业索引、视频转写与 GIF/图片资产组织成 BodySense 可治理的 RAG 数据源和媒体存储架构。

#type / synthesis #status / growing #tech / ai #tech / architecture #life / health #resource / bodysense #resource / rehabilitation

[!info] related notes

BodySense 知识来源、RAG 摄入与媒体资产架构

核心结论

BodySense 不需要先拥有一个“包罗万象的医学知识库”才开始做 RAG。更现实的路线是:

小而可信的 seed corpus
→ 规范化来源、许可、版本与可信度
→ 用真实 Diagnosis / Treatment EvidenceGap 驱动 targeted retrieval
→ 持续补知识缺口

真正要避免的是:

把网上能抓到的文本全部向量化
→ similarity 高就当成医学事实

对于 BodySense,knowledge acquisition 也是 governance 的一部分

同时,文字知识与 GIF / 图片 / 视频片段应当彻底分离:

Git / Thought Forest
= Markdown、manifest、source metadata、知识图谱

Object Storage
= GIF、WebP、图片、视频、PDF 等大对象

这样 Git clone 默认就是轻量文字仓库;媒体按需下载或通过 CDN / 对象存储 URL 读取。

先纠正一个术语:视频转文字是 ASR / STT

以前“下载 B 站视频 → 音频转文字”的流程,本质是:

video
→ audio extraction
→ ASR / STT
→ transcript
→ information extraction

不是 TTS。TTS 是 Text-to-Speech,方向相反。

这类视频转写可以继续保留,但应该进入低可信度来源层,而不是直接成为 Diagnosis authority。

Thought Forest 可以作为 BodySense 的 seed corpus

当前 Thought Forest 已经有:

因此 Thought Forest 不是“没有知识”,而是还缺:

  1. source authority 分层;
  2. license / commercial-use 标记;
  3. machine-readable RAG export;
  4. claim / evidence 粒度;
  5. media asset manifest;
  6. 与 BodySense Evidence provenance 的版本绑定。

不建议 BodySense 直接读取整个私人 Vault

更好的边界:

Thought Forest
      ↓ allowlist / export
health + rehabilitation notes
      ↓ normalized snapshot
BodySense Knowledge Ingestion

Postgres / pgvector

原因:

  • Vault 中存在大量与 BodySense 无关内容;
  • 私人笔记不应该天然进入产品运行时;
  • 需要形成可 replay 的知识 snapshot;
  • BodySense 应依赖稳定的数据契约,而不是 Obsidian 文件结构。

来源分层:不要把所有知识看成同一级

推荐至少分四层。

Tier A:可批量摄入的开放 / 明确授权专业资料

目标:真正进入 BodySense 长期知识库。

优先考虑:

  • PMC Open Access Subset 中许可明确允许目标使用方式的文章;
  • NCBI Bookshelf 中 public domain 或明确可复用的具体出版物;
  • 其他明确 CC BY / CC0 / compatible license 的医学、解剖、康复资料;
  • 合法可复用的政府公开资料。

注意:

“网页可以免费阅读”

“允许批量抓取并重新分发 / 商用”

必须逐源记录 license。

Tier B:高质量专业发现层

例如:

  • PEDro;
  • Physiopedia;
  • AAOS OrthoInfo;
  • NICE / 专业 guideline 网站;
  • Physiotutors;
  • E3 Rehab。

这一层很适合:

发现主题 / guideline / original paper
→ 保存 metadata + canonical URL
→ 必要时人工筛选或 query-time fetch

默认不要把整个站镜像到自己的 RAG 中。

尤其 Physiopedia 自身也强调它通常属于 secondary source,应尽量追到 primary source。

Tier C:Thought Forest 自有知识

这是非常适合 Demo 和个人版 BodySense 的来源,因为内容是自己的,组织也已经围绕真实学习和使用场景形成。

但需要明确:

personal curated note
≠ peer-reviewed clinical evidence

可以给它高“相关性”,但不能因此给高“临床权威性”。

Tier D:视频 / 博客 / UP 主内容

包括:

Bilibili / YouTube
→ ASR transcript
→ structured extraction

可用于:

  • 发现动作;
  • 发现术语;
  • 发现可能的 mechanism;
  • 生成搜索 query;
  • 丰富低风险教育内容。

不建议单独用于:

  • red flag;
  • diagnosis rule;
  • contraindication;
  • 高风险 Treatment authorization。

一个实际可用的 Source Contract

建议每个知识源至少记录:

source_id: pmc-xxxx
source_type: journal_article
title: ...
canonical_url: ...
authority_tier: A
publisher: ...
license: CC-BY-4.0
commercial_use: true
redistribution: true
retrieved_at: 2026-08-23
source_version: ...
content_sha256: ...
review_status: imported
language: en

重要字段不是为了“整理好看”,而是为了以后能回答:

这条 Evidence 来自哪里?
当时用的是哪个版本?
现在是否仍允许使用?
能否在产品中展示原文或媒体?

Chunk 不能只有 text + embedding

BodySense 的 chunk 至少应携带:

chunk_id: ...
source_id: ...
body_region: [hip, pelvis]
knowledge_kind: contraindication
condition: ...
symptom: ...
intervention: ...
red_flag: false
authority_tier: A
license: CC-BY-4.0
source_version: ...

这样 Targeted RAG 才能做:

EvidenceGap
→ source / body-region / kind filter
→ vector / lexical retrieval
→ admissibility
→ grounding

而不是只有“相似度最高的五段文字”。

Demo 阶段应该多大

第一版不需要百万文档。

更实际的目标:

10~20 个高频 body region / symptom family
×
每个主题 5~15 个高质量 source / curated note

也就是先做到约几十到几百个可靠 document,配合几百到几千个 chunks。

它已经足够测试:

  • targeted RAG;
  • citation;
  • source filtering;
  • evidence provenance;
  • grounding;
  • unresolved evidence gap;
  • Diagnosis / Treatment demo。

RAG 的 demo 价值来自检索行为和证据链真实,而不是知识库体积大。

优先知识主题

针对 BodySense 当前定位,优先顺序可以是:

  1. anatomy / biomechanics 基础;
  2. symptom + body region;
  3. differential hypothesis;
  4. assessment / clinical test;
  5. red flags / escalation;
  6. intervention / exercise;
  7. dosage / progression / regression;
  8. contraindication / stop condition;
  9. prognosis / outcome monitoring。

其中 5、8 的权威来源要求应高于普通动作说明。

外部数据获取的推荐方式

PMC Open Access Subset

这是非常适合做程序化 corpus 的来源。

官方提供:

  • FTP;
  • Cloud Service;
  • OAI-PMH;
  • E-Utilities;
  • BioC API;
  • OA Web Service API。

而且 Open Access Subset 明确按许可分组:

Commercial Use Allowed
Non-Commercial Use Only
Other

如果 BodySense 未来可能商业化,第一阶段最好只摄入:

CC0 / CC BY / CC BY-SA / 其他明确允许 commercial use 的内容

NCBI Bookshelf

可用于:

  • anatomy;
  • pathophysiology;
  • clinical reference;
  • government / public-domain manuals。

但 Bookshelf 中不同出版物版权不同,不能看到 NCBI 域名就默认可复制。应读取每个 title 的 copyright / permission。

另外不要爬站式批量抓网页;使用官方 OAI / FTP 等允许的批量渠道。

PEDro

PEDro 是很好的 evidence discovery layer:

  • randomized controlled trials;
  • systematic reviews;
  • clinical practice guidelines;
  • trial quality ratings。

适合作为:

clinical question
→ PEDro 找高质量 record
→ 定位 guideline / systematic review / primary study
→ 再按原始来源许可摄入全文或元数据

不应简单理解成“PEDro 页面全部下载下来就是知识库”。

Physiopedia

很适合:

  • 快速建立 topic map;
  • 找 assessment 名称;
  • 找 primary references;
  • 找可能的 exercise / media。

但要保留页面与媒体各自 license;不要假设一个站点内所有图片都具有同一种授权。

图片、GIF、视频应该从 Git 中分离

推荐 North Star:

thought-forest / BodySense Git
├── markdown
├── source manifests
├── media manifests
└── scripts

Object Storage
├── exercise/*.webp
├── exercise/*.gif
├── anatomy/*.webp
├── video/*.mp4
└── source-pdf/*.pdf

Git 中只保存:

asset_id: exercise-wall-slide-v1
kind: exercise-demo
object_key: exercise/wall-slide/v1/demo.webp
mime: image/webp
sha256: ...
bytes: 183204
source_url: ...
license: CC-BY-SA-4.0
attribution: ...
exercise_id: wall-slide
body_region: [shoulder, scapula]

不要在每篇 Markdown 中硬编码 Cloudflare / Backblaze 的完整 URL。

优先引用:

asset://exercise-wall-slide-v1

或 stable asset ID。

运行时由 Asset Resolver 转换成:

https://media.example.com/exercise/wall-slide/v1/demo.webp

这样未来换对象存储不需要改所有笔记。

为什么优先 Cloudflare R2

对于 Thought Forest / BodySense 的 GIF、图片、PDF、小视频,R2 的特征非常适合:

  • S3-compatible;
  • 适合脚本上传 / 同步;
  • 可绑定自有域名;
  • 标准存储存在免费额度;
  • Internet egress 不收费;
  • Git 仓库不会膨胀。

Backblaze B2 也可以作为替代方案。

不把 Git LFS 当首选运行时媒体库

Git LFS 能解决 Git history 被大二进制污染的问题,并且可以做到 clone 时不下载 LFS object。

例如概念上:

GIT_LFS_SKIP_SMUDGE=1 git clone ...

以后再执行 LFS pull。

但对于产品媒体:

Object Storage + CDN / custom domain

通常比:

Git LFS + bandwidth quota

更自然。

Git LFS 更适合“这些二进制本质上仍然属于源码版本的一部分”;R2 更适合“这些对象是产品运行时资源”。

Git clone 默认只拉文字

如果媒体完全不进入 Git,那么天然实现:

git clone thought-forest
→ 只得到 Markdown + metadata + manifests

需要媒体时:

pnpm assets:pull

或者:

pnpm assets:pull --scope rehabilitation
pnpm assets:pull --exercise wall-slide

下载到:

.cache/media/

并写入 .gitignore

这个模型比把图片放 Git 后再想办法 sparse checkout 更简单。

媒体来源:Wikimedia Commons 很适合做第一批

Wikimedia Commons 上的大多数媒体具有可复用许可或属于 public domain,但每个文件的 license / attribution requirement 都可能不同。

因此自动导入时必须同时抓:

  • author;
  • canonical file page;
  • license;
  • attribution;
  • original file URL;
  • sha256;
  • local/object-storage key。

不要只下载二进制文件而丢掉 license provenance。

对于动作演示,优先顺序可以是:

自己制作 / AI 生成且权利清晰
→ Wikimedia Commons / 明确开放许可媒体
→ 获得明确授权的专业媒体
→ 仅外链、不可复制的第三方媒体

即使技术上可以,长期也有问题:

  • URL 失效;
  • 来源站限流;
  • 对方更换文件;
  • 无法绑定 immutable version;
  • 用户隐私会暴露给第三方域;
  • license / attribution 容易丢失。

对于允许再分发的媒体,更稳妥的是:

下载
→ verify license
→ hash
→ 上传自己的 object storage
→ 保存 original source + attribution

Thought Forest 到 BodySense 的推荐数据流

Thought Forest source notes

        ├─ curated health notes
        ├─ resource links
        └─ media manifests

Knowledge Exporter

Normalized Knowledge Snapshot
        ├─ source.jsonl
        ├─ chunks.jsonl
        └─ assets.jsonl

BodySense Ingestion

PostgreSQL + pgvector

EvidenceGap-driven Targeted RAG

Evidence + provenance

这个 snapshot 应有版本:

knowledge_snapshot_id

历史 run 记录:

knowledge_snapshot_id
source_id
source_version
chunk_id
asset_id(若使用媒体)

这样才可以 replay。

一条知识不要同时承担“用户事实”和“外部事实”

例如 Thought Forest 中:

“骨盆旋转可能与髋控制相关”

进入 BodySense 后仍然是:

External / General Knowledge

不能因为检索到了这条知识,就推导为:

“当前这个用户存在某种髋控制缺陷”

这继续遵守 BodySense Targeted RAG 与 Evidence Provenance 的不变量:

population / general knowledge
≠ individual observed fact

第一阶段最现实的实施范围

Phase 1:Demo Corpus

  • Thought Forest 康复 / 解剖笔记作为 seed;
  • 手工筛 20~50 篇可信 external sources;
  • 建 source/license metadata;
  • 先覆盖 10 个左右高频问题;
  • 做 50~150 条可测试 evidence documents。

Phase 2:开放证据自动摄入

  • PMC OA API / FTP;
  • topic query;
  • license allowlist;
  • dedupe;
  • parse XML;
  • chunk + metadata;
  • embedding;
  • snapshot。

Phase 3:媒体资产

  • R2 bucket;
  • media manifest;
  • Asset Resolver;
  • selective pull;
  • license / attribution UI。

Phase 4:Evidence QA

  • source hierarchy;
  • review status;
  • stale source policy;
  • conflicting evidence;
  • grounding eval;
  • golden cases。

最终心智模型

Huge corpus
≠ good RAG

Free-to-read
≠ free-to-ingest

Retrieved
≠ admissible
≠ sufficient

Personal note
≠ clinical evidence

Git repository
≠ media object store

Media URL
≠ asset identity

Knowledge today
≠ historical knowledge snapshot

BodySense 第一阶段最值得做的不是继续“搜集大量文本”,而是把已经拥有的 Thought Forest 内容和少量高质量开放资料,变成有来源、有许可、有版本、有可信度、有 Evidence provenance 的小型真实知识库

创建于 2026/8/23 更新于 2026/8/23