RAG 知识库使用公有大模型,如何实现数据脱敏?-- 自定义函数、私有小模型
本文探讨了在RAG场景下使用公有大模型时的数据脱敏方案。提出两种工程化解决方案:方案一通过自定义函数预定义字典替换敏感词,具有速度快、准确度高、成本低的优势,但维护复杂;方案二利用私有小模型动态识别和替换敏感信息,灵活性更高但返回速度较慢且准确度中等。两种方案均采用工作流编排方式实现,能够有效防止企业敏感数据被大模型厂商利用,同时保持语义完整性。实际应用中可根据对速度、准确度和灵活性的需求选择合适
背景:公有大模型以其优秀的泛化能力、低廉的价格获得非常多用户的青睐,但在RAG场景下,不可避免的会向大模型提交相关 chunk ,有些企业会担心提交的数据被当成训练数据集被大模型厂商利用、造成数据泄露。这里不讨论这种想法的重要程度和合理性,以工程化的方式来对提交给大模型的 chunk 进行脱敏处理。
方案一:自定义函数替换敏感数据
示例文本:
今天的主人公是大清帝国的CEO–乾隆皇帝(身份证号码 123456199001011234)。乾隆皇帝的一大爱好就是在文物字画上题诗,盖章。其实这一举动非常令人厌恶,因为这样就破坏了文物本身的整体美。比如有一幅画《富春山居图》,这幅画的空白都让乾隆皇帝占满了。他在画上写了很多首诗,还盖了很多方他的印,甚至连没有点墨的山也不放过。好在他视为珍宝的《富春山居图》是幅赝品,他的这次看走眼为后世留下了一幅“干净”的名作。乾隆皇帝的印章有八百多个,最大的和手掌一样大,两只手一起握都握不住。想必如果用它在画上盖印的话,肯定会非常影响画的美观。他一生共创作了四万多首诗,其中大部分都是在一些名人的字画上。就犹如现代视频中的弹幕,因为那些字画只要一翻开会发现乾隆皇帝提的字,如同密密麻麻的子弹一样。我们甚至可以称乾隆皇帝为弹幕的鼻祖了。但是,乾隆很多奇珍异宝、名人字画都是从民间搜集来的,有些相当于明抢。虽说这样做很不对,但是也间接得保护住了不少珍贵的文物。乾隆皇帝把文物都集中起来,这对后世的文物鉴赏做出了重大的贡献,也为后来的爱新觉罗·溥仪偷文物维持生计做了一个铺垫。1799年,乾隆皇帝永离开了紫禁城,去往了另外一个世界,享年八十九岁。
函数代码片段:
import re
def replace_sensitive_data(text):
# 示例人名和公司名词典(根据需求扩展)
id_pattern = r"(?<!\d)\d{6}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx](?!\d)"
name_dict = ["乾隆皇帝", "乾隆"]
company_dict = ["大清帝国有限公司", "大清"]
product_dict = ["富春山居图"]
# 1. 替换身份证号码
text = re.sub(id_pattern, "[ID]", text)
# 2. 替换人名
for name in name_dict:
text = re.sub(fr"{name}", "[NAME]", text)
# 3. 替换公司名
for company in company_dict:
text = re.sub(fr"{company}", "[COMPANY]", text)
# 4. 替换产品名
for product in product_dict:
text = re.sub(fr"{product}", "[PRODUCT]", text)
return text
智能体工作流编排示例:
提交给大模型的脱敏数据:
今天的主人公是[COMPANY]帝国的CEO–[NAME](身份证号码 [ID])。[NAME]的一大爱好就是在文物字画上题诗,盖章。其实这一举动非常令人厌恶,因为这样就破坏了文物本身的整体美。比如有一幅画《[PRODUCT]》,这幅画的空白都让[NAME]占满了。他在画上写了很多首诗,还盖了很多方他的印,甚至连没有点墨的山也不放过。好在他视为珍宝的《[PRODUCT]》是幅赝品,他的这次看走眼为后世留下了一幅“干净”的名作。[NAME]的印章有八百多个,最大的和手掌一样大,两只手一起握都握不住。想必如果用它在画上盖印的话,肯定会非常影响画的美观。他一生共创作了四万多首诗,其中大部分都是在一些名人的字画上。就犹如现代视频中的弹幕,因为那些字画只要一翻开会发现[NAME]提的字,如同密密麻麻的子弹一样。我们甚至可以称[NAME]为弹幕的鼻祖了。但是,[NAME]很多奇珍异宝、名人字画都是从民间搜集来的,有些相当于明抢。虽说这样做很不对,但是也间接得保护住了不少珍贵的文物。[NAME]把文物都集中起来,这对后世的文物鉴赏做出了重大的贡献,也为后来的爱新觉罗·溥仪偷文物维持生计做了一个铺垫。1799年,[NAME]永离开了紫禁城,去往了另外一个世界,享年八十九岁。
工作流执行详情:
优势:返回速度快,用户体验好,准确度高,成本低
劣势:灵活度不够,需定义字典,维护复杂
方案二:私有小模型替换敏感数据
- 小模型规模规模推荐大于 Qwen3-8b,不推荐使用深度思考模式,速度太慢,提示词加上 /no_think 标签。
示例文本:
今天的主人公是大清帝国的CEO–乾隆皇帝(身份证号码 123456199001011234)。乾隆皇帝的一大爱好就是在文物字画上题诗,盖章。其实这一举动非常令人厌恶,因为这样就破坏了文物本身的整体美。比如有一幅画《富春山居图》,这幅画的空白都让乾隆皇帝占满了。他在画上写了很多首诗,还盖了很多方他的印,甚至连没有点墨的山也不放过。好在他视为珍宝的《富春山居图》是幅赝品,他的这次看走眼为后世留下了一幅“干净”的名作。乾隆皇帝的印章有八百多个,最大的和手掌一样大,两只手一起握都握不住。想必如果用它在画上盖印的话,肯定会非常影响画的美观。他一生共创作了四万多首诗,其中大部分都是在一些名人的字画上。就犹如现代视频中的弹幕,因为那些字画只要一翻开会发现乾隆皇帝提的字,如同密密麻麻的子弹一样。我们甚至可以称乾隆皇帝为弹幕的鼻祖了。但是,乾隆很多奇珍异宝、名人字画都是从民间搜集来的,有些相当于明抢。虽说这样做很不对,但是也间接得保护住了不少珍贵的文物。乾隆皇帝把文物都集中起来,这对后世的文物鉴赏做出了重大的贡献,也为后来的爱新觉罗·溥仪偷文物维持生计做了一个铺垫。1799年,乾隆皇帝永离开了紫禁城,去往了另外一个世界,享年八十九岁。
工作流编排示例:

简化图:

提交给大模型的脱敏数据:
今天的主人公是COMPANY的CEO–NAME(身份证号码 ID)。NAME的一大爱好就是在文物字画上题诗,盖章。其实这一举动非常令人厌恶,因为这样就破坏了文物本身的整体美。比如有一幅画《PRODUCT》,这幅画的空白都让NAME占满了。他在画上写了很多首诗,还盖了很多方他的印,甚至连没有点墨的山也不放过。好在他视为珍宝的《PRODUCT》是幅赝品,他的这次看走眼为后世留下了一幅“干净”的名作。NAME的印章有八百多个,最大的和手掌一样大,两只手一起握都握不住。想必如果用它在画上盖印的话,肯定会非常影响画的美观。他一生共创作了四万多首诗,其中大部分都是在一些名人的字画上。就犹如现代视频中的弹幕,因为那些字画只要一翻开会发现NAME提的字,如同密密麻麻的子弹一样。我们甚至可以称NAME为弹幕的鼻祖了。但是,NAME很多奇珍异宝、名人字画都是从民间搜集来的,有些相当于明抢。虽说这样做很不对,但是也间接得保护住了不少珍贵的文物。NAME把文物都集中起来,这对后世的文物鉴赏做出了重大的贡献,也为后来的爱新觉罗·溥仪偷文物维持生计做了一个铺垫。1799年,NAME永离开了紫禁城,去往了另外一个世界,享年八十九岁。
提示词示例:
敏感词替换(小模型)
已知信息:
{{知识库检索.data}}
回答要求:
- 请替换所有身份证号码为"ID",如把“123456199001011234”替换成"ID"
- 请替换所有人物名为"NAME",如把“乾隆皇帝”替换成"NAME"
- 请替换所有朝代名为"COMPANY",如把“大清帝国”替换成"COMPANY"
- 请替换所有商品名为"PRODUCT",如把“富春山居图”替换成"PRODUCT"
- 你只需替换 身份证号码、皇帝名、朝代名 和 画名,替换好后根据已知信息原样返回即可,不要展示推理过程
提取关系字典(小模型)
已知信息:
{{知识库检索.data}}
工作要求:
- 请替换所有身份证号码为"{ID}",如把“123456199001011234”替换成"{ID}"
- 请替换所有人物名为"{NAME}",如把“乾隆皇帝”替换成"{NAME}"
- 请替换所有朝代名为"{COMPANY}",如把“大清帝国”替换成"{COMPANY}"
- 请替换所有商品名为"{PRODUCT}",如把“富春山居图”替换成"{PRODUCT}"
回答要求:
- 不要展示推理过程
- 仅返回替换对应关系字典
公有大模型
已知信息:
{{敏感词替换(小模型).answer}}
问题:
{{开始.question}}
封装答案(小模型)
回答要求:
- 请不要返回推理过程
- 直接返回最终答案即可
已知信息:
{{公有大模型.answer}}
关系字典:
{{提取关系字典(小模型).answer}}
问题:
请根据关系字典的对应关系,变量替换成实际值
问答效果:

工作流执行详情:

优势:灵活性高,适应性强
劣势:准确度中,搭配小模型使用,返回速度慢
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)