混合检索实战:融合关键词与向量检索,破解RAG精度难题
做RAG应用的人大概率都踩过同一个坑向量检索跑得飞快召回结果看着也都是“相关话题”可用户问具体型号、单据编号、法条原文的时候它完全不在状态换成纯关键词搜精确词是能中了但用户换个同义词、来一句口语化表达结果又直接归零。这种两难场景恰恰是混合检索Hybrid Search要解决的问题。它不跟你玩二选一而是把基于倒排索引的关键词检索和基于Embedding的向量检索同时跑再把两条结果按策略融合最终得到一套既能咬住精确词、又懂语义泛化的排序列表。这篇博文不是教科书式科普而是我在实际知识库问答项目里折腾混合检索的完整总结。我会把为什么单一检索会翻车、引擎怎么选、索引和参数怎么配、结果怎么融合、重排怎么加以及那些文档里不会写的坑一次性讲清楚。适合正在搭RAG流水线、做智能助手或者文档搜索的读者也适合刚接触检索想从根上把概念弄明白的朋友。1. 单一检索为何总翻车先把两种检索的死穴说透1.1 关键词检索与语义检索本质差异一眼看懂要理解混合检索必须先看清两个基础部件。关键词检索也就是常说的稀疏检索靠的是倒排索引和BM25打分。它做的事情本质上跟翻词典目录一样把文本切成词记录每个词出现在哪些文档里然后根据“这个词在本文档里出现得多不多”和“这个词在整个集合里罕不罕见”来打分。BM25的核心逻辑很朴素出现频率高说明相关词越稀有说明越有区分度文档越长就越要防止长文天然堆词频。这套机制决定它的优点是精确、快、可解释搜索“退款流程”它真的只认“退款”“流程”这几个字面词。语义检索走的是另一条路通常叫稠密检索。它用Embedding模型把整段文本映射成一个高维向量查询语句和文档各自变成坐标点再用余弦相似度或内积计算距离。你可以把它理解成“凭印象找东西”你描述个大概感觉它能在语义空间里摸到相近的东西。所以用户问“这笔钱什么时候能退回来”它有机会匹配到“退款时效说明”这样的文档哪怕字面完全不重叠。这两者一个像目录检索一个像语义联想各管一摊也各有死角。很多只做向量检索的方案上线后效果忽好忽坏根子就在这里。1.2 单一检索的两类硬伤从实际场景拆开看先说关键词检索的死穴。它本质上依赖字面匹配对同义改写、口语化表达、轻微错别字几乎零容忍。用户输入“电脑开不了机”库里写的是“计算机无法启动”字面上一个词都对不上BM25再厉害也救不回来。中文场景更明显同一个意思可以有十几种说法关键词检索在长尾表达面前表现非常脆弱。向量检索的毛病跟它恰好相反。它太擅长“差不多”了以至于对精确信息反而模糊。产品型号“XK-700”和“XK-710”在向量空间里的距离可能非常近因为模型觉得它们都是型号数字范围“预算1000-2000”更是灾难语义上它跟“预算2000-3000”高度相似但业务上这俩完全不同。还有法条编号、合同条款号、设备序列号这类专名向量模型往往把它们当成普通语义混在一起召回的排序一塌糊涂。我做过一个技术文档问答项目用户问“去年采购的那批设备还在保修期吗”向量检索能召回“保修政策”这类泛文档但真正写有“设备型号W-2024保修期12个月”的具体明细表它排得很靠后。反过来纯关键词检索能定位到型号明细却接不住“还在保修期吗”这种口语问法。两边单用都只答对一半这就是混合检索必须出场的原因。2. 混合检索的引擎选型与整体设计先定方案再动手2.1 混合检索的典型工作流召回、融合、重排混合检索从宏观上就三个步骤召回、融合、重排。召回阶段同一个query同时发给关键词检索和向量检索两边各取一批候选文档这时候讲究的是“宁多勿缺”单路召回量要拉大一般取top 50到100而不是只拿5个、10个就完事。候选集太小的话融合阶段根本没有余地基本等于选了一路的结果。融合阶段把两条候选列表合并、去重按策略算出一个综合分。这个阶段有两条技术路线一是做分数归一化后加权求和二是直接用Rank Fusion类算法不看分数只看名次。具体怎么做后面单开一节讲。重排是可选项但强烈建议加。融合结果一般取top 20到50再用一个交叉编码器模型把query和每个候选文档拼接起来逐对打分。这个打分精度高但成本也高所以只对最终少量候选做。整个链路串起来就是典型的“两个召回器 一个融合器 一个精排器”每一步都各司其职。2.2 引擎怎么选开源检索引擎、专用向量库还是全功能库落地混合检索不是非得从零造轮子但选型不对后面调试能磨死人。我按实际项目里最常见的三条路线分开说。第一种是用Elasticsearch这类开源检索引擎它在倒排索引和BM25上是老本行后续版本又直接支持了dense_vector字段和kNN查询。在这类引擎里你可以在同一个索引里同时放text字段和向量字段查询时用bool查询同时跑BM25匹配和向量近邻搜索再加一个filter把权限、部门、时间等条件一次性下推。优点是运维简单、过滤条件支持好、一套系统管到底。适合中小规模知识库也是我个人最常用的方案。第二种是专业向量数据库这类系统在ANN近邻检索和高并发向量查询上优化得很极致但很多产品对倒排索引和BM25支持弱甚至干脆没有。如果你非要用它就得在旁边再挂一套开源检索引擎两套系统同步数据查询时还要做双写、补偿和合并架构复杂度直线上升。第三种是全功能分布式数据库有的内置向量索引、标量索引和全文索引适合数据量特别大、查询模式很复杂的团队。它能省去多套系统维护成本但对团队运维能力要求高小项目没必要直接上。这里我整理了一个对比表方便你根据自己情况选引擎方案关键词检索能力向量检索能力过滤条件下推典型适用场景主要代价开源检索引擎强原生BM25中上需自建向量字段强原生支持中小规模知识库、RAG单机向量性能有上限专用向量数据库弱或需配合外部引擎强ANN优化到位中等取决于产品大规模向量召回需额外维护关键词检索系统全功能分布式数据库中上中上强大规模、复杂查询混合运维门槛高选型的核心判断依据就三条现有数据量级、过滤条件复杂度、团队维护能力。别为了一个向量性能指标把系统拆成三套每天凌晨同步数据时你会在工位骂人的。3. 索引构建与参数设置两路召回分别怎么调3.1 索引构建一份文档怎么同时伺候两种检索很多同学一上来就调融合权重效果不行就怀疑算法其实问题往往出在索引阶段。混合检索要求同一份文本切片同时支撑两路检索但这两路对索引的要求完全不一样。首先文本切片长度要跟Embedding模型的输入长度对齐。常见模型在512 token以内效果比较稳你切个2000字的超长文档丢进去超过部分被截断向量根本表达不了完整语义。我建议切片控制在一个段落或一个业务字段级别既保留上下文又不至于让向量丢信息。切片ID要和文档ID一起存成元数据这样融合时才能准确映射回原始文档。其次字段映射要分清楚。文本字段要指定分析器中文场景最恨默认的standard分析器它按单字切召回一堆无意义片段。至少要配一个支持中文分词的analyzer把句子切成合理词粒。向量字段要指定维度维度来自你选定的Embedding模型比如256维、768维或者更高同时要明确相似度度量类型。我自己常用余弦相似度因为绝大多数开源Embedding模型都对余弦做过校准。Embedding模型的选择也直接影响混合检索上限。中文场景优先选中文语料训练过的模型或至少是双语模型英文模型处理中文专名容易飘。另外不要把Embedding模型和重排模型搞混Embedding是双塔结构query和doc各自编码速度快但精度粗重排是交叉编码两个文本拼在一起编码慢但准。两者分工不同不能互相替代。这里给一段我常用的索引结构示意方便你理解字段组织方式{ mappings: { properties: { doc_id: { type: keyword }, title: { type: text, analyzer: ik_max_word }, content: { type: text, analyzer: ik_max_word }, content_vector: { type: dense_vector, dims: 768, similarity: cosine }, dept: { type: keyword }, created_at: { type: date } } } }这里的关键点是content和content_vector指向的是同一个文本切片千万不要一个是整篇文档、一个是分段切片否则融合出来的候选在文档粒度上完全对不上。3.2 候选集大小top_k和top_n为什么不能拍脑袋混合检索里最容易忽略的参数是召回候选集大小。很多人做RAG习惯top_k设3或者5在混合检索里这么做等于自杀。我这样解释你就明白了两路检索各自返回3条融合阶段总共最多6条候选去重之后可能只剩4条。这种情况下所谓“融合”根本没有操作空间最终结果基本由某一路的前2条主导。真正合理的做法是召回阶段每路取50到100条候选融合阶段再把综合分最高的20条拿出来最后重排或直接截断成5条返回给LLM。这个漏斗设计的意义在于前期保证召回率后期保证精确率每一步都有充分的候选池可供选择。具体数值怎么定看数据分布。如果你的文档集合有十万级单路top 50基本够用如果百万级甚至更大可以调到200。但候选集越大融合和重排的计算量越大响应延迟会顶不住。我在一个中规模项目里用的是单路top 100、融合后截断top 20、重排后返回top 5效果和延迟平衡得不错。你要根据自己线上监控去调不是一成不变。3.3 融合权重alpha越精确的场景越要偏向关键词如果采用加权融合而非RRF就绕不开alpha这个参数。常见的融合公式是这个样子final_score alpha * normalized_bm25_score (1 - alpha) * normalized_vector_scorealpha的值域在0到1之间代表关键词检索结果的权重占比。alpha越高系统越看重精确字面匹配alpha越低越依赖语义相似。这个参数没有普适最优解完全取决于你的内容形态。我的调整经验是对话问答、客服回复、语义泛化要求高的场景alpha通常取0.2到0.4因为这个场景用户表达千奇百怪必须靠向量兜底产品说明书、代码注释、法规条文、型号参数这类精确知识库alpha取0.6到0.8更稳因为正确答案往往藏在某个精确词上向量反而容易把不同型号搅浑。怎么调别凭感觉拍准备50到100条带标准答案的评测问题跑两路检索分别统计# 伪代码示意 for alpha in [0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8]: metrics evaluate_hybrid(alphaalpha) print(alpha, metrics[recall10], metrics[mrr5])哪个alpha能让recall和MRR综合最高就用哪个。同一个知识库在不同阶段内容变了alpha也要跟着重新评估这不是调一次就完事的参数。4. 结果融合与重排序让两条结果线拧成一股绳4.1 分数对齐为什么不能直接加权如果直接拿BM25原始分和向量余弦相似度做加权你会立刻发现一个问题量纲完全不在一个维度。BM25的分数是词频和逆文档频率的组合经常是几分到几十分余弦相似度则基本在-1到1之间大部分时候是0.2到0.8。你把它们直接加起来向量那点分数在BM25的大数字面前约等于没有所谓混合就名存实亡了。所以首先必须做归一化。常用有三种方式第一种是min-max归一化把两个列表的分数各自映射到0到1区间公式是每个分数减去最小值、除以最大值与最小值之差。实现非常简单但容易被异常高分带偏某一条结果得分特别高其他所有结果都被压到接近0。第二种是z-score归一化用均值和标准差把分数转成标准正态分布对离群值有一定抵抗力但需要保证分数分布相对稳定。第三种是rank归一化不看原始分只看排序位置把第i名映射为(N-i)/(N-1)。这个方式对量纲完全不敏感稳定性和抗干扰能力最强代价是丢掉了分数之间的实际差距信息。我实际使用下来RRF就是第三种思路的升级版所以很多时候干脆绕开手动归一化直接用RRF。4.2 RRF融合不看分数只看名次省心又稳RRF全称Reciprocal Rank Fusion是目前混合检索里最常用的融合算法。它的公式长这样def rrf_fusion(ranked_lists, k60): scores {} for ranked in ranked_lists: for rank, doc_id in enumerate(ranked, start1): scores[doc_id] scores.get(doc_id, 0) 1 / (k rank) return sorted(scores.items(), keylambda x: x[1], reverseTrue)看到这里你就明白RRF把每个文档在不同路检索中的排序位置折算成一个倒数值名次越靠前贡献越大最后把所有路的贡献累加起来。k是平滑参数经典取值是60。k越大不同名次之间的分数差距越小融合结果越平滑k越小第一名和第二名的差距越明显。用RRF最省心的点是它完全不用关心原始分数的量纲和分布。你不用管BM25打了8分还是20分也不用管余弦相似度是0.5还是0.9一切只跟排序位置有关。这在线上特别实用因为新文档不断入库分数分布会漂移而排序位置的相对信息相对稳定。当然代价是它丢掉了分数幅度信息如果某一路的检索质量明显高于另一路需要你通过权重或者候选集大小去补偿。4.3 重排序阶段用交叉编码器把精度顶上RRF和加权融合解决了“该从哪一路选谁”的问题但选出来的Top候选本身还是基于各路的粗粒度打分。想让最终结果更精准就得引入重排序阶段也叫rerank。重排序通常用交叉编码器模型。它跟Embedding模型的区别在于Embedding是双塔结构query和doc分开编码成两个向量再算相似度好处是doc向量可以预计算、速度快交叉编码器把query和doc拼接成一个长序列让模型在这个完整上下文里判断相关性精度显著更高但每个候选都要重新算一遍慢得多。所以它的定位很明确只处理量小的候选集。实际操作方式是混合融合后的top 20候选逐对送入交叉编码器按相关性分重新排序最后把top 5返回给下游。这里有两个调整要点一是batch size不要太大交叉编码器吃显存一般32或64就够二是长文本候选要截断把query和doc拼起来后总长度超过模型限制就得剪裁否则会报错或精度崩掉。重排模型的领域匹配度也很关键。通用重排模型在垂直领域不一定比融合排序更好我见过加了重排反而掉点的案例。选重排模型时最好拿一批自己的真实query做A/B对比看MRR和nDCG是否真涨了再决定上不上。5. 混合检索踩坑实录从效果翻车到性能抖动5.1 典型问题速查表这里整理了一张我在多个项目里反复遇到并解决过的坑位表你可以直接对照处理现象可能原因处理办法融合结果几乎总偏向某一路两路分数量纲未对齐或权重严重失衡改用RRF或做归一化后重新调alpha两路结果重叠率极低召回的文档五花八门文本切片粒度不一致或候选集太小统一切片规则拉大单路候选集到50以上长文档频繁霸榜短文检索效果差BM25长度惩罚不足调低b值如从0.75降到0.3或限制索引字段长度过滤条件只在一路生效另一路越权返回filter下推只覆盖了keyword查询分支确保bool查询中两路分支都带上同一filter子句向量检索召回过差语义相关文档排低位Embedding模型与语料语言/领域不匹配换领域更贴合的Embedding模型或改用段落级向量加了重排后效果反而下降重排模型与应用场景不匹配换垂直领域重排模型或用评测集验证后再上线用户输入一长段话检索结果混乱没有对query做意图提炼和关键信息抽取检索前加一步query改写辅助混合检索每一个坑都值得单独说一句。比如长文档霸榜这个问题BM25的b参数控制的是文档长度对词频的惩罚程度默认0.75偏大对短文档友好。如果索引里有很多长文档调低b值是立竿见影的操作。再比如query改写用户直接扔一整段闲聊式输入进检索两路检索都会收到大量噪声词简单做法是在前面挂一个轻量级意图抽取模块把关键的实体和主题词单独拎出来喂给检索器。5.2 性能优化并行、近似索引与缓存混合检索最直接的问题就是慢因为原来只跑一路检索现在要跑两路甚至还要加重排。线上延迟敏感的话有几个优化手段能立刻用上。第一是并行查询。两路检索互相没有依赖应该同时发出而不是串行等待。用异步并发或者线程池能把总耗时从两路相加变成两路取最大值。这个改动成本最低收益最直接。第二是向量索引的近似参数。如果你用的是HNSW这类图索引有三个参数会影响性能和精度M控制每个节点的连接数越大越准也越占内存ef_construction控制构建时的搜索范围越大索引质量越高但构建越慢ef_search控制查询时的探索范围越大单次查询越准也越慢。线上如果向量召回精度没问题但延迟高可以适当减小ef_search反过来如果召回差优先调大ef_search而不是M因为M调整后要重新构建索引成本高很多。第三是缓存。高频、相同的query重复跑两路检索加重排纯粹浪费算力。可以加一层query级缓存命中直接返回结果缓存过期时间按数据更新频率来定知识库每天更新一次就设TTL为24小时。如果担心缓存结果不够“新鲜”可以在数据版本变更时主动失效相关缓存而不是空等TTL。第四是模型和检索分离部署。Embedding模型、重排模型和检索引擎分别部署不要让一个服务的负载拖垮另一个。我在一个项目里吃过亏重排模型和主检索服务部署在一起重排高峰期直接把召回吞吐打崩。分开部署后两个服务各自扩缩容问题迎刃而解。最后建议你在上线前准备一个包含真实问题的评测集规模不用大一两百条足够。每次改动权重、索引参数或模型都跑一遍评测盯着MRR、RecallK这些指标看不要凭几个个例判断效果。混合检索是个系统工程链路长、参数多光靠“感觉”调你永远不知道是哪一环出了问题。我在实际项目中前几版一直用的是加权融合后来发现分数分布会随着新文档不断入库持续漂移每过一阵就得重新归一化一次太费精力。换成RRF之后问题少了一大半。如果你正在从零搭混合检索我的建议是先别碰花哨的加权和复杂归一化老老实实用RRF把链路跑通再叠加交叉编码器重排最后有余力再回去尝试加权融合的精调。混合检索本质就是两条腿走路一条认字面一条认语义平衡得好效果才会稳。

