学习笔记 | 用大模型来判断文档是否敏感

让大模型识别文章是否包含敏感内容

技术AI

原创 阿飞 2025-03-09 22:54 北京

让大模型识别文章是否包含敏感内容

大模型发展如火如荼,我也一直在琢磨,这玩意除了日常知识问答和辅助写代码,还能对我的项目需求有啥助力。

最近,有一个做知识社区的 PM 找到我,说最近有人把一些项目文档、述职报告发在公开的社区里了,希望能有一些自动化发现和处理的方法。

这不就是瞌睡了就有枕头吗?用大模型做 这事儿再合适不过了。

我在自己的老 Mac 上装了 ollama,跑了 Deepseek r1 1.5b + nomic-embed-text,用 langchain 框架做实验。

踩坑点:每次执行新RAG任务却召回了老内容,怎么办?

第一次用来执行RAG 任务,发现当我在第一轮的 content 和 prompt 结束之后,再次提交新的 content 和 prompt,模型会召回上一次的content。问了claude 才知道,原来文件向量是持久化存在向量库里的,只要每次执行新任务时清理一遍,就不会发生召回前一次 content 的尴尬事了。

def store_in_chroma(doc_splits,clear_old=True):

try:

    if clear\_old and os.path.exists(DB\_DIR):

        import shutil

        shutil.rmtree(DB\_DIR)

            print(“已清除旧的向量数据库”)

    embedding\_function = OllamaEmbeddings(model=EMBEDDING\_MODEL,base\_url="[http://127.0.0.1:11434](http://127.0.0.1:11434)")

    vectorstore = Chroma.from\_documents(doc\_splits, embedding\_function, persist\_directory=DB\_DIR)

        print(“数据已成功存入 ChromaDB!”)

    return vectorstore

except Exception as e:

        print(f“存入 ChromaDB 失败: {e}”)

    return None

**关键点:**prompt 是关键,选对模型更是关键中的关键。

为了能让模型很好的理解我的意图,我努力地用结构化的语言描述自己的需求。

prompt = “”“

你是一个信息安全专家,负责识别文档中的敏感信息。

敏感内容识别规则:

1.包含了产品设计、安全要求、产品策略、技术架构设计的内容,是敏感信息;

2.包含了财务指标、产品定价的内容,是敏感信息;

3.包含了员工述职报告、日报、周报、项目进展、项目总结、工作规划、部门规划、团队运营计划的内容,是敏感信息;

4.品牌无关,只要包含了安全漏洞、安全事件、安全报告、安全规则、安全设计、安全策略的内容,都是敏感信息;

5.不符合 1-4 规则的内容,则不是敏感信息。

任务:

1、根据上述“敏感内容识别规则”,识别当前文本是否为敏感信息。

2、如果是敏感信息,最终结果直接用文本格式输出:“TRUE”即可。

3、如果不是敏感信息,最终结果直接用文本格式输出:“FALSE”即可。

注意:

我导入的是一篇完整的文章,你看到的“一”、“二”、“三”等汉字数字代表的是文章正文的章节,仅此而已。

“”“

我用从公司内网扒拉下来的10 篇文章做测试,发现自己本机模型的正确率只有 60%。

后来,我直接怼到了公司自研的一个大参数模型接口,也不用 RAG 了,把内容和问题都作为prompt 提交给模型,正确率竟然达到了 90%。

看来,小参数模型就是瞎玩玩,正经的生产任务还得是满血版。

稍微修改了一下 prompt。

prompt = f““”

你是一个信息安全专家,负责识别文档中的敏感信息。

敏感内容识别规则:

1.包含了产品设计、安全要求、产品策略、技术架构设计的内容,是敏感信息;

2.包含了财务指标、产品定价的内容,是敏感信息;

3.包含了员工述职报告、日报、周报、项目进展、项目总结、工作规划、部门规划、团队运营计划的内容,是敏感信息;

4.品牌无关,只要包含了安全漏洞、安全事件、安全报告、安全规则、安全设计、安全策略的内容,都是敏感信息;

5.不符合 1-4 规则的内容,则不是敏感信息。

任务:

1、根据上述“敏感内容识别规则”,识别当前文本是否为敏感信息。

2、如果是敏感信息,最终结果直接用文本格式输出:“TRUE”即可。

3、如果不是敏感信息,最终结果直接用文本格式输出:“FALSE”即可。

文档内容:

{content}

注意:

我导入的是一篇完整的文章,你看到的“一”、“二”、“三”等汉字数字代表的是文章正文的章节,仅此而已。

“”“

到了 90%我已经很满意了,再提高精度就是加大实验量,不断调整 prompt 的过程了。实验做到这个份上,已经可以作为一个正式的需求配合运营方案拿出来评审了。

又是进步的一天。


**作者:**阿飞 or 韭不黄,都是同一个人。十余年来一直混迹于信息安全行业,扛过设备,卖过服务,做过审计,查过黑客,反过欺诈,岁月神偷带走了我的苹果肌,留下了一肚子的瘫软,貌似我将要成为一个油腻的中年男人,不过依然对世界充满好奇,依然是一颗嫩绿的韭菜~图片

阅读原文

跳转微信打开