打造TypoX AI的心路历程
-
一、拥抱随机性
要打造一款AI产品,首先应该知道要做的工作是什么。简单来说,就是控制LLM的随机性。随机性是一把双刃剑,用好了叫能力泛化,用不好就成了幻觉。在创作领域,对于精确性的容忍度高,随机性促成了创作的天马行空,相信大部分用户最初被大模型震撼的都是其创作生成能力。但是在面对事实和数学代码的严密逻辑时,就只有对错,没有模糊空间,所以幻觉大多出现在这种情形。
在数学和代码方面,较早的优化是给LLM配置外部工具(如Wolfram Alpha)、编译环境(Code Interpreter),随后是进一步的加强训练,进一步在一些工作流的加持下,可以解决相对复杂的数学问题,完成一定长度的实用代码。
在客观事实方面,大模型确实是能将部分信息存储在模型参数中,但是很难预知或者预设哪些知识点是必然拟合好的,而一味提高在训练上的准确性往往会导致过拟合,减弱泛化能力;同时大模型的训练数据总是有截止日期的,即使针对所有训练数据的问答都完美匹配,也无法预测出之后发生的事,况且大模型的训练成本决定了模型的更新不会过于频繁。所以通过使用外置的知识库增强生成结果才得到了广泛的重视。
二、RAG的挑战与愿景
2.1 什么是RAG
检索增强生成(Retrieval Augmented Generation, 即RAG) 早在2020年就被提出了,也是随着近期LLM产品的发展需求,才获得了比较广泛的应用。目前主流的RAG流程不涉及对模型本身参数的修改,是通过增强给模型的输入来提高生成内容的质量。用一个简单公式 y=f(x) 来解释一下:f 是大模型,一个参数量很大的(随机非线性)函数;x 就是输入项;y 就是输出项;RAG就是在 x 上下功夫,来提高 y 的质量。
因为不涉及模型本身,所以RAG在成本上有很大优势,组合性也高,可以随意替换模型使用。只需检索出最相关的内容,提供给大模型,相较于直接全文输入,节省了所需Token数量,除了降低使用成本外,也大大压缩了回复用户的反应时间。
2.2 长上下文模型
近阶段出现了很多支持长上下文(输入窗口)模型,可以直接将完整的长篇巨著直接丢给大模型来处理,算是克服了大模型早期输入短的限制,这也是最初RAG的诱因之一,许多人认为RAG也许会就此势微。
在大海捞针测试(让大模型在一段长文本中找到对应的内容)中,长上下文模型确实比之前的模型有更好的表现,但是相对于开头和结束部位,在处理文本中间的针时的表现有些差强人意;同时大海捞针测试本身也是有瑕疵的,目前公开的测试主要还是单针的(即要寻找的线索只有一条),从单针到多针,问题复杂度会急剧提升,对大模型而言依然是挑战,另外也有第三方测试者发现有些模型可能在训练时就已经得知需要找的针是什么了(有作弊嫌疑)。新模型在长上下文的表现上可能确实有提升,但是鲁棒性可能没有预期中的那么高。
当然大模型在长上下文上还会继续优化,目前的瑕疵可能过段时间也许不是问题了,但是成本对于训练者和使用者来说依然是较高的门槛。相较于直接粗暴得将所有文本一股脑甩给模型,RAG在成本和时效性上依然有不可替代的优势。但RAG也需要根据模型的进步进行调整,特别是文本处理的颗粒度,避免出现过度处理反而降低整体效率的情况。在具体的产品中,我们总是需要在成本、时效和质量之间做权衡。
2.3 RAG的愿景
相较于简单使用向量库存储召回的早期RAG应用,我们需要从更系统的角度来审视和构建新的RAG框架,也许我们可以从RAG的持续研究中获得启发。内容、检索方式与检索器、生成器(LLM),是RAG系统的基本元素。
针对检索器的优化相对丰富,同时也因为其便利性,是应用最早也最多的RAG方法。除此之外,应该更多地考虑内容本身,向量数据库未必就是唯一的选择,键值/关系型/图数据库也是可以考虑的方案,一切根据数据的结构来进行选择,同时相应的调整检索器就可以进一步增加检索聚合的效果。
另外LLM也可以在内容预处理中扮演更重要的角色,相较于简单的切片-向量化-检索路径,使用分类模型和LLM进行提炼总结和重构,将内容以对LLM更友好的形式进行存储,同时更加依赖语义而不是向量距离来进行检索,将大幅提高生成的效果,TypoX AI团队在产品实现中也验证了这一点。
除了单独优化其中某一元素,也可以同时优化多个元素,尤其是大部分RAG方法都是锁定(不涉及)生成模型的,将检索与生成模型一起训练,也将是RAG的一个很重要的方向。由此引出了另一个话题:RAG、微调和LLM的关系。每逢LLM本身能力的提升与更低成本的微调技术的出现,都会有人会说要用微调干掉RAG,RAG已死。
回到前文提到的 y=f(x) 上,LLM和微调影响的都是 f 本身的参数,目的是在不加强输入x 的情况下,就能提升生成 y 的质量。而RAG则是通过加强 x 的输入,来提高 y 的质量。两种方案并不是矛盾的,而是相向而行的,模型的能力提升和输入的加强都有助于生成结果的优化。同时进阶的RAG也会涉及到模型对于知识库的针对性微调,将不再局限于对于输入的增强上。RAG的价值就在于,比原始LLM有更好的生成效果,(即使是与微调模型比,RAG的时效性和效果也是更好的,同时配置成本也不会高于微调的成本),以及与把全部知识直接丢给LLM相比,又有更高的效率。
三、人与AI
3.1 大模型的定位
笔者是一贯反对唯模型论和模型极大论的,大模型是很强,但是单独的大模型距离用户真正需要的Agent还是有不少距离的。有独家训练的小模型或微调模型,固然是团队实力的展现,但是落地到产品上,就一定能够给用户提供更好的体验吗?也许将这一部分的资源投入到其他要素(工具、知识库、工作流)上,提升效果可能更明显。而且目前在Web3行业缺乏自己的训练数据和评价标准的情况下,我们行业真的需要更多的打榜通用(小)模型吗?笔者在此呼吁,加密行业需要构建专属的训练数据库和评价标准,进而构建更多更适配行业的专属模型。
当然也不应该低估大模型的能力,在TypoX AI产品的早期探索中,为了使得流程更可控,我们给予了模型较低的信任,有很多流程目前来看都过度开发了。同时也存在为了保证生成质量,而导致成本增加,回复速度过慢的问题(比较典型的就像让LLM进行自反思)。我们在后续的迭代中,逐步优化流程中硬逻辑与LLM的参与度,达到了一个相对较优的平衡。
3.2 人的价值
AI能力的提升,其实反而更突显了人的价值,使得人的价值更具象化了。在人机交互中,人反而是最高效的Agent。只有人最知道自己要什么不要什么,人永远是甲方(需求方),AI固然可以进行自我反思,但是提升质量和准确性,结果也未必符合用户的需求。所以在产品的交互中,过于重视准确性,忽略时间延迟,未必是明智之举。有些决策过程更适合用户自己执行,应该把主要的决策权让渡给用户。
唯模型论的另一方面,就是忽视了人的存在,一味追求模型的表现,忽视了人机交互中人的体验,以及人机协作对于整体流程的效率提升。将产品用户转变为共建者,这也是加密社区去中心化精神所在。 从对知识库、工具的偏好,提示词、工作流的挖掘,到模型训练和微调所需要的语料,DAgent的所有部件都离不开社区的参与。TypoX AI团队已经初步构建了一系列与用户共建的机制,后续将逐步向社区公布,让每一位TypoX AI用户无需考虑硬件门槛,都有机会参与到DAgent生态的建设之中。