相关新闻

React WorkLoop全景解析:从ensureRootIsScheduled到commitRoot

React WorkLoop全景解析:从ensureRootIsScheduled到commitRoot

写 React 源码解析最怕什么?就是只记住几个函数名,比如ensureRootIsScheduled、commitRoot,但不知道它们之间怎么咬合,不知道一条更新从触发到页面真正变掉,中间到底过了多少关。这篇是这个系列的第 3 篇,我…

2026/10/17 7:16:05 阅读更多 →
BGP综合实验拆解:从邻居建立到路由反射与选路控制

BGP综合实验拆解:从邻居建立到路由反射与选路控制

很难找到一个比 BGP 更"基础又劝退"的协议。很多朋友跟我一样,第一次配 BGP 时照着文档敲完 neighbor、看着状态机跳到 Established,就长舒一口气,觉得实验做完了。直到真正面对题目只写着"bgp综合实验"四个字、要求在模…

2026/10/17 7:16:05 阅读更多 →
Embedding选型实战:提升RAG检索质量的完整指南

Embedding选型实战:提升RAG检索质量的完整指南

做RAG(检索增强生成)系统的朋友应该都有过这种经历:知识库搭完了,文档切好了,向量库也建起来了,结果一问业务问题,答案总是"差点意思"。要么召回的片段跟问题八竿子打不着&#xff0c…

