在大型语言模型LLM中使用私有数据

目录

一、说明

二、训练?

三、及时工程

四、构建系统提示

五、数据人性化

六、我的数据安全吗?


一、说明

        随着 2023 年大型语言模型的大规模兴起,许多“基于对话”的服务应运而生,使用户能够通过自然对话与数据和其他产品进行交互。我们现在处于一个 LLM 改变我们与各种数据和信息交互方式的时代。筛选无尽的搜索结果或解读复杂的用户界面的日子已经一去不复返了;现在,您只需要自然语言就可以开始探索。

        如果您正在考虑使用大型语言模型(如 OpenAI 的 GPT 模型)创建自己的聊天机器人服务,您可能会好奇如何将您的私人数据编织到 LLM 的“知识库”中。我将在这里解释这一点:

二、训练?

        有两种基本方法可以让 LLM“了解”任何数据,并利用对数据的理解来回答用户的问题。第一种是培训

        训练是 LLM 最初建立对我们所生活的世界的基础理解的方式。在让 LLM 接触数以百万计的维基百科文章、新闻文章、书籍、在线论坛等内容后,LLM 最终获得了通过预测句子中下一个单词(“token”)来构造有意义句子的能力。在训练过程中,LLM 不仅能够构造复杂的句子和段落,而且还能够明确地使用在训练材料中接触到的知识。这就是为什么尽管 ChatGPT 只在 2021 年中及之前的文本语料库上接受过训练,但它能够透露我们对所生活的世界的基础知识;它可以回答诸如“为什么天空是蓝色的?”和“谁是第一个踏上月球的人?”之类的问题。

        通过 OpenAI 提供的工具,我们可以自己训练模型——不是从头开始,而是“微调”。如果你用一系列问题和答案来训练模型,其中包括使用你的私人数据,那么模型最终会掌握对你的数据的“理解”,并能够在以后的对话中使用它。

        然而,训练通常不是在 LLM 中使用私有数据的解决方案。训练成本高昂,需要精心规划、准备和处理时间才能完成。由于数据变化迅速,LLM 需要始终使用某些数据点的最新版本,因此以足够高的频率训练模型以始终拥有“最新”版本的数据是不切实际的。即使情况如此,也不能保证某些数据点的正确版本确实“覆盖”了 LLM“内存”中的旧版本。

三、及时工程

        相反,人们通常使用一种更直观的解决方案来解决这个问题:快速工程。快速工程不依赖于模型训练,而是向 LLM 提出问题,同时为其提供回答问题所需的上下文(数据)

        例如,以下三种情况:

        在 LLM 的第一个问题中,左侧用户询问的是微软联合创始人比尔盖茨的出生日期。比尔盖茨是一个非常著名的人物,维基百科上有许多关于他和他的发明的页面和互联网文章。在 OpenAI 设计和执行的训练 GPT 模型的过程中,模型无疑接触过有关比尔盖茨的文章并接受了这些文章的训练。因此,模型“学习”了比尔盖茨的生日并“将其存储在记忆中”,当被问到时,它就能回忆起这些信息,如图所示。

        在中间的第二个问题中,LLM 被问到 Daniel Smith 的出生日期。之前没有用 Daniel Smith 这个 GPT 模型训练过的著名人物,因此 LLM 的“记忆”中不存在 Daniel Smith 或他的生日的“知识”,LLM 便会这样回答。

        然而,在右边的第三个问题中,我们问的是同样的问题,“丹尼尔·史密斯什么时候出生的?”,同时也为 LLM 提供了回答这个问题所需的必要背景数据)。

        第三个例子称为提示工程。在这种方法中,总是将两条信息作为提示发送给 LLM——问题本身,它要么跟在问题之后,要么后面跟着回答问题所需的一些上下文。虽然两者之间只有一行空行,但工程师通常将这两条信息称为不同的组成部分:系统提示用户提示。用户提示是用户定义的提示——问题。系统提示是收集的信息,在提示 LLM 时将与用户提示一起作为上下文包含在内。系统提示可以放在用户提示的前面或后面,然后将结果——两者一起——询问 LLM。

