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 微调大模型
如果把大模型比作学生,微调就像是在考试前,告诉学生有关这门考试的规则与答题技巧,让学生记住这些要求,更好地利用自身的知识和能力进行答题,并且在考试时,能按照指定风格和术语输出答案。📖📝
不过,如果想通过微调来缓解幻觉,笔者认为这