今天是2025年02月19日,星期三,北京,天气晴。
我们来看看最近的一些有趣的点,基本的认知,供大家一起参考。围绕Ktransformer认知误区,长文本新策略工作,投标文件写作项目,RAG输入去噪,RAG–R1结合,秘塔浅层搜索思路。社区例行项目,供大家一起参考。
专题化,体系化,会有更多深度思考。大家一起加油。
一、关于RAG+的一些进展
1、RAG+R1结合进展
r1-reasoning-rag:结合R1推理+递归式RAG,sing deepseek’s r1 reasoning to agentically retrieve, discard, and synthesize information from a knowledge base in order to fully answer a complex question: https://github.com/deansaco/r1-reasoning-rag,就三个脚本,llm,prompts,agent,基于langchain,简单粗暴的demo。
架构图路线:

代码侧实现:

3、关于秘塔搜索的deepresearch方案
这个模式有意思,先想后搜,先搜后广。可以让模型先提出思考框架与路径,再进一步进行资料的整合与分析。采用“小模型+大模型”协同架构,将需要深度推理的框架思考、步骤拆解的部分,交给业内擅长推理的DeepSeek R1来完成;与此同时,为了提高响应速度,将应该快、可以快的信息搜索、资料整合部分,用秘塔自研的模型来完成。

在这个框架下,秘塔可以在2-3分钟完成数百个网页的搜索与分析。
2、关于RAG中的embedding选型
embedding选型可以参考https://huggingface.co/mteb和https://huggingface.co/C-MTEB,参数不一定越大越好,得自己根据场景多比较几个选一个适合服务器规格配置的,RAG中要得到更好的结果,除了text embedding模型选择很重要,text reranking模型有时候也得关注一下。

3、关于RAG的一个输入去噪的工作
FineFilter: A Fine-grained Noise Filtering Mechanism for Retrieval-Augmented Large Language Models,https://arxiv.org/pdf/2502.11811,具体的,这篇论文提出了FineFilter,一种细粒度的噪声过滤机制,通过句子级别的MinMax优化问题来识别和保留有效的答案线索。
具体实现路线包括几个模块,过滤问题线索提取器:模块首先使用包含答案的句子及其相似句子作为微调目标,以提取足够的潜在线索。通过计算信息增益来确定句子的相关性,并使用LLM模型生成答案相关的句子。

重排器模块通过成对损失函数训练,以优化句子的排名。使用生成模块的真实反馈来标注训练数据,确保最相关的线索被优先考虑。自适应截断器模块的目标是根据问题的复杂性和文档内容捕获最小的必要线索。
通过数据标注确定每个查询的最优线索子集,并使用LLM模型预测截断点,以实现细粒度的噪声过滤。
在三个开放域问答数据集上进行了实验,包括NQ、TriviaQA和HotpotQA。使用对抗性密集段落检索器(DPR)从Wikipedia中检索每个问题的前五个段落。实验使用了LLaMA3-8B-Instruct和Mistral-7B-Instruct作为基础语言模型,并使用LORA方法进行微调。实验中采用了精确匹配(EM)和F1分数来评估模型的性能,并引入了压缩比(CR)和推理吞吐量(TP)来评估计算成本。实验结果表明,FineFilter在多个数据集上显著优于基线模型。
4、RAG进展,一个对比RAG vs. GraphRAG
RAG vs. GraphRAG: A Systematic Evaluation and Key Insights,https://arxiv.org/pdf/2502.11371,提出了系统评估RAG和GraphRAG的方法。RAG采用基于语义相似度的检索方法。首先将文本分割成块,使用OpenAI的text-embedding-ada-002模型进行索引。对于每个查询,检索Top-10相似度的文本块,并使用Llama-3.1-8B-Instruct和Llama-3.1-70B-Instruct模型生成响应。
GraphRAG选择择两种代表性的GraphRAG方法进行综合评估:基于知识图的GraphRAG和基于社区的GraphRAG。基于知识图的GraphRAG通过三元组提取构建知识图,并根据查询匹配实体进行检索。基于社区的GraphRAG在构建知识图的基础上,使用图社区检测算法构建层次社区,并提供局部搜索和全局搜索两种检索方法。