四、构建系统提示

        在提示工程中,系统提示是您包含任何您希望 LLM 在回答问题时使用的私人数据的地方。这些私人数据可以是任何内容,包括有关部门应如何处理某些请求的流程的知识、LLM 应如何响应或行为的说明、明确的数据点等。

        但系统提示不能无限大;像 OpenAI 的 GPT 系列这样的 LLM 对其能够理解的文本量有限制。所以很遗憾,你不能直接转储数据库的每条记录并让 LLM 来弄清楚!

        相反,工程师们花费无数的时间开发系统来识别他们认为与特定问题最相关、最有帮助的数据,然后找出这些数据,并准备在系统提示中使用。从Bing AIGoogle Search with AIPower Virtual AgentsPower Apps Copilot等,所有这些系统都使用相同的方法。

        在某种程度上,工程师设计的这种用于精确定位相关数据、准备这些数据并包含在系统提示中的机制是这些服务中的秘密武器和主要价值驱动因素;其余的只是对 LLM 的简单 API 调用!

        因此,要将私有数据与 LLM 结合使用(构建使用私有数据的类似聊天机器人的体验),您必须开发一种机制,该机制将搜索相关数据、读取该数据、准备该数据,并将该数据附加到用户提示符中并附带一些说明,然后通过 API 调用提示 LLM 服务。我们将在下面探讨其中的一部分:

五、数据人性化

        如上所述,必须选择并准备好要包含在 LLM 提示中的数据。虽然 LLM 非常有能力从杂乱无章的数据中解释和破译含义,但将数据转换为更明确有意义的状态才是我们的最佳利益,这样 LLM 才能更好地“理解”数据并将其用于其响应(避免幻觉、错误响应等)。

        举例来说,原始数据有效负载如下所示(JSON 格式):

{ “jf45ds_first” : “约翰” ,“jf45ds_last” : “奥康纳” , “ jf45ds_role” : 857259845 ,“jf45ds_father” : “ac7f2f16-466f-44a0-834f-4439f36ab41f” ,“jf45ds_mother” : “f865d36f-a59a-4277-8291-90b719d18a7e” ,“jf45ds_gen” : “m” 
}

在上面的数据有效载荷中,我们可以对此做出一些有根据的猜测:

  • 它描述的是一个人或联系人的记录。
  • 此人的名字是John,姓氏是O'Connor
  • 他们的“角色”就是857259845所代表的。也许这就是他们的职业?安全角色?
  • 关于此人父亲的数据位于 ID 为ac7f2f16–466f-44a0–834f-4439f36ab41f的相关记录中。
  • 关于此人母亲的数据位于 ID 为f865d36f-a59a-4277–8291–90b719d18a7e的相关记录中。

        虽然我们可以对这些数据做出有根据的猜测,LLM 也可以,但最佳做法是将此有效载荷转换为更清晰易懂的版本。通过使用有关此表的元数据(每列的标题、描述等),我们可以使此记录人性化:

{"First Name": "John","Last Name": "O'Connor","Occupation": "General Contractor","Father": {"First Name": "James", "Last Name": "O'Connor"},"Mother": {"First Name": "Lynda", "Last Name": "O'Connor"},"Gender": "Male"
}

上面的“人性化”负载更容易理解和得出结论。与原始状态相比,LLM 能够从这些数据中提取更多含义。通过将此私人数据记录的人性化版本附加到用户问题中,LLM 现在可以回答有关 John 的问题,例如:

  • 约翰的职业是什么?
  • 约翰的父亲叫什么名字?
  • 约翰的母亲叫什么名字?
  • 约翰的性别是什么?

因此,任何 LLM 的提示都会是这样的:

Use the record below to answer the subsequent question:
{"First Name": "John","Last Name": "O'Connor","Occupation": "General Contractor","Father": {"First Name": "James", "Last Name": "O'Connor"},"Mother": {"First Name": "Lynda", "Last Name": "O'Connor"},"Gender": "Male"
}What is John's occupation?

        在上面的例子中,我们在人性化记录前面提供了明确的说明,并将其添加到用户的问题前面。我们用这个提示 LLM,并收到响应“总承包商”。如果我们用问题“约翰的职业是什么?”提示 LLM,它就不会知道约翰是谁!

