4. 如何减少大模型幻觉?⸺大模型外挂向量数据库的分析(知识延伸版)
本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权)
目录
1. 大模型幻觉
1.1 大模型幻觉的含义
1.2 大模型幻觉产生的原因
2. 缓解大模型幻觉方案的比较与选择
2.1 Prompt优化
2.2 微调大模型
2.3 外挂知识库
3. 向量数据库
3.1 向量
3.2 Vector Embbeding
🛠️ 传统做法:特征工程
📦 什么是 Embedding?
🧠 向量是怎么生成的?
⚖️ 如何选择嵌入模型?
3.3 向量数据库
3.3.1 什么是向量数据库
3.3.2 向量数据库工作原理:
3.3.3 衡量向量数据库的指标
3.4 如何构建大模型外挂向量数据库
🔹 一、数据和索引模块
🔹 二、查询检索模块
🔹 三、响应生成模块
3.5 大模型外挂向量数据库的不足
🚨 向量数据库存在的主要不足与改进思路:
❶ 排序不敏感,影响回答逻辑
❷ 匹配能力受限,难处理模糊或复杂提问
❸ 综合性提问难召回,影响知识点拼接
❹ 大模型知识“盲区”仍然存在
✅ 总结建议:
💡 本文是笔者第一篇AI知识学习的输出。最近,业界关于大语言模型的落地思考,慢慢聚焦于RAG(Retrieval Augment Generation,检索增强生成)和Agents。此篇是笔者从减少大模型幻觉的角度入手,对RAG下的大模型外挂知识库(向量数据库)的总结输出。目前有关向量数据库的营销非常多,令人眼花缭乱,本文对重要资料进行梳理,较为系统地对其进行了介绍,并总结了大模型外挂向量数据库的一些不足。
1. 大模型幻觉
1.1 大模型幻觉的含义
大语言模型(LLM)有两个突出能力:一个是自然语言的理解和生成能力🗣️,另一个是逻辑推理能力🧠。然而,大模型也存在短板,比如大模型会产生幻觉:即大模型的输出内容,与输入内容或现实不相符😵,也就是“大模型在绘声绘色地胡说八道”🎭。不同的应用场景,对大模型幻觉的容忍度不同⚖️。比如,在要求严谨和精确的领域📊,大模型幻觉就是个必解的问题❗
1.2 大模型幻觉产生的原因
-
想象学生回答文科题目时的情境:当遇见不会的题目,学生根据过往经验,会做出如下判断:多写不扣分,少写或没写要扣分!因此,学生遇见不会的题目,一般也要强行回答,绝不留白,至少能得个辛苦分。同理,由于大模型预训练的目标,是基于之前文本,生成下一个最有可能的词,却缺乏有效的机制来让模型明确知道:对于不会的问题,可以拒绝回答!因此,模型在遇见不会回答的问题时,不愿意回答“不知道”,而是输出概率最高的词,为了回答而回答,就会产生看似合理,实则虚构的答案。
-
多数学生很少去怀疑出题人给出的信息。如果出题人给出的信息不够明确和精准,就会导致学生写出不符合要求,甚至是错误答案。具体有两种情况:一是给出的信息没有限定范围和约束条件,导致学生的回答范围过广或偏离,不符合出题人原本预期。二是给出的信息有误,对学生产生了误导。同理,大模型很少去质疑提问者给出内容的正确性。因此,如果提问者给出了错误内容,模型会认为这些内容是数据的一种正常分布,并基于这些错误内容进行推理,从而产生错误结果。比如,经典的“林黛玉倒拔垂杨柳”问题。
-
学生需要通过大量刷题,去巩固和加深对知识点的掌握。当学生遇见比较少见的题目或知识点时,由于对该题目类型的熟练度不够、知识点模糊,答题时就需要依靠猜测。同理,当大模型遇见出现次数少的知识点时,也需要去“猜测”。不过一旦采用了猜测,很大可能会猜错。
-
学生在学校里犯错,为了不被老师批评,倾向于撒谎掩盖错误。此时,为了圆一个谎,就需要说更多的谎。同理,如果模型产生了一个错误,当它认为必须继续回答下去,就会把产生的错误当成是数据分布的一部分,并以错误内容为基准预测下一个词。这意味着模型为了强行回答而撒谎,从而导致幻觉。
综上所述,大模型幻觉具体成因如下:
- 模型缺乏特定知识,仅能依据模型内部知识进行推理和回答,并且没有“有效机制”去告知模型:对于不会的问题可以拒绝回答。所谓“有效机制”,是要教会模型可以回答“不知道”,同时防止模型矫枉过正(即模型知道怎么回答,但还说不知道)。
- 输入的内容不够明确精准,会误导大模型产生错误回答。
- 大模型内部有一些知识模糊或丢失,导致其靠编和猜来回答问题。
- 大模型调用知识或推理错误导致的问题。
当然,还有其他原因会导致大模型产生幻觉:例如,在预训练阶段,训练数据掺杂了错误信息或虚假信息,使模型学习了错误和虚假知识,也会产生幻觉。但这种问题的解决,需要重新训练模型,花费成本很高,故暂不将其纳入本文探讨范围。
2. 缓解大模型幻觉方案的比较与选择
📚 上一章已梳理出大模型产生幻觉的主因。可以得知,大模型像个学生,幻觉就如校园时代学生做的蠢事,故而我们可以从“对大模型进行教育”的角度入手,分析减少幻觉的主要思路:
1️⃣ 补充大模型缺乏的知识。正如“学而不思则罔,思而不学则殆”的第二句话所言,没有充足的知识学习,思考很可能会陷入虚幻和错误之中!🧠
2️⃣ 告知大模型:可以承认其不知道答案。就像做人的处事哲学一样,犯错就要承认不足与错误,并且在下一次回答中做好,如此这般,人们就会倾向于忘记你的错误,并最终记住你的好!👍
3️⃣ 结构化和精准化用户的提问意图。“问题哪得清如许,为有源头活水来”,好的输出源自于好的输入,而垃圾输入,就会产生垃圾输出!🔁
4️⃣ 用Prompt帮助大模型进行复杂任务的拆解和推理。有时候,“慢即是快”,通过Prompt引导模型对复杂问题进行进行一步步的拆解和推理,让其思考慢下来,从而得出更靠谱的结果。🧩
具体到操作层面有三种⽅案:(1)Prompt优化;(2)微调⼤模型;(3)外挂知识库。下面是对各个方案的介绍。
2.1 Prompt优化
具体地,主要有三种 Prompt 优化方式可以用来缓解大模型的幻觉现象:
1️⃣ 补充大模型所缺的外部知识,比如直接在 Prompt 中加入特定领域知识。📘
2️⃣ 告知大模型:“当你对问题没有把握的时候,不要自己编,直接回答不知道。”🙅♂️
3️⃣ 为了减少大模型在处理复杂问题时产生错误,可以采用诸如思维链(Chain-of-Thought)、上下文学习(In-Context Learning)、少样本学习(Few-shot Learning)等方式,引导大模型更好地推理与输出。🧠
但仅采用 Prompt 优化来缓解幻觉问题,也存在一定局限性:
⚠️ 大模型有 Token 限制(包括输入和输出内容)。如果对外部知识不加筛选而一股脑塞给模型,不仅效率低,而且成本高(包括 Token 消耗和推理资源的成本)。
⚠️ 很多时候,大模型并不能很好地遵循输入的指令,仍然可能编造答案来糊弄用户。
✅ 因此,Prompt 优化是一种值得考虑的方法,但在专业场景中,仅靠 Prompt 还远远不够,需要配合其他策略共同使用。💡
2.2 微调大模型
如果把大模型比作学生,微调就像是在考试前,告诉学生有关这门考试的规则与答题技巧,让学生记住这些要求,更好地利用自身的知识和能力进行答题,并且在考试时,能按照指定风格和术语输出答案。📖📝
不过,如果想通过微调来缓解幻觉,笔者认为这
相关文章:
4. 如何减少大模型幻觉?⸺大模型外挂向量数据库的分析(知识延伸版)
本文原创作者:姚瑞南 AI-agent 大模型运营专家,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 1. 大模型幻觉 1.1 大模型幻觉的含义 1.2 大…...
【渗透测试】Fastjson 反序列化漏洞原理(二)
目录 反序列化漏洞结合 RMI 攻击详解一、RMI 和 JNDI 的基础知识(1) RMI 简介(2) JNDI 简介 二、漏洞利用的核心原理1. 构造恶意 JSON 数据2. 设置恶意 RMI 服务3. 加载并执行恶意代码 三、具体利用过程环境准备攻击步骤1. 构造恶意 JSON 数据2. 设置恶意 RMI 服务3. 部署恶意类…...
阿里云国际站代理商:物联网设备怎样就近接入计算节点?
配置边缘计算实例 登录边缘计算控制台,找到已创建的边缘实例,点击实例名称后的“查看”。 分配OPC UA驱动到边缘实例中,选择OPCUA驱动,点击“设备列表”后的“驱动配置”,在弹出对话框中点击“添加通道”,…...
目录遍历漏洞复现
1.在fofa中输入语法,查询目录遍历 body"SKControlKLForJson.ashx" 查询结果为: 2.寻找目录遍历漏洞,访问网站: 3.我们可以app目录中下载文件等等 4.我们还可以访问其他目录的一些东西...
Java高频面试之集合-18
hello啊,各位观众姥爷们!!!本baby今天来报道了!哈哈哈哈哈嗝🐶 面试官:HashMap 是线程安全的吗?多线程下会有什么问题? HashMap 的线程安全性分析 HashMap 不是线程安全…...
清晰易懂的 C 语言开发环境彻底卸载与清理教程
一、卸载前的关键理解 C 语言本身是编程语言,无法直接“卸载”,但开发环境通常包含: 编译器(如 GCC、Clang)构建工具(如 Make、CMake)IDE 集成(如 Visual Studio、Code::Blocks&am…...
系统思考—看见未来
感谢上海财经大学终身教育学院的持续邀请!每个月,都会带着不同的思维火花,走进财大与学员们一起探索系统思考的奥秘。 这次为宜宾市的干部们带来了一场深刻的学习体验。通过系统思考,帮助大家从整体视角去发现问题、分析问题、解…...
嵌入式单片机程序的映像文件解读
映像文件类型 单片机下载程序的映像文件是包含了可执行代码、数据等信息,用于将程序烧录到单片机中的文件。常见的映像文件种类如下: 十六进制文件(Hex 文件) 格式特点:Hex 文件是一种文本格式的文件,以 ASCII 字符形式存储数据。它由一系列的记录组成,每条记录包含一个…...
保姆级教程搭建企业级智能体+私有知识库,Dify+ollama,Linux版
介绍 目前,AI Agent智能体已经被许多公司广泛应用,同时智能体借助私有知识库的加成,使原来知识面并不特别充分的大模型更聪明。如今特别是在医疗,医药,政企等数据保密程度高的行业,部署自己的私有知识库更…...
记一次线上程序宕机问题分析【写 GC 日志导致进程挂起】
1. 背景 运维侧持续反馈了几次线上业务程序 A 出现宕机告警的信息,重启后一段时间后又出现宕机,这里针对最后一次告警进行深入排查和分析。 首先这一次故障出现在 2024-03-14 04:18:23,和以往的宕机故障略有不同,以往的现象是切…...
position embedding
文章目录 1. 四种position embedding2. pytorch 源码[后续整理] 【因比较忙,后续整理】 1. 四种position embedding Position Embedding 1. Transformer 1.1 1d absolute 1.2 sin/cos constant 1.3 2. Vision Transformer 2.1 1d absolute 2.2 trainable 3. Swin T…...
【leetcode hot 100 739】每日温度
解法一:暴力解法 class Solution {public int[] dailyTemperatures(int[] temperatures) {int ntemperatures.length; // 指向要找下一个更高温度的地方int[] result new int[n];for(int left0;left<n;left){int rightleft1; // 指向正在找最高温度的地方wh…...
netplan是如何操控systemd-networkd的? 笔记250324
netplan是如何操控systemd-networkd的? netplan通过以下方式操控systemd-networkd: 工作原理:netplan读取位于/etc/netplan/目录下的YAML格式的配置文件,这些配置文件描述了网络接口的配置。netplan会将这些配置文件解析并转换为systemd-ne…...
Cookie、Session 与 Token:核心区别与应用场景解析
目录 引言 基础概念解析:三大身份验证技术详解 Cookie:浏览器中的"身份证" Session:服务器记忆的"对话" Token:加密的"通行证" 三种技术的深度对比分析 存储位置与数据流向 安全性全面对比…...
结合DrRacket学习《如何设计程序,第二版》
如何设计程序语言 DrRacket用于学习程序语言和设计程序语言,如何设计程序手册:How to Design Programs 如何设计程序,第二版:How to Design Programs, Second Edition 系统程序设计 设计师需遵循一系列严谨且系统的步骤&#…...
状态空间模型解析 (State-Space Model, SS)
一、文章摘要 状态空间模型(State-Space Model, SS)是一种广泛应用于控制系统、信号处理和系统建模的数学表示方式。MATLAB 提供的 ss 类用于描述线性时不变(LTI)系统的状态空间表示。本类实现了 LTI 系统的构造、属性设置、变换…...
zabbix添加IIS网站计数器(并发连接数)
0. Zabbix Agent 配置 PerfCounter = iis_Current_Connections,"\Web Service(_Total)\Current Connections",30 1.在被监控主机,powershell输入perfmon.msc 2.点击添加按钮 3.在下拉菜单中点击小箭头...
uniapp处理流式请求
在uniapp里面处理流式请求相对于web端来说有点麻烦,下面我将讲述几种处理流式请求的方式。 1.websocket WebSocket 是处理实时数据流的最佳选择之一,UniApp 提供了原生的 WebSocket 支持: <template><view class"container&…...
代码随想录算法训练营第四十一天|买卖股票专题:121. 买卖股票的最佳时机、122.买卖股票的最佳时机II、123.买卖股票的最佳时机III
动规五部曲牢记于心 1、确定好dp[j]数组,以及下标含义 2、推导出dp[j]公式 3、初始化,关键dp[0][0]、dp[0][1],第i天,后面的01表示状态:持有、不持有 4、确定遍历顺序: 如果求组合问题,不考虑排…...
AI小白的第七天:必要的数学知识(概率)
概率 Probability 1. 概率的定义 概率是一个介于 0 和 1 之间的数,表示某个事件发生的可能性: 0:事件不可能发生。1:事件必然发生。0 到 1 之间:事件发生的可能性大小。 例如,掷一枚公平的硬币…...
[Windows] 图吧工具箱
[Windows] 图吧工具箱 链接:https://pan.xunlei.com/s/VOMCXYDix3pvwdkU7w7bfVsDA1?pwdk8v5# DIY爱好者的必备工具...
Docker镜像迁移方案
Docker镜像迁移方案 文章目录 Docker镜像迁移方案一:背景二:操作方式三:异常原因参考: 一:背景 比如机器上已经有先有的容器,但是docker pull的时候是失败的二:操作方式 1、停止正在运行的容器…...
1264. 动态求连续区间和-acwing -树状数组
原题链接:1264. 动态求连续区间和 - AcWing题库 给定 n 个数组成的一个数列,规定有两种操作,一是修改某个元素,二是求子数列 [a,b] 的连续和。 输入格式 第一行包含两个整数 n 和m,分别表示数的个数和操作次数。 第…...
三分钟读懂微服务
一、什么是微服务 微服务,简单来说,就是把一个庞大复杂的软件系统,拆分成一个个小型的、独立的服务模块。打个比方,一个大型商场就如同传统的单体架构软件系统,里面所有的店铺、设施都紧密关联在一起。而微服务架构下…...
【AIGC】图片变视频 - SD ComfyUI视频生成
效果图 完整过程 SD ComfyUI 下载 下载 https://pan.quark.cn/s/64b808baa960 解压密码:bilibili-秋葉aaaki 完整 https://www.bilibili.com/video/BV1Ew411776J/ SD ComfyUI 安装 1.解压 2.将controlnet内部文件复制到 ComfyUI-aki-v1.6\ComfyUI\models\control…...
JVM详解(包括JVM内存模型与GC垃圾回收)
📖前言: 学会使用Java对于一个程序员是远远不够的。Java语法的掌握只是一部分,另一部分就是需要掌握Java内部的工作原理,从编译到运行,到底是谁在帮我们完成工作的? 接下来着重对Java虚拟机,也就…...
cocos creator 笔记-路边花草
版本:3.8.5 实现目标:给3d道路生成路边景观花草 在场景下创建一个节点,我这里种植两种花草模型,兰花和菊花,所以分别在节点下另创建两个节点,为了静态合批。 1.将花草模型分别拖入场景中,制作…...
在shell脚本内部获取该脚本所在目录的绝对路径
目录 需求描述 方法一:使用 dirname 和 readlink 命令 方法二:使用 BASH_SOURCE 变量 方法三:仅使用纯 Bash 实现 需求描述 工作中经常有这样情况,需要在脚本内部获取该脚本自己所在目录的绝对路径。 假如有一个脚本/a/b/c/…...
Qt 线程类
线程类 这些类与线程应用程序相关。 Concurrent Filter and Filter-Reduce 并行地从序列中选择值并组合它们 Concurrent Map and Map-Reduce 并行地从序列中转换值并组合它们 Concurrent Run 在单独线程中运行任务的简单方法 Concurrent Task 在独立线程中运行任务的可…...
Langchain中的表格解析:RAG 和表格的爱恨情仇
实现 RAG(Retrieval-Augmented Generation)是一个挑战,尤其是在有效解析和理解非结构化文档中的表格时。这在处理扫描文档或图像格式的文档时尤为困难。这些挑战至少包括以下三个方面: 1.表格的“叛逆期”:不准确的解析可能会破坏表格结构: 表格在文档里就像个叛逆的青少…...
