| 层级 | 作用 | 例子 |
|---|---|---|
| 模式层 | 定义类和关系 | Material、Process、Property |
| 实例层 | 存储具体事实 | Sample_001、316L、620 MPa |
模式层示例:
Material --hasComposition--> Composition
Process --hasParameter--> ProcessParameter
Material --hasProperty--> Property
实例层示例:
Sample_001 --hasProperty--> UTS_620MPa
RDF 的核心思想是用主语、谓语、宾语构成图。
subjectpredicateobject
材料示例:
Sample_001 hasMaterial 316L
Sample_001 processedBy SLM
SLM hasParameter LaserPower
LaserPower hasValue 250W
| 维度 | 关系数据库 | 图数据库 |
|---|---|---|
| 核心结构 | 表 | 节点与边 |
| 优势 | 规范表格、事务管理 | 关系查询、路径分析 |
| 典型查询 | 筛选、连接、聚合 | 邻居、路径、子图 |
| 材料应用 | 成分—性能表 | 成分—工艺—组织—性能网络 |
二者可以共存:结构化数值表适合关系库,复杂关联知识适合图数据库。
确定应用问题
↓
设计本体与数据模式
↓
抽取实体、关系、属性
↓
实体消歧与单位统一
↓
图谱入库
↓
查询、推理、可视化
↓
人工审核与版本更新
原始文本:
250 W 激光功率下,316L 不锈钢样品的熔池更深,抗拉强度达到 620 MPa。
可能抽取为:
| 类型 | 实体 |
|---|---|
| 材料 | 316L 不锈钢 |
| 工艺参数 | 激光功率 250 W |
| 组织/几何 | 熔池深度 |
| 性能 | 抗拉强度 620 MPa |
从同一句话中可以抽取:
(激光功率, affects, 熔池深度)
(316L不锈钢, hasProperty, 抗拉强度)
(样品, hasProcessParameter, 250W)
但需要注意:
同一概念可能有多种写法:
| 表达 | 可能统一为 |
|---|---|
| 316L、SS316L、AISI 316L | 316L stainless steel |
| UTS、ultimate tensile strength | 抗拉强度 |
| LPBF、SLM、PBF-LB/M | 激光粉末床熔融 |
| γ 相、奥氏体、austenite | Austenite |
材料属性必须记录单位和测试条件。
| 属性 | 不完整写法 | 规范写法 |
|---|---|---|
| 强度 | 620 | 620 MPa,室温拉伸 |
| 温度 | 900 | 900 °C,保温 1 h |
| 成分 | Cr 18 | Cr 18 wt.% |
| 速度 | 900 | 900 mm/s |
问题:哪些工艺参数会影响材料强度?
Strength
↑ affectedBy
Microstructure
↑ affectedBy
CoolingRate
↑ affectedBy
LaserPower, ScanSpeed, LayerThickness
查询结果不仅给出实体列表,还能给出路径。
这比普通关键词搜索更适合回答“影响链条”类问题。
若图谱中有:
LaserPower affects MeltPoolTemperature
MeltPoolTemperature affects CoolingRate
CoolingRate affects DendriteArmSpacing
DendriteArmSpacing affects Strength
则可形成候选推理链:
LaserPower → MeltPoolTemperature → CoolingRate → DendriteArmSpacing → Strength
规则示例:
(x,isA,AusteniticStainlessSteel)(x,contains,Cr)⇒(x,hasCorrosionResistance,High)
该规则必须限定条件:
因此,实际系统常采用:
知识图谱 + 向量检索 + 关系数据库 + 大语言模型
知识图谱适合结构化关系。
但大量材料知识存在于:
本节讨论如何把文本转化为向量,并进行语义检索。
关键词检索关注字面匹配。
优点:
局限:
材料例子:查询“激光粉末床熔融”时,可能漏掉“LPBF”“PBF-LB/M”“SLM”。
词袋模型把文本表示为词频向量。
xd=[c1,c2,⋯,cm]
其中:
优点是简单,缺点是忽略词序和上下文语义。
TF-IDF 用于提高“有区分度词语”的权重。
tfidf(t,d)=tf(t,d)⋅idf(t)
idf(t)=log1+ntN
其中:
常见词权重低,特征词权重高。
BM25 是经典稀疏检索方法。
核心思想:
简化表达:
score(q,d)=t∈q∑idf(t)⋅f(t,d)
BM25 适合关键词明确的技术文档检索。
文本嵌入将文本映射为连续向量:
z=fθ(text)∈Rp
语义相近的文本在向量空间中距离更近。
示例:
“激光粉末床熔融”
“LPBF”
“selective laser melting”
这些表达的字面形式不同,但可能具有相近嵌入向量。
向量空间中的方向可表示语义。
文本 A:316L laser powder bed fusion tensile strength
文本 B:SLM stainless steel mechanical properties
文本 C:XRD peak fitting of alumina powder
A 和 B 在语义空间中应更接近。
常用相似度指标为余弦相似度:
cos(x,y)=∥x∥2∥y∥2x⋅y
取值范围通常为 [−1,1]。
| 指标 | 关注点 | 适用情况 |
|---|---|---|
| 欧氏距离 | 向量之间的绝对距离 | 数值尺度有意义时 |
| 余弦相似度 | 向量方向 | 文本嵌入、语义检索 |
| 点积 | 方向与长度共同作用 | 归一化或模型指定时 |
在很多文本检索任务中,向量方向比向量长度更重要。
向量数据库负责存储和检索嵌入向量。
文档片段 → 嵌入向量 → 向量库
用户问题 → 嵌入向量 → 相似性搜索 → 相关片段
它通常提供:
仅有向量不够,还必须保留元数据。
| 元数据 | 作用 |
|---|---|
| 文献题名 | 便于溯源 |
| 作者年份 | 识别来源可靠性 |
| 页码 | 精确定位证据 |
| 材料体系 | 支持过滤 |
| 数据类型 | 文本、表格、图注区分 |
| 可信等级 | 区分论文、笔记、未审核记录 |
当向量数量很大时,逐一计算相似度成本较高。
近似最近邻检索目标是快速找到近似最相似的向量。
精确检索:更准,但慢
近似检索:稍有误差,但快
常见索引思想包括:
| 类型 | 表示 | 优势 | 风险 |
|---|---|---|---|
| 稀疏检索 | 关键词、TF-IDF、BM25 | 精确术语好 | 同义表达漏检 |
| 稠密检索 | 嵌入向量 | 语义匹配好 | 可能检索到语义近但事实错的内容 |
| 混合检索 | 稀疏 + 稠密 | 兼顾术语与语义 | 系统复杂度高 |
材料术语强、同义表达多,适合使用混合检索。
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
texts = [
"316L stainless steel fabricated by LPBF shows high strength.",
"Austenite is the dominant phase in 316L steel.",
"XRD patterns are used for phase identification."
]
query = "LPBF 316L strength"
vec = TfidfVectorizer()
X = vec.fit_transform(texts)
q = vec.transform([query])
score = cosine_similarity(q, X).ravel()
print(score.argsort()[::-1])
向量检索返回的是“相关片段”,不是最终结论。
需要进一步判断:
RAG 即 Retrieval-Augmented Generation。
基本思想:
先检索外部知识,再让大模型基于检索证据生成回答。
它适合解决:
| 维度 | RAG | 微调 |
|---|---|---|
| 核心方式 | 检索外部知识作为上下文 | 改变模型参数 |
| 更新成本 | 更新知识库即可 | 通常需要重新训练 |
| 溯源能力 | 较强,可引用片段 | 较弱,知识隐含在参数中 |
| 适合场景 | 文献问答、规程查询 | 风格适配、任务格式学习 |
| 主要风险 | 检索错误、上下文不足 | 遗忘、过拟合、成本高 |
多数课程级知识库优先采用 RAG。
原始文档
↓ 解析
文本、表格、图注
↓ 切分
知识片段 chunks
↓ 嵌入
向量表示
↓ 入库
向量数据库 + 元数据
入库阶段决定“系统知道哪些资料”。
用户问题
↓ 问题改写或扩展
查询向量
↓ 检索 top-k 片段
候选证据
↓ 重排
高质量证据
↓ 构造提示词
LLM 基于证据回答
↓ 引用与核验
最终答案
问答阶段决定“系统如何使用资料”。
材料文献 PDF 通常包含:
解析难点:
切分目标:让每个片段既足够短,又保留完整语义。
常用策略:
| 策略 | 说明 | 适用场景 |
|---|---|---|
| 固定长度 | 按 token 或字符切分 | 快速原型 |
| 段落切分 | 按自然段 | 文献正文 |
| 标题层级切分 | 按章节结构 | 综述、教材 |
| 表格单元切分 | 保留表头与单位 | 材料性能表 |
| 滑动窗口 | 保留上下文重叠 | 连续叙述文本 |
设切分长度为 L,重叠长度为 O。
chunk 1: token 1 ... token L
chunk 2: token L-O+1 ... token 2L-O
影响:
材料文献建议根据段落、表格和图注结构切分,而不是只按字数切分。
每个片段 ci 经过嵌入模型得到向量:
zi=fθ(ci)
向量库保存:
chunk_id
embedding
source_title
page
section
material_system
data_type
quality_label
检索时,问题也被映射为向量:
zq=fθ(q)
系统选取与问题最相似的前 k 个片段:
Ck=TopKis(zq,zi)
其中 s 可为余弦相似度。
选择 k 时需要平衡:
材料问题常常需要先过滤再检索。
例:只检索 Fe-C 合金、相场模拟、2020 年以后的文献:
material_system = Fe-C
method = phase-field
year >= 2020
再进行向量相似性搜索。
初检索可能返回较多候选片段。
重排模型进一步判断:
问题 + 候选片段 → 相关性分数
重排的作用:
缺点:增加计算成本。
RAG 的提示词通常包含:
系统角色:你是材料科学助教。
任务:只根据给定证据回答问题。
约束:不得编造引用;证据不足时说明不足。
证据:片段1、片段2、片段3。
输出格式:结论、依据、局限、参考来源。
问题:......
生成阶段不是自由发挥,而是证据约束生成。
可要求输出:
示例输出结构:
结论:...
依据:[S1], [S3]
局限:证据未给出热处理时间。
文档集合
↓
切分与向量化
↓
相似性检索
↓
把相关片段放入提示词
↓
模型生成回答
↓
显示来源
这一闭环可以用于:
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
chunks = [
"316L LPBF samples often contain cellular substructures.",
"Cooling rate affects dendrite arm spacing in solidification.",
"XRD can identify austenite and ferrite phases."
]
query = "How does cooling rate affect dendrite spacing?"
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(chunks)
q = vectorizer.transform([query])
rank = cosine_similarity(q, X).ravel().argsort()[::-1]
for i in rank[:2]:
print(i, chunks[i])
def build_prompt(question, retrieved_chunks):
evidence = "\n".join(
f"[S{i+1}] {text}" for i, text in enumerate(retrieved_chunks)
)
return f"""
你是材料科学课程助教。只能根据证据回答。
若证据不足,请明确说明不能确定。
证据:
{evidence}
问题:{question}
请按:结论、依据、局限 三部分回答。
"""
该函数不调用大模型,但展示了 RAG 的核心提示结构。
| 错误 | 表现 | 可能原因 |
|---|---|---|
| 检索缺失 | 关键证据未进入上下文 | 切分差、嵌入差、top-k太小 |
| 检索污染 | 无关片段被使用 | 向量相似但事实不相关 |
| 引用错配 | 结论引用了不支持的片段 | 生成阶段失控 |
| 条件丢失 | 忽略温度、成分、工艺范围 | chunk不完整 |
| 过度概括 | 把单一论文结论推广到全部材料 | 缺少适用边界 |
| 参数 | 影响 | 调节建议 |
|---|---|---|
| chunk size | 语义完整性与检索粒度 | 从段落级开始 |
| overlap | 跨片段信息保留 | 对长段落适度重叠 |
| top-k | 证据数量 | 问题复杂时增大 |
| embedding model | 语义匹配质量 | 优先选择领域适配模型 |
| reranker | 前排证据质量 | 对高可靠问答建议使用 |
| prompt template | 生成约束 | 明确证据、格式、拒答规则 |
知识库不仅是“文献问答机器人”。
在材料科研中,它还应支持:
| 对象 | 内容 | 检索需求 |
|---|---|---|
| 论文正文 | 方法、结果、讨论 | 问答与总结 |
| 表格 | 成分、性能、参数 | 精确查询与比较 |
| 图注 | 图像、谱图解释 | 图文关联 |
| 参考文献 | 证据链 | 追踪源头 |
| 补充材料 | 原始数据 | 复现与核验 |
| 专利 | 合成路线、工艺窗口 | 技术路线分析 |
| 字段 | 说明 |
|---|---|
| source_id | 文献或记录唯一编号 |
| title | 标题 |
| year | 年份 |
| material_system | 材料体系 |
| process | 加工工艺 |
| property_type | 性能类型 |
| page | 页码 |
| evidence_type | 正文、表格、图注、实验记录 |
| reliability_level | 证据可靠等级 |
| 模块 | 字段示例 |
|---|---|
| 样品信息 | 样品编号、材料、批次、制备日期 |
| 工艺参数 | 温度、时间、压力、功率、速度 |
| 测试条件 | 仪器、载荷、温度、环境介质 |
| 结果数据 | 强度、硬度、相分数、图像路径 |
| 异常记录 | 设备异常、样品污染、数据缺失 |
| 负责人 | 操作者、审核人、版本号 |
结构化记录有助于未来机器学习和 RAG 检索。
材料模拟数据应保存:
文献库 实验库 计算库 图像/谱图库
↓ ↓ ↓ ↓
解析与清洗 → 元数据标准化 → 向量化与图谱化
↓
混合检索层:关键词 + 向量 + 图谱 + 元数据过滤
↓
RAG问答层:证据约束生成
↓
人工审核、引用核验、版本管理
| 问题类型 | 推荐技术 |
|---|---|
| 查找某论文具体结论 | RAG向量检索 |
| 查找某材料的性能表 | 结构化数据库 |
| 查找成分—工艺—性能链条 | 知识图谱 |
| 查找相关论文并总结 | RAG + 元数据过滤 |
| 比较多篇文献结论 | RAG + 表格抽取 + 人工审核 |
实际系统不应只依赖一种检索方法。
目标问题:
高氮钢增材制造过程中,氮含量、冷却速率和相组成之间有什么关系?
知识库应包含:
可组织的知识对象:
示例问题:
包晶反应相场模型中,如何定义三相点附近的横向位移?
| 权限层级 | 访问内容 |
|---|---|
| 公开 | 已发表论文、公开课件、公开数据 |
| 课程内部 | 教学资料、作业答案、案例代码 |
| 课题组内部 | 实验记录、组会材料、未发表结果 |
| 项目内部 | 申报书、合同、敏感数据 |
| 管理员 | 用户、版本、日志、备份 |
知识库中的内容需要版本控制。
| 对象 | 版本需求 |
|---|---|
| 文献条目 | 记录导入时间和解析版本 |
| 实验记录 | 不覆盖原始记录 |
| 数据表 | 记录清洗规则 |
| 代码 | 记录 Git commit |
| RAG提示词 | 记录模板版本 |
| 答案日志 | 记录问题、证据、回答和审核结果 |
材料知识库需要遵循:
这部分内容与课程第10章可信 AI 和数据安全直接衔接。
RAG 的核心承诺是:
回答应当可以追踪到证据。
但“有引用”不等于“引用正确”。
本节讨论如何建立回答可靠性评价流程。
一个可靠回答应至少包含:
示例:
结论:冷却速率升高通常会减小枝晶间距。
依据:[S2, p.5] 给出一次枝晶间距与冷却速率的关系。
局限:证据仅针对 Al-Cu 合金。
| 维度 | 问题 |
|---|---|
| 相关性 | 检索片段是否与问题相关? |
| 忠实性 | 回答是否只使用证据支持的内容? |
| 完整性 | 是否遗漏关键条件或反例? |
| 可追踪性 | 是否能定位到原始来源? |
| 一致性 | 多个证据是否互相矛盾? |
| 可复核性 | 人类能否快速复查原文? |
忠实性关注回答是否被证据支持。
可形式化理解为:
Faithfulness=NclaimsNsupported
其中:
相关性关注检索片段是否回答用户问题。
Relevance=NretrievedNrelevant
常见问题:
相关性差会导致生成阶段“看似有证据、实则无依据”。
完整性关注回答是否覆盖关键方面。
材料问题常见遗漏:
引用核验至少检查:
| 检查项 | 说明 |
|---|---|
| 来源是否存在 | 文献、页码、DOI是否真实 |
| 内容是否对应 | 引用片段是否支持该结论 |
| 术语是否一致 | 材料、相、性能是否对应 |
| 数值是否准确 | 单位、有效数字、误差是否正确 |
| 条件是否保留 | 温度、工艺、测试条件是否完整 |
| 类型 | 表现 |
|---|---|
| 伪引用 | 编造不存在的论文、DOI 或页码 |
| 错引 | 引用真实文献但文献不支持结论 |
| 断章取义 | 忽略作者限定条件 |
| 数据转录错误 | 数值、单位或材料名称错误 |
| 二次传播错误 | 引用综述转述但未查原始文献 |
课堂训练:要求学生随机抽查 2 条引用,回到原文核验。
RAG回答
↓
自动检查:是否有来源、是否有证据编号
↓
人工检查:证据是否支持结论
↓
专业判断:条件是否完整、是否过度外推
↓
修订答案
↓
记录审核结果和版本
| 项目 | 合格标准 | 评分 |
|---|---|---|
| 问题理解 | 回答对象明确 | 0-2 |
| 证据相关 | 引用片段与问题相关 | 0-2 |
| 结论忠实 | 无无证据断言 | 0-2 |
| 条件完整 | 保留材料、工艺、测试条件 | 0-2 |
| 引用准确 | 可定位到原文 | 0-2 |
| 总分 | 满分 10 分 |
构建评估集时应包含:
不合格回答:
该材料一定具有优异耐蚀性。
合格回答:
根据给定证据,只能确认该文献报告了室温拉伸性能;
证据中没有腐蚀实验、介质环境和极化曲线,
因此不能判断其耐蚀性。
这些原则可用于课程项目、科研助手和实验室知识平台。
领域知识
├─ 规则与本体 → 知识图谱
├─ 文献与记录 → 文本切分 → 嵌入向量
├─ 表格与数据 → 结构化数据库
↓
混合检索
↓
证据片段 + 元数据
↓
大模型生成
↓
引用核验 + 人工审核
TF-IDF:
tfidf(t,d)=tf(t,d)⋅log1+ntN
余弦相似度:
cos(x,y)=∥x∥2∥y∥2x⋅y
Top-k 检索:
Ck=TopKis(zq,zi)
| 概念 | 解决的问题 |
|---|---|
| 知识表示 | 如何让知识可计算 |
| 专家系统 | 如何用规则推理 |
| 知识图谱 | 如何组织实体关系 |
| 文本嵌入 | 如何表达语义相似性 |
| 向量数据库 | 如何大规模检索相似片段 |
| RAG | 如何让模型基于外部知识回答 |
| 证据追踪 | 如何核验回答可靠性 |
问题:
“激光功率如何影响 316L 增材制造件的显微组织和强度?”
讨论:
模型回答:
316L在LPBF后一定具有更高强度,因为快速冷却形成细晶组织。
需要指出的问题:
任务目标:
用 Python 构建一个小型材料文献片段检索器。
基本要求:
source、page、text;TfidfVectorizer 建立向量表示;from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.metrics.pairwise import cosine_similarity
records = [
{"source": "Paper A", "page": 3, "text": "..."},
{"source": "Paper B", "page": 5, "text": "..."},
]
query = "What affects dendrite arm spacing in solidification?"
texts = [r["text"] for r in records]
vec = TfidfVectorizer()
X = vec.fit_transform(texts)
q = vec.transform([query])
scores = cosine_similarity(q, X).ravel()
rank = scores.argsort()[::-1]
for idx in rank[:3]:
r = records[idx]
print(scores[idx], r["source"], r["page"], r["text"])
可选扩展:
Fe-C、Al-Cu、316L。text、table、caption。[source, page]。评分关注:
知识库、知识图谱和 RAG 的共同目标不是制造“更会说”的模型,
而是建立一个更可追踪、更可验证、更能服务科研积累的知识系统。
在材料科学中,可靠知识系统应满足:
来源清楚、条件完整、证据可查、结论克制、人工审核
下一章将进入 AI 代理、主动学习与贝叶斯优化。
阅读建议:先理解“知识如何组织”,再学习具体框架和工具。
本章关键词:
建议统一命名:
| 类型 | 命名示例 |
|---|---|
| 样品 | S_2026_001 |
| 文献 | PAPER_2024_ActaMater_001 |
| 图像 | IMG_S_2026_001_SEM_5000X |
| 谱图 | XRD_S_2026_001_20260607 |
| 代码 | SCRIPT_PF_POST_001 |
规范命名可减少后续实体对齐成本。
id:
title:
author:
year:
material_system:
process:
property:
page:
text:
evidence_type:
quality_label:
这组字段可以作为课程作业的最小数据结构。
你是材料科学课程助教。
你只能依据给定证据回答。
若证据不足,请明确说明不能判断。
回答必须包含:结论、依据、局限。
每条依据必须引用证据编号。
该模板体现了证据约束、拒答机制和结构化输出。
(entity_1, relation, entity_2, source, page)
示例:
(ScanSpeed, affects, CoolingRate, Paper_A, 5)
(CoolingRate, affects, CellSpacing, Paper_A, 6)
加入来源与页码后,三元组才具有可核验性。
失败表现:
改进方向:增强检索、重排、提示约束和人工审核。
项目题目:构建“材料显微组织文献问答知识库”。
最低要求:
进阶要求:加入知识图谱或图像图注检索。