六、我的数据安全吗?

        显然,在上述过程中,我们将私人数据连同问题直接提供给 LLM。这安全吗?有保障吗?

        首先,不要认为您必须针对任何特定问题将所有私有数据提供给 LLM。如前所述,您有责任构建机制,准备私有数据以作为问题的背景提供给 LLM。在此机制内,构建保护措施,防止您不希望暴露给任何第三方系统的特定数据被使用并发送给 LLM。例如,您可以将机制设计为仅从特定表中提取数据而不从其他表中提取数据,从不将某些字段(即社会安全号码)包含在将要公开的有效负载中,等等。在开发这样的自定义系统时,您可以完全控制向 LLM 公开的内容,因为您正在设计执行公开的机制

        其次,这是许多人共同关心的问题,并且已经由 LLM 管理员解决了。Microsoft 通过其Azure OpenAI 服务提供大型语言模型即服务,并在此处记录了现有的数据隐私和安全保障措施。Microsoft 明确说明了任何暴露的数据:

  • 不适用于其他客户。
  • OpenAI 无法使用。
  • 不用于改进 OpenAI 模型。
  • 不用于改进任何 Microsoft 或第三方产品或服务。
  • 不会用于自动改进 Azure OpenAI 模型以供您在资源中使用(模型是无状态的,除非您使用训练数据明确微调模型)。

        Microsoft 提供的文档详细介绍了保护您的私人提示(包括您包含的数据)的措施。因此,在安全可靠的平台(如 Microsoft Azure)上向 LLM 公开私人数据是安全的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/502697.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字玩FontPlayer开发笔记6 Tauri2设置菜单

字玩FontPlayer开发笔记6 Tauri2设置菜单 字玩FontPlayer是笔者开源的一款字体设计工具,使用Vue3 ElementUI开发,源代码: github: https://github.com/HiToysMaker/fontplayer gitee: https://gitee.com/toysmaker/fontplayer 笔记 字玩目…

Chapter4.1 Coding an LLM architecture

文章目录 4 Implementing a GPT model from Scratch To Generate Text4.1 Coding an LLM architecture 4 Implementing a GPT model from Scratch To Generate Text 本章节包含 编写一个类似于GPT的大型语言模型(LLM),这个模型可以被训练来生…

linux-centos-安装miniconda3

参考: 最新保姆级Linux下安装与使用conda:从下载配置到使用全流程_linux conda-CSDN博客 https://blog.csdn.net/qq_51566832/article/details/144113661 Linux上删除Anaconda或Miniconda的步骤_linux 删除anaconda-CSDN博客 https://blog.csdn.net/m0_…

Speech Recognition vs. Voice Recognition | 语音识别工作原理 | 模型训练 | 应用

注:机翻,未校。 Speech Recognition 与 Voice Recognition 剑桥词典 speech recognition,语音识别 voice recognition,声音识别 Speech vs. Voice - What’s the Difference? | This vs. That https://thisvsthat.io/speech-vs…

外网访问本地部署的 VMware ESXi 服务

本文将详细的介绍如何在本地部署的 VMware ESXi 以及结合路由侠内网穿透技术,实现外网远程访问和管理本地 ESXi 服务器的具体步骤和配置方法。 第一步,本地部署 VMware ESXi 1,先去官网下载 ESXI :网址:Home - Suppor…

如何配置【Docker镜像】加速器+【Docker镜像】的使用

