news 2026/10/28 11:57:11

标签图谱先证明引用,再交给模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
标签图谱先证明引用,再交给模型

把笔记画成会漂浮的节点,确实容易让知识库显得聪明。但两张卡片挨得近,不代表它们互相支持;一条力导向连线,也不会自动成为引用依据。若这张图后面接 AI 回答,我会先解决资料从哪里来的问题。

图谱只负责可见关系

这个小例子使用人工标签,不计算向量相似度。查询与笔记共享多少标签,就给多少分;只拿前两条作为上下文,并把稳定 ID 放在每段原文前。标签图适合浏览,检索排序适合筛选,回答里的事实则仍需要对应来源。

OpenAI 在 10 月 22 日介绍的 Decisions API展示了有界任务的方向。这里没有调用它,也不把标签匹配包装成语义理解;我希望先让确定性的选择过程可回放,再考虑模型是否能改善表达。

引用 ID 也需要验收

下面的检查器只保证回答标出的 ID 来自选中的上下文。它不能判断一句话是否真的被原文支持:模型完全可能引用 A,却写出 A 没有说过的结论。因此产品界面应允许展开引用片段,把原文和推断分开,并为没有资料的问题保留“无法回答”。

输入笔记也可能包含指令式文字。被检索出来的内容是资料,不是运行命令的授权;不要把其中的“忽略前文”“下载脚本”交给执行器。本例只拼接文本,不执行任何资料内容。

运行node context.js,可验证排序稳定、无命中返回空、未知引用被拒绝。数据为教学笔记,没有真实模型、向量数据库或浏览器图形测试。若以后加入向量召回,应继续保留检索 ID、截取规则和原文,而不是只保存一张漂亮的关系图。

可独立运行的核心例子

const notes=[ {id:'A',tags:['export','svg'],text:'导出与预览应使用同一份SVG。'}, {id:'B',tags:['export','backup'],text:'用户应能下载可迁移的备份。'}, {id:'C',tags:['color'],text:'配色命名是提案,不是像素统计。'} ]; function retrieve(notes,tags,limit=2) { if(!Number.isInteger(limit)||limit<1)throw Error('limit无效'); const query=new Set(tags),ids=new Set(); return notes.map((n,index)=>{ if(!/^[A-Z0-9_-]+$/.test(n.id)||ids.has(n.id))throw Error('ID重复或不合法'); ids.add(n.id);return {...n,index,score:[...new Set(n.tags)].filter(t=>query.has(t)).length}; }).filter(n=>n.score>0).sort((a,b)=>b.score-a.score||a.index-b.index).slice(0,limit); } function context(rows){return rows.map(n=>`[source:${n.id}]\n${n.text}`).join('\n\n');} function checkCitations(answer,rows) { const allowed=new Set(rows.map(n=>n.id)); const cited=[...answer.matchAll(/\[source:([A-Z0-9_-]+)\]/g)].map(m=>m[1]); if(!cited.length||cited.some(id=>!allowed.has(id)))throw Error('引用未在上下文中'); return {ids:cited,semanticSupport:'仍需逐句人工检查'}; } const selected=retrieve(notes,['export']); if(selected.map(n=>n.id).join()!=='A,B'||retrieve(notes,['unknown']).length)throw Error('召回错误'); let rejected=false;try{checkCitations('结论[source:C]',selected);}catch{rejected=true;} if(!rejected)throw Error('不应接受未选来源'); console.log(context(selected));console.log(checkCitations('导出共用数据[source:A]',selected));

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/28 11:57:00

Linux epoll原理与高并发实战指南

1. 什么是epoll&#xff1f;它到底解决了什么问题“高级IO之epoll模型”这个标题里&#xff0c;“高级IO”不是玄学&#xff0c;而是指在高并发网络服务场景下&#xff0c;传统IO模型已经扛不住了。你可能写过用select或poll监听几十个socket的简单服务器&#xff0c;但当连接数…

作者头像 李华
网站建设 2026/10/28 11:54:41

PySpark与pandas版本兼容:解决iteritems报错

1. 这个报错到底卡在哪&#xff1a;从一次真实踩坑说起第一次看到AttributeError: DataFrame object has no attribute iteritems这个报错&#xff0c;很多人会下意识以为是自己的数据有问题&#xff0c;或者 Spark 环境没装好。实际上&#xff0c;这个报错跟数据一点关系都没有…

作者头像 李华
网站建设 2026/10/28 11:54:40

Spark 读写 Greenplum 实战:从 JDBC 瓶颈到 Connector 高速写入调优

Spark 和 Greenplum 这两个东西放在一起&#xff0c;做过数据平台的人大概都有话说。Spark 擅长分布式计算&#xff0c;Greenplum 擅长 MPP 架构下的批量分析查询&#xff0c;两者配合的典型场景就是&#xff1a;上游用 Spark 做清洗、关联、聚合&#xff0c;下游把结果灌进 Gr…

作者头像 李华
网站建设 2026/10/28 11:54:21

营销技能不是清单,是解决问题的底层操作系统(打磨组合能力)

营销技能这个题目&#xff0c;乍一看特别大&#xff0c;什么都能往里装。我这些年带团队、做项目、看新人成长&#xff0c;最大的感受是&#xff1a;营销技能不是一个清单&#xff0c;而是一套能解决问题的底层操作系统。很多人学了一堆工具、报了一堆课&#xff0c;真到做方案…

作者头像 李华
网站建设 2026/10/28 11:54:11

C#流分析与DoesNotReturn特性详解

1. 流分析特性在C#中的重要性在C#开发中&#xff0c;编译器流分析&#xff08;Flow Analysis&#xff09;是一个经常被忽视但极其重要的特性。它允许编译器理解代码的执行路径和数据流&#xff0c;从而提供更智能的代码分析和优化。这种分析能力是现代IDE&#xff08;如Visual …

作者头像 李华
网站建设 2026/10/28 11:52:48

VMware Workstation 17 Pro 安装配置与性能优化指南

1. VMware Workstation 17 Pro 核心价值解析 VMware Workstation 17 Pro作为当前最成熟的x86虚拟化解决方案之一&#xff0c;其核心价值在于为开发者、测试人员和IT运维者提供了完整的本地虚拟化环境。不同于轻量级的VirtualBox&#xff0c;Workstation系列在性能隔离、硬件兼…

作者头像 李华