2026/10/17 7:16:05 阅读更多 →

最新新闻

CMake构建CUDA工程全攻略:架构配置、生态库链接与调试实践

CMake构建CUDA工程全攻略:架构配置、生态库链接与调试实践

接手CUDA工程时,最让我难受的往往不是 kernel 写不出来,而是编译系统本身在拖后腿。不少项目用了三年甚至五年前的 CMake 写法,还在用find_package(CUDA REQUIRED)加一串全局宏定义和库路径,换一张显卡、换一个 SDK 版本就崩一次。…

2026/10/17 7:55:15 阅读更多 →
Odyssey-3世界模型免费试玩实测:从一句话到可交互场景

Odyssey-3世界模型免费试玩实测:从一句话到可交互场景

1. 世界模型突然免费开放,这件事为什么值得聊10月12日,Odyssey-3 世界模型宣布开放免费试玩。消息一出,不少做生成式内容、做交互应用、做游戏原型的朋友都在群里转。我第一时间去试了一轮,从注册到跑出第一段可交互场景&#xff…

2026/10/17 7:55:15 阅读更多 →
从零实现mini-redis:RESP协议解析与序列化实战指南

从零实现mini-redis:RESP协议解析与序列化实战指南

做mini-redis这类练手项目,很多人一上来就埋头写命令处理逻辑,结果写到一半发现卡在解析客户端请求这一层。我自己第一次实现时就吃过这个亏,等真正把RESP协议弄明白,后面所有功能开发都顺了。RESP全称是REdis Serialization Prot…