一、配置Docker镜像加速器 1. 安装/升级容器引擎客户端​ 推荐安装1.11.2以上版本的容器引擎客户端 2. 配置镜像加速器​ 针对容器引擎客户端版本大于1.11.2的用户 以root用户登录容器引擎所在的虚拟机 修改 "/etc/docker/daemon.json" 文件(如果没有…

基于Spring Boot的车辆违章信息管理系统(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

如何提高软件研发效率?

如何提高软件研发效率? 概述 莫等闲,白了少年头,空悲切。近些年来在大家眼里形成了“卷王”的印象,第一次听到这一的评价感觉有点不好意思,之后回想感觉挺自豪的,说明现在的我没有浪费光阴,我一…

jenkins入门--安装jenkins

下载地址https://www.jenkins.io/ jdk 安装 :Jenkins需要安装对应版本的jdk,我在安装过程中显示需要21,17 Java Downloads | Oracle jenkins安装过程参考全网最清晰Jenkins安装教程-windows_windows安装jenkins-CSDN博客 安装完成后,浏览器输入127.0.…

单片机-独立按键矩阵按键实验

1、按键介绍 按键管脚两端距离长的表示默认是导通状态,距离短的默认是断开状态, 如果按键按下,初始导通状态变为断开,初始断开状态变为导通 我们开发板是采用软件消抖,一般来说一个简单的按键消抖就是先读取按键的状…

一文详解YOLOv8多模态目标检测(可见光+红外图像,基于Ultralytics官方代码实现),轻松入门多模态检测领域!

目录 1. 文章主要内容2. 相关说明3. 基于YOLOv8的多模态目标检测3.1 启动运行YOLOv8多模态代码3.2 详解代码流程(重点)3.2.1 train.py文件(入口)3.2.2 engine\model.py文件3.2.3 engine\trainer.py文件3.2.4 models\yolo\detect\t…

【顶刊TPAMI 2025】多头编码(MHE)之极限分类 Part 3:算法实现

目录 1 三种多头编码(MHE)实现1.1 多头乘积(MHP)1.2 多头级联(MHC)1.3 多头采样(MHS)1.4 标签分解策略 论文:Multi-Head Encoding for Extreme Label Classification 作者…

【AWS SDK PHP】This operation requests `sigv4a` auth schemes 问题处理

使用AWS SDK碰到的错误,其实很简单,要装个扩展库 保持如下 Fatal error: Uncaught Aws\Auth\Exception\UnresolvedAuthSchemeException: This operation requests sigv4a auth schemes, but the client currently supports sigv4, none, bearer, sigv4-…

LLM - 使用 LLaMA-Factory 部署大模型 HTTP 多模态服务 教程 (4)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/144881432 大模型的 HTTP 服务,通过网络接口,提供 AI 模型功能的服务,允许通过发送 HTTP 请求,交互大模型,通常基于云计算架构,无需在本地部署复杂的模型和硬件,…

【MATLAB】【Simulink仿真】向模型中添加自定义子系统

一、子系统的创建 1、启动Simulink,选择【新建】——【空白子系统】——【创建子系统】 2、选择【浏览组件库】,创建使能子系统。 3、保存至当前工作目录。 二、建立模型仿真 1、启动Simulink,选择【新建】——【空白子系统】——【创建子系…

HTML——56.表单发送

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>表单发送</title></head><body><!--注意&#xff1a;1.表单接收程序&#xff0c;放在服务器环境中(也就是这里的www文件目录中)2.表单发送地址&#x…

123.【C语言】数据结构之快速排序挖坑法和前后指针法

目录 1.挖坑法 执行流程 代码 运行结果 可读性好的代码 2.前后指针法(双指针法) 执行流程 单趟排序代码 将单趟排序代码改造后 写法1 简洁的写法 3.思考题 1.挖坑法 执行流程 "挖坑法"顾名思义:要有坑位,一开始将关键值放入临时变量key中,在数组中形成…

重庆大学软件工程复试怎么准备?

重大软件复试相对来说不算刁钻&#xff0c;关键是对自己的竞赛和项目足够了解&#xff0c;能应对老师的提问。专业课范围广&#xff0c;英文文献看个人水平&#xff0c;难度不算大&#xff0c;整体只要表现得得体从容&#xff0c;以及充分的准备&#xff0c;老师不会为难你。 …

【Rust自学】10.3. trait Pt.1:trait的定义、约束与实现

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 题外话&#xff1a;trait的概念非常非常非常重要&#xff01;&#xff01;&#xff01;整个第10章全都是Rust的重难点&#xff01;&#x…

计算机网络——数据链路层-流量控制和可靠传输

一、流量控制 流量控制是指由接收方及时控制发送方发送数据的速率&#xff0c;使接收方来得及接受。 • 停止等待流量控制 • 滑动窗口流量控制 1、停止—等待流量控制 停止-等待流量控制的基本原理是发送方每发出一帧后&#xff0c;就要等待接收方的应答信号&#xff…