对于LLM应用的幻觉问题,是大家都十分关注的,也是在做大语言模型应用时遇到的最为头痛的事情。我们在使用DeepSeek做根因分析的时候,也经常遇到幻觉带来的麻烦。甚至有时候DeepSeek为了完善幻觉推理,不顾数据包中的指标数据,非要对某个指标设置一个假设值。确实没错,在数据后面明目张胆地加上“(假设值)”。
从理论上讲,幻觉是不可避免地存在的。幻觉产生的原因也很多,比如背景知识错误、背景知识缺失、背景知识中存在矛盾点、数据之间存在矛盾等。因为大模型的基本原理还是基于数学模型的,为了达到数学模型的平衡,大模型只能编造事实来实现自洽。
既然幻觉不可避免,那么又如何理解幻觉可以消除呢?通过提高知识的质量,提高数据的质量,是可以显著减少幻觉的。甚至在某个十分具体的领域,你可以通过细致的工作,让某个领域的背景知识、数据都准确无误,甚至达到生成可放心执行的操作命令的程度。
看网上很多团队测试的一些情况,比如基于RAG嵌入的知识库,说幻觉很严重。其实做RAG本地知识库也非易事,你嵌入的知识的质量是决定知识库质量的关键。比如你书中有一张插图,人类可以十分清晰地识别出这个图,不但不会对上下文产生误解,甚至还可能因为这张图而使相关知识变得更加易懂。但是对于大模型来说,这张图可能是最大的误解来源,书中上下文的向量数据因为这张图而发生了改变,影响了对关键数据的识别。
如果你能够在做向量化之前对这些数据做精细的预处理,那么知识库的质量会有质的提升。那句老话还是对的,智能背后全是人工。想要偷偷懒,直接利用开源的框架,不费劲地搞出高质量知识库,那基本上是做梦。
只要有足够的投入,虽然我们无法彻底消除幻觉,但是对于已知问题,大部分幻觉还是可以消除的。如果你是在建设一个领域大模型应用,那么经过细致的打磨,还是能够收获不错的效果的。前提是你掌握了正确的方法,并且付出了足够的汗水。
如果想要随便部署一个大模型,简简单单做个知识库,就能解决你生产中的问题,那只是一种妄想。有些企业宁可花数百万上千万去部署满血的非量化的DeepSeek,也不舍得花点钱请专业团队来帮助做知识工程,那就本末倒置了。重视在知识工程上的投入,尊重专家的付出,才能让大模型应用做得更好。
因此在一个大模型应用项目中,不能仅仅依靠开发人员和算法工程师,必须让业务专家深度参与,才能取得好的效果。愿意为知识和经验付费的项目,才能做成高质量的项目。
总结一下消除幻觉的几个方法:1)最重要的一点,专家深度参与;2)高质量并且丰富的数据是直达目标的关键;3)高质量的知识和运维经验;4)高水平的数据预处理。