这篇文章就针对 RAG 检索这个问题提供一些思路, 以 Shortwave 这家 AI 邮件助手公司的设计思路作为案例,真的很难有公司把产品详细技术机制公布出来
本文在01 部分还针对"微调和 RAG,到底选哪个? " , " 有了支持超长上下文窗口的 LLM,是否还需要 RAG"进行说明
01
现在支持超长上下文窗口long context LLM(如 10M tokens的 gemini 1.5)的模型已经出现,许多人认为 RAG 已经没有必要,因为可以将数百个文档直接上传给 LLM 进行阅读和处理。
但是,需要考虑以下三个关键问题:
相关性:上传如此多的文档,仍然需要考虑哪些文档与问题最相关,否则容易导致答案偏离
性能影响:上传大量文档对模型性能的影响有多大?模型是否能够高效地处理并回答相关问题?
算力成本:上传过多文档会导致算力成本显著增加,这也是为什么很多 LLM 目前仍然无法支持过多上下文窗口的原因。比如,GPT-4 在处理 30k 汉字内容时可能会出现宕机的情况
对于超长上下文窗口一个有趣的类比是:尽管我们的 RAM 内存足够大,但很多操作仍需在硬盘上进行读写传输,而不是全部存储在 RAM 中
我上传 3w 的文档, 结果 GPT-4 说他没有直接访问具体文章的权利??
RAG&Finetuning,都能用来优化大模型在下游任务的适应能力,选哪个, 有什么区别
“
https://arxiv.org/abs/2401.08406
https://arxiv.org/abs/2312.05934
上面两篇论文研究得出: RAG(检索增强生成)在生成质量上往往优于(有监督/无监督)微调的传统语言模型,特别是在需要外部知识回答的场景下
RAG 不仅在保持高效性能的同时使用更少的算力资源,还具备灵活应对信息检索准确性问题的能力。具体而言,当检索到的信息不准确或有害时,RAG 允许对索引进行调整或替换,而不需要重新训练整个模型
此外,RAG 的模块化设计使得不同的组织可以根据需求使用专属的知识库,避免了将所有数据混合在一个不可解释的黑箱模型中的问题,从而提高了模型的透明度和可定制性。这种架构对企业和研究机构尤其有吸引力,因为它能够更好地管理专有数据和知识
02
目前的 RAG 系统在知识库具备高相关性、高密度、以及包含丰富细节信息的情况下表现最佳
为了确保 RAG 的高效性,需要对初始检索器initial retrieve、重新排序机制(re-rank mechanism)、或者类似 EffectiveGPT(该链接文章最后一部分有提)的评估器进行严格的质量标准评估:
相关性 (Relevance) - 最重要的评估标准: 使用 Mean Reciprocal Rank (MRR) 来评估系统的相关度排名。系统应确保与问题最相关的内容排在最前面,这是衡量初始检索质量的关键指标
知识密度 (Density): 在相关性相同的情况下,应优先参考知识密度高的文档,即那些内容质量更高、信息更精炼的文档,例如由专家撰写的主题内容
细节 (Details): 特别是在涉及工具调用时,对知识库或工具进行详细描述能帮助 LLM 更好地理解每个知识库的用途,尤其是在处理如 SQL 数据库这类需要精确调用的场景
post processing将回答形成用户友好的格式,包括引用内容和相关问题
当前,基于向量的语义相似性搜索的结果在准确性上可能还不如传统的关键词搜索(如 BM25)。因此,类似 Sourcegraph 的 CTO 建议将语义相似性搜索与传统关键词搜索结合,以提升 RAG 检索的整体质量
现实可行的提升 RAG 的现实措施可参考 AI 邮件助手 Shortwave 的 AI Search 机制:
问题重写 (Query Reformation): 对用户的原始查询进行重写或优化,使其更适合检索系统。例如,通过重新组织句子结构、消除歧义或补充上下文信息,来提高查询的清晰度和相关性。
关键信息提取 (Feature Extraction): 从用户问题中提取关键特征,如时间、地点、姓名等重要信息。这些特征可以帮助进一步定义检索范围,并提高匹配的准确性
Recency bias extractor 是一种用于识别和提升与当前时间点最相关信息的工具。在 Shortwave 的 AI 系统中,它根据查询中特征(如日期或时间)来判断信息的时效性,从而在初步检索后对更近期的内容给予更高的优先级。这种方法帮助系统快速筛选出与用户当前需求最相关的最新信息,适用于需要强调“近因效应”的场景
关键词与嵌入结合的初步检索 (Keyword + Embedding Initial Retrieval):使用关键词搜索进行初步检索,找到最精准和明显的匹配项,确保高相关性。
辅以向量搜索处理同义词、多模态信息,以及处理有语法错误的查询内容。嵌入方法有助于捕捉更广泛的语义关系,即使关键词不完全匹配。
启发式重新排序 (Heuristic Re-ranking):利用从问题中提取的特征缩小向量搜索的范围。例如,如果问题中提及了时间、姓名等特征,则这些信息在重新排序时应获得最高权重(boost),从而更加突出相关答案。对于次相关的内容则给予较低权重或惩罚(penalty),以避免无关信息干扰检索结果
最跟关键词符合的素材获得最高的 boost, 就是下面曲线的最高值
利用 MS Marco MiniLM 进行 Cross-Encoder Re-ranking: MiniLM 模型在本地运行,能够根据 reformulated query 和上一步中排名靠前的信息,对其进行更精细的匹配评分
尽管 MiniLM 提供了更好的效果,但由于其计算量较大,为了节省资源,仅对通过启发式嵌入排名靠前的文档进行 re-ranking
Cross-Encoder 输入包括 reformulated query 以及上一步通过 heuristic embedding 排名靠前的文档。模型会对每个文档与 reformulated query 的匹配性进行评分,生成更精确的相关性分数
根据 cross-Encoder(MiniLM)给出的评分,进一步指导 heuristic re-ranking,完善对检索素材的排名。具体做法是对评分高的内容进行 boost,而对评分较低的内容进行 penalize。这一过程会对索引内容进行动态调整,确保最终评分反映文档与问题的精确相关性
输出最终排序结果: 最终将经过 cross-Encoder 和 heuristic re-ranking 双重优化的排序结果提供给 LLM
简要总结一下这 4 个机制:
高相关性、高密度、以及包含丰富细节信息的知识库(这3 个标准也可以作为评估器, 检索质量的评估标准) 对问题进行优化改写,让用户问题更清晰明确 提取问题相关特征,用关键词搜索先精准匹配 1 个或多个re-ranking 机制
03
通过Shortwave 这个例子, 我对 AI 产品更有感觉了, 大致是基于 LLM,根据用户场景需求,开发设计特定的 AI tool, 能一键满足用户需求的ai tool ,这个 ai tool 需要自己基于各种开源模型, 基于Prompt, 基于自定义的机制进行封装
像下面的 Summary 就很简单, 只是用了 Prompt 进行封装, 而 AI Search 就是 02部分的步骤, 涉及复杂的场景细化流程
针对什么时候调用这些工具, 就需要做工具与用户问题的匹配
后记
Shortwave 作为已经商业化的 AI 写作公司, 分享产品更符合目前AI 发展现状的RAG优化机制, 至少能帮助明确方向, 看到别人成熟的产品是怎样做的
如何学习大模型
现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。
作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。
我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。
一、AGI大模型系统学习路线
很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。
二、AI大模型视频教程
三、AI大模型各大学习书籍
四、AI大模型各大场景实战案例
五、结束语
学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。
再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。
因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。