什么时候用
先判断任务是否合适
- 需要对一个科研问题生成基于真实论文片段和编号引用的综述性答案
- 已有大量论文 PDF 或文本,想建立本地可检索的文献证据库
- 需要对已生成的答案事后逐句插入缺失的引用标记
- 需要让系统自我审查初始答案的覆盖缺口并补充检索和改写
先准备什么
材料越清楚,结果越有用
- •研究问题或查询列表
- •论文语料或已有候选上下文(ctxs)
- •Semantic Scholar API 密钥(如需在线补充检索)
- •GPU 环境(如需加载本地 OpenScholar-8B 模型)
- •候选论文的标题、摘要和正文片段
它会怎样推进
从材料到可以检查的结果
- 01
准备候选论文池
从离线索引、Semantic Scholar 或补充检索获取候选论文的标题和正文片段
- 02
重排与筛选
用 cross-encoder 对候选段落按相关性重排,可叠加引用次数加权
- 03
约束引用生成答案
将前 N 个论文片段格式化为编号参考文献,让模型基于这些片段生成带引用的答案
- 04
反馈与改写
可选让模型审查初稿答案,生成改进建议并补充检索新文献后改写答案
- 05
事后引用归因
对生成答案中未带引用的陈述逐句检查,在确认被片段支持时才插入引用编号
第一次这样开始
把仓库地址直接交给 AI
先让 AI 说明环境和风险,再完成最小安装验证。跑通以后,再把自己的真实材料放进去。
第一次直接复制
帮我安装这个库:https://github.com/AkariAsai/OpenScholar 安装前先告诉我需要什么环境,安装后帮我跑通一个最小示例。
结果出来后
先看这些检查点
- 答案中的引用编号是否都能回溯到具体的论文片段
- 事后归因插入的引用是否被模型强行插入弱支持陈述中
- cross-encoder 重排分数与引用次数加权是否合理(引用次数不等于证据质量)
- 反馈改写后的答案是否保留了原答案中正确的内容
常见误区
这些判断仍由你负责
- 把引用次数高的论文等同于强证据——引用次数只是影响力信号,不能替代原文内容检查
- 让事后引用归因和生成时证据处于同一模型调用中,导致无法区分“原支持”和“补引用的推测”
- 依赖 Semantic Scholar 或 peS2o 在线服务但未配置 API 密钥——部分路径会在启动阶段因缺环境变量直接失败
技术依据
查看能力拆解、验证范围与来源
技术依据
查看能力拆解、验证范围与来源
- 01
OpenScholar训练入口与模型产物路径
把 OpenScholar 的模型产物来源登记出来:embedding model 用 peS2o 继续训练 Contriever,reranker 用 FlagEmbedding 训练 BGE reranker,generator 用 OSTrainData 和修改版 torchtune 训练 Llama 3.1 8B。
- 02
RAG证据排序与引文约束生成
把 query 和候选 ctxs 转成带编号 references 的提示词,按可选 cross-encoder 重排、引用数归一加权、每篇论文片段上限和任务模板生成科研回答,并把输出、初稿、成本和耗时写回结果文件。
- 03
peS2o大规模索引构建与离线搜索
把 peS2o 论文语料切成分片 passages,生成检索向量,构建 FAISS 或 BM25 索引,再按 query 批量检索 top-k passages,并把检索结果写回评测数据。
- 04
事后引用归因插入
在答案已经生成后,逐句或逐段找出未带引用的陈述,把陈述和 references 一起交给模型,要求只在被 passages 支持时插入引用编号,再把替换后的答案写回 item["output"]。
| 能力 | 主要输入 | 主要输出 | 人工检查 |
|---|---|---|---|
OpenScholar训练入口与模型产物路径源码已核对 |
|
|
|
RAG证据排序与引文约束生成源码已核对 |
|
|
|
peS2o大规模索引构建与离线搜索源码已核对 |
|
|
|
事后引用归因插入源码已核对 |
|
|
|
反馈驱动答案改写与补充检索源码已核对 |
|
|
|
多源论文候选补充与上下文标准化源码已核对 |
|
|
|
处理机制
- 01
科研RAG对象与状态链路
OpenScholar 的多个能力围绕同一条对象链路运行:query 进入候选上下文,候选上下文变成 references,references 和答案在反馈、改写和引用归因中继续被读写。这个横向机制解释能力卡之间共享的对象、状态变化和断点。
已核对范围
- 读取 README 的 embedding、reranker 和 generator training 说明
- 读取 training/README.md、training/pyproject.toml 和 llama31 LoRA 配置
- 读取 lorafinetunedistributed.py 的 recipe 状态、checkpoint、optimizer、dataset 和 dataloader setup
- 读取 README 的 standard RAG、Retriever+Reranker 和 proprietary LM 示例
- 读取 run.py 的 CLI 参数、模型装载和 OpenScholar.run 调用
- 读取 src/openscholar.py 的重排、topn、生成和输出字段
- 读取 retriever README 和 buildpes2oindex.md 的索引构建、搜索和服务说明
- 读取 retriever/ric/mainric.py 的任务开关
仍待核对
- 未下载 OSTrainData 或 Meta Llama 权重
- 未运行 torchtune 或 torchrun
- 未验证 OpenScholar-8B 训练数据格式
- 未验证 reranker 训练数据格式
- 未加载 OpenScholar/Llama-3.1OpenScholar-8B
- 未加载 OpenScholar/OpenScholarReranker
- 未调用 OpenAI、Together 或 Anyscale
- 未验证生成答案的引用正确性
读取版本
0e9b8fb912273d3dae39e593da86e4f6d3bf8de1许可
Apache-2.0
最近核对
内容 2026-06-16
Stars 2026-07-11