主要观点总结
本文围绕RAG最佳实践展开讨论,涉及query分类、chunking方法、向量数据库选择、文档检索与重排、以及微调等方面的内容。文章结合复旦大学的探索成果,提供了效果最佳和平衡效率两种实践方法,并详细阐述了整个RAG流程及每个模块的常用模型。
关键观点总结
关键观点1: RAG中的query分类
query分类是RAG流程中的第一步,能够过滤和分流,将需要RAG处理的query送入相应的处理流程,提升RAG效果并降低平均延迟。分类器可以选择BERT等模型。
关键观点2: chunking方法在RAG中的应用
chunking是RAG中重要的处理方法,固定大小chunking是最常见的方法,但可能破坏上下文连续性。利用标点符号按句或按段落chunking是简单好用的方法。合适的chunk size能在保留充分上下文信息的同时提高召回率。
关键观点3: 向量数据库的选择
选择支持混合检索的向量数据库能提高RAG的效果,如Milvus和ES。Milvus支持多种向量索引和混合检索能力,而ES能索引多种数据类型,但可能在扩展和索引数据分布方面存在耗时问题。
关键观点4: 文档检索与重排
通过文档检索文档能提高召回效果,一种有效方法是先让大模型按照query生成一篇伪文档,然后拼接伪文档和query做混合检索。重排(reranker)是RAG中的关键步骤,基于深度语言模型的reranker效果很好,但计算量较大。另外,基于query似然模型的reranker能提高效率。
关键观点5: 微调与生成效果提升
微调生成模型可以提升生成效果。一种有效的方法是在训练样本的上下文中同时掺杂query相关和无关文档,强制模型学到过滤噪声生成答案的能力。但微调耗时耗力,需评估收效后量力而行。
关键观点6: 实践方法
文章提供了效果最佳和平衡效率两种实践方法。效果最佳实践包括query分类、HyDE混合检索、MonoT5重排等;平衡效率实践包括query分类、混合检索等。此外,文章还提供了整个RAG流程及每个模块的常用模型的详细插图。
文章预览
点击上方 “ AINLPer “ ,设为 星标 更多干货,第一时间送达 |作者授权,出自-》 AI纵横谈 最近看到复旦大学的一篇探索RAG最佳实践的文章,很有意义。于是结合这篇论文和我常被人问到的问题,聊聊RAG最佳实践。 RAG之前先做query分类 不是每个query需要召回增强,有些可以直接用大模型回答,例如摘要、续写、翻译等。query分类的目的是过滤和分流,把需要RAG的query送入RAG,把不需要RAG的query直接送入大模型。query分类不仅能提升RAG效果,还能降低平均延迟,几乎是立竿见影的效果。 分类器可以选BERT,也可以是更简单的模型如TextCNN、fastText等,取决于对性能的细微要求。我的建议是直接上BERT,因为分类耗时在整个RAG流程中不占大头,但分类效果对RAG影响很大。 chunking方法很重要 固定大小chunking是最常见的方法,但是可能破坏上下文的连续性,截
………………………………