本项目致力于研发一个基于DeepSeek大模型的AI辩论训练平台,实现智能陪练、辩论仿真、总结评分与个性化能力提升,通过结构化学习体系和低门槛交互,推动辩论思维的大众化普及与教育创新。
本人在小组中主要负责DeepSeek-RAG系统架构,即检索增强生成部分。在正式开工之前,先来进行RAG相关知识的科普与学习。
首先我们先来简单了解一下RAG和大模型的关系及其工作原理。
细心观察就会发现,大语言模型平时在回答问题时都是一个词一个词蹦出来的,这其实反映了它背后的工作过程——每生成一个词(token)之后,都会去预测下一个最有可能出现的词(token)是什么,然后根据概率去选择可能性最大的词来“接龙”。
如下图所示,横线处就会选择概率最大的“France”一词。
但是在实际的运行过程中,如果模型训练得不够充分,或者训练得太过充分,那么在预测下一个可能出现的token时就会出现一定的偏差,连成句子就会表现为答非所问的现象,我们将这种情况称为大模型的“幻觉”。
而RAG就是来缓解这种症状的!
RAG全称是Retrieval-Augmented Generation,即检索增强生成,通俗来说其实就是通过检索的方式来增强大语言模型生成回答的准确性。
当我们输入一个问题时,RAG首先会将该问题描述转化成向量,然后去向量数据库中检索相似的片段,然后将检索到的信息和刚刚输入的问题组合起来,形成一个完整的、提示性很强的提示词(prompt)投喂给大语言模型,从而生成更加准确具体的回答。(直观流程可参考下图)
这其中的向量数据库其实就可以理解为一个提前准备好的“作弊神器”,它可以为用户的问题提供一些现成的答案,大模型有了这些答案再去进行思考和回答,自然会更加准确,也会极大地减轻答非所问的“幻觉”。
上述工作流程中很重要的一部分就是关于向量数据库的构建,那么为何要使用向量数据库,而不是传统的数据库呢?
我们在传统数据库中检索文本信息时就像是在“查字典”,必须用准确的关键词或条件才能找到结果,比如搜索“苹果”,就只能找到包含“苹果”关键词的文本记录;相反,向量数据库则可以通过语义理解找到相关内容,即使没有相同的关键词,比如搜索“苹果”,除了能够找到包含“苹果”关键词的文本记录外,还可以检索到诸如“iPhone制造商”、“手机”等关联的语义。简单来说,RAG像是一个“会联想的朋友”,向量数据库就是一个能帮它快速匹配到相关内容的助手,而传统数据库则更像是一个“只会按字面查目录的图书管理员”。
另外,传统数据库主要用于存储结构化数据(如数字、日期等),适合表格化查询,难以处理长文本、图片、语音等非结构化数据;而向量数据库将文本、图片等转换为向量,能高效处理文章段落、用户对话等复杂内容,更适合RAG的检索需求。
那么问题又来了,向量数据库是怎么检索到根本不包含关键词的关联文本的呢?
向量数据库中存储的不是文本,而是文本转化后的向量,也就是将汉字/单词通过embedding模型转变成由一个个数字组成的向量,然后计算机就可以通过一些数学公式,比如向量距离公式来计算文本之间的相似性,从而找到语义相近的关联文本。
那我们要如何构造向量数据库呢?
如果需要提高大模型在某个特定领域问题回答的准确性,那我们首先就需要获取该领域大量的文章、资料等数据来源,然后对获取到的原始数据进行清洗加工,比如去除噪声、格式化、去重等,尽可能提高文本数据的质量,然后对文本进行分组、分词处理以及向量化处理,最后分门别类存储到向量数据库中即可。
明白了基本的工作原理之后,我将会从零开始进行RAG相关工作,按照流程进行项目开发。
(持续更新中……)