| --- |
| license: apache-2.0 |
| tasks: |
| - text-generation |
| domain: |
| - nlp |
| language: |
| - cn |
| tags: |
| - 中医 |
| - 黄帝内经 |
| - 杏核 |
| - TCM |
| --- |
| |
| # 杏核 Xinghe v1.2 |
|
|
| > 基于《黄帝内经》的中医推理模型 · 由 **Xinghe-TCM** 开发 |
|
|
| ## 模型简介 |
|
|
| 杏核(Xinghe)是一款专注中医的推理型语言模型。v1.2 由 Xinghe-TCM 在开源基座模型上,使用自建的《黄帝内经》高质量指令数据集微调而成。它扎根经文与临床,先在 `<think>` 中完成辨证推理,再给出平实、可落地的调养判断与方向。 |
|
|
| 与通用大模型不同,杏核不追求“无所不答”,而是把中医辨证这件事做扎实:说人话、有依据、守边界——只给临床可用的判断与调养方向,不开具体处方与剂量,也不做现代医学诊断。 |
|
|
| ## 主要特性 |
|
|
| - **经典扎根**:训练数据以《黄帝内经》经文与临床情景为核心,覆盖理论辨析、经文解读、概念对比、临床案例、纠错反例五类问答。 |
| - **显式推理**:采用 `<think>…</think>` 思维链,先辨证、后作答;最终输出为脱去内部符号的平实中文。 |
| - **平实可用**:回答不堆砌术语,落到起居、饮食、情志、调养方向等可操作的建议上。 |
| - **安全边界内建**:内建六条中医调养红线与“不开方、不诊断”约束(见下)。 |
| - **身份稳健**:即使调用时 system prompt 为空或被替换,模型仍能正确回答自身身份与版本。 |
| - **数据质量可控**:全量经红线过滤器校验(硬性违规为 0),统一中文标点(双引号、去除机械感破折号),优化分段可读性。 |
|
|
| ## 适用场景 |
|
|
| - 《黄帝内经》经文与概念的解读、辨析、对比 |
| - 中医辨证思路的梳理与学习辅助 |
| - 养生、起居、饮食、情志等调养方向的建议 |
| - 中医教学、科普与研究的参考 |
|
|
| ## 不适用场景(请勿用于) |
|
|
| - 急危重症的诊断或处置 |
| - 生成具体处方、药物与剂量 |
| - 替代执业医师的面诊与现代医学诊断 |
| - 任何需要即时医疗决策的临床场景 |
|
|
| ## 快速开始 |
|
|
| ### HuggingFace / Transformers |
|
|
| ```python |
| from transformers import AutoModelForCausalLM, AutoTokenizer |
| |
| model_id = "zsyjsld/Xinghe1.2-9B" # v1.2 仓库 |
| tokenizer = AutoTokenizer.from_pretrained(model_id) |
| model = AutoModelForCausalLM.from_pretrained( |
| model_id, torch_dtype="auto", device_map="auto" |
| ) |
| |
| system = ("你是杏核(Xinghe),由 Xinghe-TCM 开发的中医助手,当前版本 1.2。" |
| "你精研《黄帝内经》,答问扎根经文与临床,语言平实,只给临床可用的判断与调养方向;" |
| "不开具体处方与剂量,不做现代医学诊断。") |
| messages = [ |
| {"role": "system", "content": system}, # 可省略;留空亦能正常工作 |
| {"role": "user", "content": "什么是治未病?"}, |
| ] |
| text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) |
| inputs = tokenizer(text, return_tensors="pt").to(model.device) |
| outputs = model.generate(**inputs, max_new_tokens=1024, temperature=0.7) |
| print(tokenizer.decode(outputs[0][inputs.input_ids.shape[1]:], skip_special_tokens=True)) |
| ``` |
|
|
| ### ModelScope |
|
|
| ```python |
| from modelscope import AutoModelForCausalLM, AutoTokenizer |
| |
| model_id = "zsyjsld/Xinghe1.2-9B" # v1.2 仓库 |
| tokenizer = AutoTokenizer.from_pretrained(model_id) |
| model = AutoModelForCausalLM.from_pretrained( |
| model_id, torch_dtype="auto", device_map="auto" |
| ) |
| # 生成用法与上方 Transformers 示例一致 |
| ``` |
|
|
| > 模型输出通常包含 `<think>…</think>` 段落(辨证推理)与其后的正式回答。若只需最终答案,可在展示层去除 `<think>` 段。 |
|
|
| ## System Prompt 说明 |
|
|
| 推荐(但非必需)在调用时挂上以下 system prompt: |
|
|
| ```text |
| 你是杏核(Xinghe),由 Xinghe-TCM 开发的中医助手,当前版本 1.2。你精研《黄帝内经》,答问扎根经文与临床,语言平实,只给临床可用的判断与调养方向;不开具体处方与剂量,不做现代医学诊断。 |
| ``` |
|
|
| 模型在训练时见过“带该提示词”“换用其他提示词”“system prompt 为空”三种情况,因此**即使不设置 system prompt,也能保持身份与行为稳定**。 |
|
|
| ## 训练数据 |
|
|
| | 项 | 说明 | |
| | --- | --- | |
| | 规模 | 2009 条指令样本 | |
| | 领域数据 | 1820 条;五类各 364:理论辨析 / 经文解读 / 概念对比 / 临床案例 / 纠错反例 | |
| | 身份数据 | 189 条(63 种问法 × 空 / 身份 / 通用 三种 system prompt 条件) | |
| | 语料来源 | 《黄帝内经》经文与临床情景改写 | |
| | 字段 | `system`、`instruction`、`thinking`、`output`、`meta`(`meta` 仅作数据管理,不参与训练目标) | |
|
|
| **质量控制**:全量通过自研红线过滤器(硬性违规 0);输出统一中文双引号、去除机械破折号;较长回答做了分段处理以便阅读。 |
|
|
| ## 训练细节 |
|
|
| - **基座模型**:Qwen3.5-9B |
| - **微调方法**:QLoRA(4-bit 量化下的 LoRA)微调,训练完成后将 LoRA 权重合并回基座,导出为完整模型权重。 |
| - **结构调整**:合并时移除了 MTP(Multi-Token Prediction)层。 |
| - **训练硬件**:单张 NVIDIA GeForce RTX 3090(24GB 显存)。 |
|
|
| ## 量化与评测 |
|
|
| 基于三层评测方案,在 RTX 3090 上对 Xinghe 1.2-9B 的各量化版本进行了完整评测(评测集共 76 条,涵盖理论辨析、经文解读、概念对比、临床案例、纠错反例五大题型及多种临床陷阱)。 |
|
|
| ### Layer 1:PPL 困惑度(语言保真度) |
|
|
| | 版本 | 文件大小 | PPL | PPL 相对比值 | 推理延迟 | |
| | --- | --- | --- | --- | --- | |
| | **F16 (基线)** | 16.69 GB | 7.3869 | 1.0000 | 16.9s | |
| | **Q8_0** | 8.87 GB | 7.3931 | 1.0008 (+0.08%) | **6.5s** | |
| | **Q6_K** | 6.85 GB | 7.4848 | 1.0133 (+1.33%) | **5.9s** | |
| | **Q4_K_M** | 5.24 GB | 7.9485 | 1.0760 (+7.60%) | **5.1s** | |
|
|
| ### Layer 2:红线机检(双通道隔离完整性) |
|
|
| 对每个版本在 temp=0 下跑完全部评测集,拆出 output 通道做四类红线检查(A 符号 / B 黑话 / C 编号 / D 越权)。 |
|
|
| | 版本 | 红线泄漏率 | B 黑话 | A 符号 | C 编号 | D 越权 | |
| | --- | --- | --- | --- | --- | --- | |
| | **F16** | 15.8% | 11 | 0 | 1 | 0 | |
| | **Q8_0** | 15.8% | 12 | 0 | 0 | 0 | |
| | **Q6_K** | 21.1% | 16 | 0 | 0 | 0 | |
| | **Q4_K_M** | 19.7% | 13 | **1** ⚠️ | **1** ⚠️ | 0 | |
|
|
| ### Layer 3:LLM-as-judge 盲评 |
|
|
| 以 F16 为基准,对每个量化版本做位置随机化盲评(每版本 15 条,覆盖全部题型)。评审维度:经义正确性、红线合规、表达干净贴题。 |
|
|
| | 版本 | 候选胜 | F16 胜 | 平局 | 净胜负 | 候选红线 | |
| | --- | --- | --- | --- | --- | --- | |
| | **Q8_0** | 1 | 4 | 10 | -3 | 0 | |
| | **Q6_K** | 1 | 4 | 10 | -3 | 0 | |
| | **Q4_K_M** | 0 | 6 | 9 | **-6** | **1** ⚠️ | |
|
|
| ### 综合结论 |
|
|
| | 版本 | Layer 1 | Layer 2 | Layer 3 | 最终推荐 | |
| | --- | --- | --- | --- | --- | |
| | **Q8_0** | ✅ +0.08% | ✅ 同基线 | ✅ 噪声范围 | **🚀 首选部署** | |
| | **Q6_K** | ⚠️ +1.33% | ⚠️ 泄漏率升高 | ⚠️ 与Q8_0持平 | 备选 | |
| | **Q4_K_M** | ❌ +7.60% | ❌ A+C类泄漏 | ❌ 系统性变差 | ⛔ 不推荐 | |
| |
| - **Q8_0 几近无损**:PPL 上升仅 `+0.08%`,红线泄漏率与 F16 完全一致,盲评无系统性变差,推理速度提升近 3 倍,为首选部署版本。 |
| - **Q4_K_M 存在结构性损伤**:PPL 升高 `+7.60%`,盲评中首次出现 A 类符号(G)和 C 类编号(#123)从 thinking 泄漏至 output,表明 4-bit 量化对双通道隔离结构造成了物理损伤。 |
| |
| |
| ## 推理格式:`<think>` |
| |
| 模型遵循“先思考、后回答”的范式: |
| |
| - `<think>` 内是辨证推理过程,可能包含内部记法; |
| - `</think>` 之后是面向用户的正式回答,语言平实、不含内部符号与编号。 |
| |
| ## 安全与边界 |
| |
| **中医调养六条红线**(内建于训练目标): |
| |
| 1. **造势勿强断**——对正在“蓄势/造势”的病机,不强行截断。 |
| 2. **勿打地鼠**——不追着单一症状硬压,须顾及整体气机。 |
| 3. **勿逆正气**——顺应而非对抗人体正气。 |
| 4. **勿强退热**——不一味强行压制发热(尤其正邪相争之热)。 |
| 5. **胃气为先**——调养以顾护胃气、脾胃为本。 |
| 6. **正弱手轻**——正气虚弱时,干预宜轻不宜猛。 |
| |
| **硬性约束**:不开具体处方与剂量;不做现代医学诊断;遇急危重或不确定情形,建议尽快就医面诊。 |
| |
| ## 局限性 |
| |
| - 输出仅供学习与研究参考,**不构成医疗建议**。 |
| - 作为语言模型,可能出现事实错误或“幻觉”,对古文与方言的理解也可能有偏差。 |
| - 训练数据规模有限,覆盖面与深度仍在迭代中。 |
| - 尚未经过系统的临床验证与第三方评测。 |
| |
| ## 免责声明 |
| |
| > ⚠️ 本模型(杏核)为面向中医学习与研究的实验性工具。其全部输出**不构成医疗诊断、治疗或用药建议**,不能替代执业医师的面诊与专业判断。任何健康问题请咨询合格医疗机构;出现急危重症状请立即就医。使用本模型所产生的一切后果由使用者自行承担。 |
| |
| ## 版本历史 / 相关链接 |
| |
| - **v1(Xinghe1-9B)**:首个开源版本。 |
| - ModelScope:https://modelscope.cn/models/zsyjsld/Xinghe1-9B |
| - HuggingFace:https://huggingface.co/zsyjsld/Xinghe1-9B |
| - **v1.2(Xinghe1.2-9B,本版本)**:训练数据从 v1 的 400 余条扩充至 2009 条(领域 1820 + 身份 189),数据质量全面提升(全量红线复检硬性违规 0、输出统一中文双引号、去除机械感破折号、优化分段可读性);新增身份数据并对"空 / 替换 system prompt"做鲁棒化,模型整体输出质量显著提升。 |
| - ModelScope:https://modelscope.cn/models/zsyjsld/Xinghe1.2-9B |
| - HuggingFace:https://huggingface.co/zsyjsld/Xinghe1.2-9B |
| |
| ## 许可证 |
| |
| 本模型遵循其基座模型 Qwen3.5-9B 的开源许可证 **Apache-2.0**;请以基座模型仓库实际标注的许可证为准。 |
| |
| ## 引用 |
| |
| 如果本模型对你的研究或工作有帮助,欢迎引用: |
| |
| ```bibtex |
| @misc{xinghe2026, |
| title = {Xinghe: A Huangdi Neijing-grounded Traditional Chinese Medicine Reasoning Model}, |
| author = {Xinghe-TCM}, |
| year = {2026}, |
| howpublished = {\url{https://huggingface.co/zsyjsld/Xinghe1.2-9B}, \url{https://modelscope.cn/models/zsyjsld/Xinghe1.2-9B}} |
| } |
| ``` |
| |
| ## 致谢与联系 |
| |
| - 开发者:Xinghe-TCM |
| - 模型主页: |
| - HuggingFace:https://huggingface.co/zsyjsld/Xinghe1.2-9B |
| - ModelScope:https://modelscope.cn/models/zsyjsld/Xinghe1.2-9B |
| |