曾给客户交付同类知识库问答项目,已按保密协议删除源数据,此样板为简化能力的干净复刻。功能:问答页(答案下标注防线层级、检索最高分、引用来源、召回明细)、后台(知识CRUD+可见标签权限、用户角色禁用改密、KEY阈值设置、25条越狱回归一键跑)。流程:提问→政策拦截→检索阈值→KEY门槛→LLM作答→输出校验→带引用返回,范围外秒拒,黑产意图政策层直接拦。
Next.js全栈+SQLite独立开发。RAG架构,retriever为TF-IDF余弦(中英混合分词+标题双倍权重,阈值0.2,预留向量升级位),34条知识(24中文+OWASP Top10):10条闲聊最高分≤0.135秒拒、10条范围内最低0.251全过。
本系统针对企业知识问答场景的核心安全诉求——"模型不乱说、无关的人看不到",构建"防注入纵深防御+认证授权审计"双体系,所有安全决策均由代码层强制执行,不依赖模型自觉。
一、防提示词注入与越狱(纵深防御,五层联防)
系统防范提示词注入(Prompt Injection)与越狱(Jailbreak)攻击,包括直接注入(用户输入夹带"忽略之前指令")、间接注入(外部抓取网页暗藏指令——检索内容默认视为非可信数据,只当素材、不当指令执行)、目标劫持、指令覆盖与角色扮演三类手法。
政策硬拦截:15 类攻击意图由代码层确定性规则直接拦截(含勒索制作、钓鱼伪造、绕过验证、拿 shell、免杀、拖库、入侵等),命中后输出标准拒答,不进入检索、不调用大模型;模型输出再经 5 条硬模式复检,防止绕过后吐出攻击代码。
检索阈值门禁:检索最高分低于阈值直接拒答,大模型见不到问题就没有幻觉和被带偏的机会。
权限隔离:用户仅能检出本人权限范围内的知识,无权内容连召回都进不去,从机制上杜绝跨权限套取。
系统提示词约束:只准用提供的资料回答,资料不足用标准话术拒答,用户输入中的任何指令覆盖话术一律声明无效,并配拒答示例。
输出合规校验:回答必须标注本次检索的真实引用(伪造引用即拒答),关键词覆盖率过低即拒答。
系统内置 27 组对抗测试用例(含指令覆盖、角色扮演、间接注入、引申追问四类),版本变更后可一键回归验证。
二、企业内部鉴权(认证+授权+审计)
身份认证:账号密码登录,密码加盐哈希存储、明文从不落盘;登录报错统一口径,防账号枚举;会话由服务端签发、经 httpOnly Cookie 承载,前端不可读取;登录、注册、问答三级限流,防爆破与滥用。
细粒度授权:基于角色(RBAC)+用户标签(ABAC)双维管控,知识条目可设置可见角色与可见标签,默认拒绝、按需放行;离职调岗即时禁用账号,改密即踢掉该用户全部会话。
操作审计:每轮问答留存提问人、时间、问答内容、引用出处与拦截层级,全链路可追溯备查。
一句话承诺:注入攻击要么死在代码层,要么被锁死在"只能引用原文"里;合伙人的文件助理搜不到,离职的人一键踢下线,答不上来就明确拒答——每句话都有出处,每次访问都有记录。