斯坦福这节课讲清楚了LLM做RAG所有最重要的问题。
斯坦福这节课讲清楚了LLM做RAG所有最重要的问题。
这节课就是传说中的Stanford CS25中的一节讲座。授课人就是RAG论文的作者之一Douwe Kiela,课程中他分享了一个检索增强语言模型的架构图。
这张图重要到让我觉得,做RAG只要记住这一张图就够了。所有相关概念和工程实践中的权衡,全都涵盖在这张图的架构和问题中了。
这个架构主要包括input、prompt、通过retriever检索增强生成的context,然后把这三部分一起输入给generator即模型,最终输出output作为结果。
关于这几个核心概念,值得注意的是:
1⃣input和prompt的区别和联系在于,input可理解为既包含system prompt,又包含用户输入的检索范围的指向,而prompt则强调用户输入的指令。
以公司知识库RAG举例,比如用户输入chatbot的内容为"检索公司2023年的财务数据并生成总结报告",其中"公司2023年的财务数据"是对公司知识库检索范围的指向,应理解为input的一部分,而"检索并生成总结报告"则是指令,应理解为prompt。
2⃣retriever的作用机制,我理解类似于在图书馆借书的过程,提供书名(query)-系统查找图书编号(query编码)-对应书架书籍编号(docs编码)-找到并借出图书(context)。
接着上文公司知识库的例子,从input获取query(如"2023年资产负债表, 2023年利润表, 2023年现金流量表"),对应的query编码("2023年资产负债表, 2023年利润表, 2023年现金流量表"的向量化表达)在docs编码(公司知识库所有文本的向量化表达)中检索匹配,提取匹配的部分作为context(涉及公司2023年财务数据的文本)。
其中query和input的关系,我想到两种可能性,一种是直接把input作为query,另一种是模型基于input生成的query,架构图简化表达了。
3⃣retriever和context之间可加一步reranker架构,对检索结果按特定规则进行重新排序。reranking的机制既可通过模型判断,也可在模型基础上预设特定规则。
比如根据员工职级限制其可获取的企业知识库信息范围。