网站开发兼职团队,辽宁省建设工程招标投标协会网站,怎么做微信辅助的网站,查看网站开发商RAG Rerank
目前大模型应用中#xff0c;RAG#xff08;Retrieval Augmented Generation#xff0c;检索增强生成#xff09;是一种在对话#xff08;QA#xff09;场景下最主要的应用形式#xff0c;它主要解决大模型的知识存储和更新问题。 简述RAG without R…RAG Rerank
目前大模型应用中RAGRetrieval Augmented Generation检索增强生成是一种在对话QA场景下最主要的应用形式它主要解决大模型的知识存储和更新问题。 简述RAG without Rerank的主要过程 #mermaid-svg-uZZviWR0EPuo9dU5 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-uZZviWR0EPuo9dU5 .error-icon{fill:#552222;}#mermaid-svg-uZZviWR0EPuo9dU5 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-uZZviWR0EPuo9dU5 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-uZZviWR0EPuo9dU5 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-uZZviWR0EPuo9dU5 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-uZZviWR0EPuo9dU5 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-uZZviWR0EPuo9dU5 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-uZZviWR0EPuo9dU5 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-uZZviWR0EPuo9dU5 .marker.cross{stroke:#333333;}#mermaid-svg-uZZviWR0EPuo9dU5 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-uZZviWR0EPuo9dU5 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-uZZviWR0EPuo9dU5 .cluster-label text{fill:#333;}#mermaid-svg-uZZviWR0EPuo9dU5 .cluster-label span{color:#333;}#mermaid-svg-uZZviWR0EPuo9dU5 .label text,#mermaid-svg-uZZviWR0EPuo9dU5 span{fill:#333;color:#333;}#mermaid-svg-uZZviWR0EPuo9dU5 .node rect,#mermaid-svg-uZZviWR0EPuo9dU5 .node circle,#mermaid-svg-uZZviWR0EPuo9dU5 .node ellipse,#mermaid-svg-uZZviWR0EPuo9dU5 .node polygon,#mermaid-svg-uZZviWR0EPuo9dU5 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-uZZviWR0EPuo9dU5 .node .label{text-align:center;}#mermaid-svg-uZZviWR0EPuo9dU5 .node.clickable{cursor:pointer;}#mermaid-svg-uZZviWR0EPuo9dU5 .arrowheadPath{fill:#333333;}#mermaid-svg-uZZviWR0EPuo9dU5 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-uZZviWR0EPuo9dU5 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-uZZviWR0EPuo9dU5 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-uZZviWR0EPuo9dU5 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-uZZviWR0EPuo9dU5 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-uZZviWR0EPuo9dU5 .cluster text{fill:#333;}#mermaid-svg-uZZviWR0EPuo9dU5 .cluster span{color:#333;}#mermaid-svg-uZZviWR0EPuo9dU5 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-uZZviWR0EPuo9dU5 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 相似度匹配 Question 从向量库或其他存储召回的相关chunk list 提示词 LLM Answer 从向量库或其他存储召回的相关chunk list会按照检索时指定的距离计算公式由近及远排列或者假设相似度得分记为distance_score按distance_score大小从大到小排列。
Rerank指的是在检索结果的排序基础之上再排一次序将对生成回复真正重要的chunk排在前面排除干扰项可以类比理解为推荐算法的粗排和精排过程。
为什么需要Rerank
召回阶段使用向量库进行召回时要求快速在大规模数据中检索到相关项该过程需要度量当前question和库内全部向量的相似度按指定窗口大小得到top x结果。也就是说召回其实是个穷举过程那么必然不能使用复杂度特别高的算法来计算相似度为了召回的性能牺牲了召回的精度。
Rerank的概念在大模型之前就已经出现比如推荐算法和搜索算法的精排过程可以理解为在粗排结果的基础之上进行rerank精排。
RAG的Rerank必要性体现在3个方面
精度提升基于embedding的向量化检索过程可以通过一定程度的语义相似度来高效检索相关性较高的文本片段但由于语义本身的复杂性和多义性以及高维向量相似度匹配可能产生的噪音向量检索可能会召回一些相关性较低的候选项。因而引入rerank模型希望在向量召回可以理解为粗排的基础上进一步优化结果降低为生成提供的参考内容中的无效信息。语义匹配向量库检索过程仅考察了query向量和候选向量在向量空间的语义距离没有考虑query文本和候选文本其他方面的语义关系比如上下文信息、句法结构等而rerank模型有机会通过衡量query文本和候选文本之间更丰富的语义关系实现更精细的语义匹配。场景适配通过自训练rerank模型来进行精排可以按照特定需求做进一步排序从而提升QAG在特定应用场景下的表现。
二阶段检索
二阶段检索Two-Stage Retrieval即整个检索过程由原本的检索阶段和新增的精排阶段组成。很明显这种组合方式能最大化利用向量库的检索速度同时也能保证检索的效果因而在RAG中广泛采用检索过程使用基于向量的检索算法精排过程使用rerank模型。Rerank模型一般基于双编码器dual-encoder架构可以同时encode问题和知识库语料从而进一步度量两者之间的语义相似度。 网易有道开源的QAnything采用流程的就是两阶段检索可以理解为RAG with Rerank #mermaid-svg-EL4xj9QRRtN9rz3f {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-EL4xj9QRRtN9rz3f .error-icon{fill:#552222;}#mermaid-svg-EL4xj9QRRtN9rz3f .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-EL4xj9QRRtN9rz3f .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-EL4xj9QRRtN9rz3f .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-EL4xj9QRRtN9rz3f .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-EL4xj9QRRtN9rz3f .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-EL4xj9QRRtN9rz3f .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-EL4xj9QRRtN9rz3f .marker{fill:#333333;stroke:#333333;}#mermaid-svg-EL4xj9QRRtN9rz3f .marker.cross{stroke:#333333;}#mermaid-svg-EL4xj9QRRtN9rz3f svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-EL4xj9QRRtN9rz3f .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-EL4xj9QRRtN9rz3f .cluster-label text{fill:#333;}#mermaid-svg-EL4xj9QRRtN9rz3f .cluster-label span{color:#333;}#mermaid-svg-EL4xj9QRRtN9rz3f .label text,#mermaid-svg-EL4xj9QRRtN9rz3f span{fill:#333;color:#333;}#mermaid-svg-EL4xj9QRRtN9rz3f .node rect,#mermaid-svg-EL4xj9QRRtN9rz3f .node circle,#mermaid-svg-EL4xj9QRRtN9rz3f .node ellipse,#mermaid-svg-EL4xj9QRRtN9rz3f .node polygon,#mermaid-svg-EL4xj9QRRtN9rz3f .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-EL4xj9QRRtN9rz3f .node .label{text-align:center;}#mermaid-svg-EL4xj9QRRtN9rz3f .node.clickable{cursor:pointer;}#mermaid-svg-EL4xj9QRRtN9rz3f .arrowheadPath{fill:#333333;}#mermaid-svg-EL4xj9QRRtN9rz3f .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-EL4xj9QRRtN9rz3f .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-EL4xj9QRRtN9rz3f .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-EL4xj9QRRtN9rz3f .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-EL4xj9QRRtN9rz3f .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-EL4xj9QRRtN9rz3f .cluster text{fill:#333;}#mermaid-svg-EL4xj9QRRtN9rz3f .cluster span{color:#333;}#mermaid-svg-EL4xj9QRRtN9rz3f div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-EL4xj9QRRtN9rz3f :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 相似度匹配 Rerank Question 从向量库或其他存储召回的相关chunk list 提示词 精排chunk list LLM Answer Rerank模型
Rerank模型效果公认效果比较好的是一家AI独角兽cohere发布的cohere rerankhttps://cohere.com/rerank不过该模型是一个闭源商用模型个人使用有一定的免费额度。
国内中文开源rerank模型中效果比较好的有BAAI的bge系列模型和这家公司的开源的embedding模型是同一个模型系列
ModelBase modelLanguagelayerwisefeatureBAAI/bge-reranker-basexlm-roberta-baseChinese and English-Lightweight reranker model, easy to deploy, with fast inference.BAAI/bge-reranker-largexlm-roberta-largeChinese and English-Lightweight reranker model, easy to deploy, with fast inference.BAAI/bge-reranker-v2-m3bge-m3Multilingual-Lightweight reranker model, possesses strong multilingual capabilities, easy to deploy, with fast inference.BAAI/bge-reranker-v2-gemmagemma-2bMultilingual-Suitable for multilingual contexts, performs well in both English proficiency and multilingual capabilities.BAAI/bge-reranker-v2-minicpm-layerwiseMiniCPM-2B-dpo-bf16Multilingual8-40Suitable for multilingual contexts, performs well in both English and Chinese proficiency, allows freedom to select layers for output, facilitating accelerated inference.
详见https://github.com/FlagOpen/FlagEmbedding/tree/master/FlagEmbedding/llm_reranker 模型可以在hugging face上下载使用https://huggingface.co/BAAI/bge-reranker-large#model-list
参考文献
大模型相关技术-为什么需要rerankReRank 与 Embedding 模型的区别 如何选择 ReRank 模型NLP八十三RAG框架中的Rerank算法评估