数据集方面,选择四个广泛使用的问答数据集(Natural Questions、HotpotQA、MultiHop-RAG、NovelQA)和四个查询式摘要数据集(SQuALITY、QMSum、ODSum-story、ODSum-meeting)进行评估。对于问答任务,使用Precision、Recall、F1-score和Accuracy作为评价指标;对于查询式摘要任务,使用ROUGE-2和BERTScore作为评价指标。结果与分析上,
问答任务中,RAG在单跳问题和需要详细信息的查询上表现更好,而GraphRAG(特别是基于社区的GraphRAG)在多跳问题上更有效。基于社区的GraphRAG(Global)在全局搜索中通常表现不佳,因为它只检索高层次的社区,导致信息丢失。
查询式摘要任务中,RAG在查询式摘要任务中表现良好,特别是在多文档摘要数据集上。基于社区的GraphRAG(Local)表现优于(Global),表明详细信息在所选数据集中的重要性。集成策略通常与RAG单独表现相当。
二、长文本、投标协作以及R1可解释性的一些有趣探索
1、项目投标写作实现
社区成员做了一个投标文件八股文写作工具,接的gemini flash,可以几分钟自动生成10万字的技术文档,用于非正式投标文件,日常工作已经在用了。开放出来给社区玩玩。https://github.com/riddle911/autobid,本项目是一个粗暴实现,个人本地可以玩玩,也可以应付八股文的投标文件写作,如果是正式投标文件,还是需要谨慎对待。
本项目主要核心是prompts.py中几个prompt的构造,简单说下过程:
生成投标文件分为两个步骤:生成大纲和生成完整文档。
首先是让大模型根据评分标准和技术要求,生成一篇符合要求的大纲,区分了system和user来做
然后,生成详细章节内容时候,单独开一个上下文窗口,预置一个systemrole,然后通过user不断的提交每个章节大纲、contentsummary来确保生成内容在边界范围内。
其次还有文档章节生成、全部拼接以及同一时间多次请求的工程上的考虑和处理
项目也还有很多细节没时间充分打磨,可以按这个思路为引子,自己在完成一个独立的投标文件撰写工具
以下为作者实测数据:
生成大纲一般在30s-1min以内;生成10万+文字的完整文档,用时约220s;以上单次任务完成,消费Gemini约0.09美元。
2、关于Ktransformer的一些任务误区
最近关于ktransformers的报道工作很多,也让人产生了许多误区,社区觉得有必要来谈谈这个话题,当然,跟大家强调一下,我们务必要去看一手消息,一手信息源,从官方的readme去看,细节总是在原文档。https://mp.weixin.qq.com/s/8J44ufXKLtakLCY33wHoEA

3、关于长文本进展,kimi跟deepseek对狙
首先,deepseek发Native Sparse Attention: Hardware-Aligned and Natively Trainable Sparse Attention,https://arxiv.org/pdf/2502.11089,原生稀疏注意力(Native Sparse Attention, NSA),NSA 技术让模型在计算注意力时,不再需要关注所有信息,而是只关注最重要的部分,采用动态层次稀疏策略,结合粗粒度标记压缩和细粒度标记选择来保留全局上下文意识和局部精度。

两个核心点,一是通过将键和值组织成时间块并通过三个注意力路径处理:压缩的粗粒度token、选择性保留的细粒度token以及用于局部上下文信息的滑动窗口。二是硬件对齐系统和训练感知设计。硬件对齐系统优化了基于块的稀疏注意力以利用Tensor Core和内存访问,确保算术强度平衡。
其次,kimi发MoBA:https://github.com/MoonshotAI/MoBA,https://github.com/MoonshotAI/MoBA/blob/master/MoBA_Tech_Report.pdf,《MoBA: Mixture of Block Attention for Long-Context LLMs》,提出全新的注意力机制“Mixture of Block Attention”(MoBA),思路来源于MOE,MoBA把长长的上下文切成小块(Block),然后用一个“智能路由器”动态挑选出对当前查询最重要的几个块,只关注这些块的信息。两者都是做加速使用,方式不同,可以跟进下。

核心点有三,一是块划分和路由策略:MoBA将文本划分为多个块,并使用门控机制选择与每个查询词最相关的块进行注意力计算,从而减少计算量。二是混合模式:MoBA允许在 MoBA 和全注意力模式之间切换,以平衡效率和性能。三是因果关系保持:通过限制查询词关注未来的块,并使用因果掩码来确保当前块的注意力,从而保持自回归语言模型的因果关系。四是细粒度块分割:将文本划分为更细粒度的块,以提高模型性能。
4、关于R1推理链条的可解释
frames of mind,https://github.com/dhealy05/frames_of_mind,R1的思维过程转化为可视化图形的一个可视化项目。实现思路:将思想链保存为文本->使用 OpenAI API 将文本转换为嵌入->使用 t-SNE 按顺序绘制嵌入。然后再根据嵌入之间的相似度,来绘制跳跃程度。
例如,每个点代表了不同的思维序列,上面的数字是具体的思维步骤编号。例如,数字“1”表示思考的第一个步骤。为了更直观地看到R1的思维跳跃,纵坐标代表了每次跳跃的相似度,数据被标准化到0到1之间,坐标表示连续思维步骤之间的相似度,也就是余弦距离。可以深入观察R1思维中每个点之间的相似性,进而理解其思维过程的紧密性。可以看R1思维的波动情况。

归一化序列分析的结果。图中灰色的线条表示不同的思维序列,而蓝色的线条代表了所有序列的平均值,整个图显示出了R1思维的波动情况。归一化序列分析的结果。图中灰色的线条表示不同的思维序列,而蓝色的线条代表了所有序列的平均值,整个图显示出了R1思维的波动情况。
参考文献
1、https://mp.weixin.qq.com/s/8J44ufXKLtakLCY33wHoEA
(文:老刘说NLP)