
首先我们得明确一个点llm的本质根据前面每一个字预测下一个字也就是自回归模型。举个例子把“我爱”发给llmllm会根据前前两个字预测第三个字可能是“你”“吃”“玩”然后拼接成“我爱你”、“我爱吃”“我爱玩”。预测下一个字的范围很大“你”“吃”“玩”等等可能的词很多范围很大每个词指向的方向都不一样“你”是表白、恋爱方向“吃”是美食方向“玩”是娱乐方向而提示词就是在这些话前面拼接上一段话则是将这个范围缩小方向更加明确。最基本的提示词是告诉llm它的身份比如“你是一个吃遍天下美食的吃货”然后将提示词和内容组合到一起就变成了“你是一个吃遍天下的吃货你爱__”可选项范围就收窄了很多方向“美食”更明确原来的“你”“吃”“玩”只剩下了“吃”。所以我们给的提示词并不是让模型成为某一个人或者具有某一种特质而是把这个“方向”告诉他但我们的写法依然是“你是一个……”多轮对话也是如此他将之前每次跟模型的对话都记录下来与现在最新的问题拼接在一起给到LLM让他明确下一个字的方向然后自回归生成回答。RAG也是如此看似你将答案给到llm他理解了答案然后回复你。但实际上它依然是根据方向来自回归生成回复而答案本身就是回复你的问题的最佳方向。举个例子提问llm“什么是苹果”RAG召回了“苹果公司的信息”一起给到模型苹果公司的信息将你提问的苹果更加明确“一家公司的信息具体的时间地点等等”的方向而模型就往这个方向生成回复。这就解释了为什么当我们把一个问题的答案未作为模型训练数据放在上下文然后让llm生成回复的时候的准确率仅为17%左右。因为他一直在根据方向生成回复而不是理解内容。更加解释了为什么RAG可以有效减少幻觉因为把方向更加明确了。这个方向是模型训练过程中训练出来的这就是模型权重计算后的结果。个人见解如有问题或错误请指正。