2026/10/17 7:55:15 阅读更多 →
HarmonyOS PC端智能监控:摄像头联动与异常行为识别实战

HarmonyOS PC端智能监控:摄像头联动与异常行为识别实战

做监控相关开发的人应该都有同感:摄像头不难调,难的是拿到画面之后怎么办。我这次做得比较完整,基于 HarmonyOS 6.0 的 PC 端应用,把一个摄像头实时画面采集、异常行为识别、多摄联动报警的流程全部打通了。项目名字叫“智能监控助…

2026/10/17 7:55:15 阅读更多 →
近场线圈天线设计实战:从参数规划到NFC读卡距离优化

近场线圈天线设计实战:从参数规划到NFC读卡距离优化

简介:这份线圈天线设计经验总结资料面向无线通信、广播、雷达系统等领域的射频工程师与天线设计初学者,系统梳理了天线基本原理、线圈关键参数、微波仿真、阻抗匹配及频率选择性等核心知识点,可帮助读者快速建立完整设计框架。压缩包共3个文件…

2026/10/17 7:55:15 阅读更多 →
Stable Diffusion在自动驾驶视觉中的实战:长尾数据生成与调参指南

Stable Diffusion在自动驾驶视觉中的实战:长尾数据生成与调参指南

你如果混自动驾驶视觉圈子稍微久一点,就会发现一个特别微妙的现象:公开论坛上几乎没人把Stable Diffusion当正经生产力工具讲,但在不少团队的内部聊天群里,它早就是默认的数据生成后备方案了。标题里说“偷偷用”真不算夸张——因…

2026/10/17 7:54:15 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →