维度砍一半,检索到底差多少:自测 + 独立信源对账
版权与内容来源声明本文为原创整理。文中涉及官方文档、开源仓库、论文与公开报道的内容均在附表 A 中标注来源引用官方原文保持原样不作改写。文中命令、版本号与界面截图以本文成文时的实测/核验结果为准标注「待验证」的部分请以你本地环境实际输出为判断依据。本文不推荐任何不合规的软件获取方式也不对任何收益结果作承诺。转载请注明出处。同一批候选向量、同一个查询只把打分函数从余弦换成点积余弦排第一的那个候选被点积排到了第三。索引没重建向量没重新生成改的只有一行打分函数。这件小事在向量检索里天天发生向量长度没有被统一的时候点积和余弦量的根本不是同一样东西而很多「排序不对」的排查就卡在这一步没有往下走。本文要验证的问题很具体向量维度砍一半检索到底差多少以及网上流传的「相似度数值会掉、排序基本不变」这句话能不能自己跑一遍对出来。一、测试条件先统一三组小实验一次只动一个变量三组实验都用合成向量跑目的不是得到某个模型或某个索引的分数而是把「长度」「归一化」「维度」三个变量拆开一次只动一个。先把场地钉死。三组实验共用同一套骨架numpy 生成浮点向量查询向量与候选向量同维候选 200 条看 top-10。区别只在每组动哪一个变量。实验动的那一个变量固定不变看什么实验 1第 2 章候选向量的长度其中两条分别乘 0.2、乘 3方向不变维度、查询向量、候选条数点积与余弦排出的名次是否一致实验 2第 2 章是否把所有向量归一化到单位长度同上归一化后两种打分是否合流实验 3第 3 章向量维度64 维 → 32 维归一化状态、查询向量、候选条数top-10 重合、相似度数值变化、全量排序相关表下口径向量为合成随机数据固定随机种子实验 1/2 用 42实验 3 用 7不含真实语料的语义结构也不含任何索引实现的近似误差。因此本文的结论是机制层面的不能直接当作某个嵌入模型或某个向量库的评测结果。1.1 三种距离各自量的是什么余弦相似度cosine similarity量的是两个向量的夹角它先各自除掉向量长度只看方向对不对得上取值在 −1 到 1 之间。点积dot product量的是方向一致程度再乘上两个向量的长度——方向一样时向量越长点积越大所以它没有上界。L2 距离欧氏距离量的是两个点在空间里的直线距离方向和相似度相反距离越小越像。一句话记住区别余弦只看方向点积同时看方向和长度。1.2 归一化是这里唯一的开关归一化normalization做的事很朴素把每个向量整体缩放到单位长度方向一点不动。它之所以关键是因为只有所有向量长度都是 1 的时候点积才等于余弦。少了这一步你用点积就等于把向量的长度悄悄当成了一个权重——长度大的候选天然占便宜而这通常不是你想要的效果。代码里换个打分函数只要一秒但「换了之后结果变没变」这件事必须自己跑一遍才算数。二、自测结果向量一长点积和余弦就排出两个名次未归一化时点积的名次被向量长度带偏了余弦排第一的候选点积把它排到了第三。2.1 只让候选的身长差一点方向全都不动 实测环境Python 3.13.12 / macOS / numpy 2.5.3importnumpyasnp np.set_printoptions(precision4,suppressTrue)rngnp.random.default_rng(42);d8qrng.normal(sized);q/np.linalg.norm(q)dirsrng.normal(size(4,d));dirs/np.linalg.norm(dirs,axis1,keepdimsTrue)Cdirs*np.array([1.0,0.2,1.0,3.0])[:,None]# 候选1缩到0.2倍、候选3放大3倍方向不变orderlambdas:np.argsort(-s).tolist()dot_rawC q cos_raw(C q)/(np.linalg.norm(C,axis1)*np.linalg.norm(q))print(未归一化 点积:,np.round(dot_raw,4),排序,order(dot_raw))print(未归一化 余弦:,np.round(cos_raw,4),排序,order(cos_raw))CnC/np.linalg.norm(C,axis1,keepdimsTrue)dot_nCn (q/np.linalg.norm(q))cos_n(Cn q)/(np.linalg.norm(Cn,axis1)*np.linalg.norm(q))print(归一化后 点积:,np.round(dot_n,4),排序,order(dot_n))print(归一化后 余弦:,np.round(cos_n,4),排序,order(cos_n))真实输出原样照贴未作任何改动未归一化 点积: [0.1686 0.1128 0.0022 1.6039] 排序 [3, 0, 1, 2] 未归一化 余弦: [0.1686 0.5639 0.0022 0.5346] 排序 [1, 3, 0, 2] 归一化后 点积: [0.1686 0.5639 0.0022 0.5346] 排序 [1, 3, 0, 2] 归一化后 余弦: [0.1686 0.5639 0.0022 0.5346] 排序 [1, 3, 0, 2]对着前两行看候选 1 的余弦分 0.5639 是四个里最高的但它被缩到 0.2 倍之后点积分只剩 0.1128名次从第一掉到第三候选 3 的余弦分 0.5346 只排第二被放大 3 倍后点积分 1.6039直接顶到第一。长度一动点积的名次就跟着动余弦纹丝不动因为它在算之前已经把长度除掉了。2.2 归一化补齐后两种打分合流后两行是同一批向量归一化之后的结果点积和余弦给出了完全相同的四个数值排序也都是[1, 3, 0, 2]——和未归一化时的余弦排序一致。这不是巧合是恒等关系单位向量的点积就等于夹角的余弦。所以「点积和余弦差不多」这句话准确的说法是「归一化之后两者等价」。少了归一化这一步它们量的是两个不同的量排名不一致是必然不是 bug。这也解释了排查时的第一步该看什么排序不对先打一行日志看向量长度是不是 1。不查这一步就换模型、换索引、调参数等于在错的分岔口上继续往前走。三、一个反直觉现象数值腰斩、整体排序看着没塌top-10 却被换掉七成维度从 64 维截断到 32 维平均相似度从 0.7891 掉到 0.4316掉了将近一半但整个候选集排序的相关系数还有 0.9210看上去「没怎么乱」——真正被改掉的是头部top-10 只重合 3/10。3.1 先把「数值」和「名次」分成两个指标量 实测环境Python 3.13.12 / macOS / numpy 2.5.3importnumpyasnp np.set_printoptions(precision4,suppressTrue)rngnp.random.default_rng(7)N,D,K200,64,10crng.normal(sizeD);c/np.linalg.norm(c)# 公共主题方向 查询方向arng.uniform(0.05,1.5,sizeN)# 每个候选离主题的远近不同Xc(a/np.sqrt(D))[:,None]*rng.normal(size(N,D))X*np.array([1.0,0.2,1.0,3.0])[np.arange(N)%4][:,None]# 身长不一同实测块 1qc XnX/np.linalg.norm(X,axis1,keepdimsTrue);qnq/np.linalg.norm(q)full_cosXn qn hD//2XtXn[:,:h]trunc_cos(Xt/np.linalg.norm(Xt,axis1,keepdimsTrue))(qn[:h]/np.linalg.norm(qn[:h]))trunc_dotXt qn[:h]Prng.normal(size(h,D))/np.sqrt(h)XpXn P.T;qpqn P.T proj_cos(Xp/np.linalg.norm(Xp,axis1,keepdimsTrue))(qp/np.linalg.norm(qp))topklambdas,kK:set(np.argsort(-s)[:k].tolist())spearlambdax,y:np.corrcoef(np.argsort(np.argsort(x)),np.argsort(np.argsort(y)))[0,1]print(方案, top10重合, 平均相似度, 平均|Δ|, Spearman)print(f基线 64D 余弦, 10/10,{full_cos.mean():.4f}, 0.0000, 1.0000)forname,sin[(截断32D重归一化 余弦,trunc_cos),(截断32D 点积(未重归一化),trunc_dot),(随机投影32D 余弦,proj_cos)]:print(f{name},{len(topk(full_cos)topk(s))}/{K},{s.mean():.4f}, f{np.abs(s-full_cos).mean():.4f},{spear(full_cos,s):.4f})真实输出方案, top10重合, 平均相似度, 平均|Δ|, Spearman 基线 64D 余弦, 10/10, 0.7891, 0.0000, 1.0000 截断32D重归一化 余弦, 9/10, 0.7993, 0.0281, 0.9757 截断32D 点积(未重归一化), 3/10, 0.4316, 0.3575, 0.9210 随机投影32D 余弦, 9/10, 0.8009, 0.0372, 0.95793.2 数值掉得多不多和名次乱不乱是两件事第三行就是「数值腰斩」那一行截断到 32 维之后没有重新归一化直接和已归一化的查询做点积平均相似度从 0.7891 掉到 0.4316平均绝对变化 0.3575。这一行的全量排序相关系数还有 0.9210光看这个数会得出「排序基本没变」的结论可它的 top-10 只重合 3/10——头部七成被换掉了检索首屏已经不能用了。第二行是把它补齐归一化之后的结果数值几乎没变0.7891 → 0.7993平均绝对变化 0.0281top-10 重合 9/10相关系数 0.9757。第四行换成确定性随机投影结论和第二行接近9/10、0.9579在本文这份合成数据上截断和投影没有拉开差距。所以网上常被转述的那句「降维后相似度数值会掉很多但排序基本不变」属于社区讨论帖里的说法非官方文档未经官方确认。在本文的合成数据上它只对了一半数值确实会掉但只有在先把归一化补齐的前提下排序才基本不变不补归一化数值和 top-10 一起崩。至于「数值大幅下降、top-10 完全不变」这种理想情况在本文的合成数据上没有观察到。四、找独立信源对一遍三份一手口径各自量的是什么自测只能说明机制不能替你回答「该用哪个模型」要对账必须回到一手口径——而这几份官方口径各自量的是不同的东西不能互相代答。下面四份来源都核到了原文或摘要页原句取数日期截至 2026-10-08引用保持原样一手来源它量的是什么口径边界它不管什么sentence-transformers 文档归一化参数的定义、以及归一化后可以用点积算分不谈维度压缩不承诺归一化后排序一定与余弦逐位相同只说可以这么算分pgvector 仓库文档三种算子在数据库里的语义L2 距离、负内积、余弦距离不定义「相似度」本身也不比较模型好坏它是检索算子的口径Matryoshka Representation Learning 论文一种训练方式让同一个嵌入在不同截断维度下都能用不保证任意模型截断后都能用它描述的是按这种目标训练出来的表示MTEB 论文文本嵌入的评测覆盖面8 类任务、58 个数据集、112 种语言摘要给出的判断是没有任何一种方法在全部任务上占优所以榜单名次不能当通用结论4.1 sentence-transformers 与 pgvector归一化之后点积可以顶替余弦sentence-transformers 文档在encode()的参数表里对归一化的定义只有一句normalize_embeddings (bool, optional) – Whether to normalize returned vectors to have length 1.而在语义检索的「Speed Optimization」一节它把用途说得很直白Further, we can normalize the corpus embeddings so that each corpus embeddings is of length 1. In that case, we can use dot-product for computing scores.这两句正好对上实测块 1 的结论归一化补齐之后点积与余弦同分同名次不是经验是官方文档里写明的等价关系。pgvector 这一侧给的是算子口径——三种距离函数的原文定义分别是-- L2 distance、#- (negative) inner product、- cosine distance并且专门注明#返回的是负内积Note:#returns the negative inner product since Postgres only supportsASCorder index scans on operators也就是说在数据库层面「余弦」和「内积」本来就是两个不同的算子、两条不同的索引路径。你在应用层把打分函数从余弦改成内积等于换了一个量纲两者不可能自动对齐——除非先把向量归一化。4.2 MRL 与 MTEB一个讲截断维度仍然可用一个讲评测覆盖多任务多语言Matryoshka Representation Learning 论文arXiv 2205.13147摘要里对这种「可变维度」的表示是这么描述的MRL learns coarse-to-fine representations that are at least as accurate and rich as independently trained low-dimensional representations.它同时给了一个成本侧的结论(a) up to 14x smaller embedding size for ImageNet-1K classification at the same level of accuracy注意这条的口径边界它说的是按这种目标训练出来的表示可以截断使用不是「任何嵌入模型砍掉一半维度都还能用」。本文实测块 2 里未补归一化的截断把 top-10 打掉七成恰好说明「截断」这个动作本身不提供任何保证——保证来自训练目标和归一化处理。MTEB 论文arXiv 2210.07316摘要里对它的定位写得很清楚MTEB spans 8 embedding tasks covering a total of 58 datasets and 112 languages.以及一条对本文最有用的话We find that no particular text embedding method dominates across all tasks.这两条合起来读恰恰说明「榜单名次」不能当通用结论它量的是多任务、多语言的整体覆盖不是一个模型在你这批向量上的 top-k 稳定性。你要判断降维该不该做只能在自己那批向量上量 top-k 重合而不是看谁排在前面。本篇涉及的官方文档与论文口径把这几份一手来源的原文摘录、以及两组实测脚本整理进了资料包配合视频课看更顺。扫码即可获取五、差异来自哪里降维省的是存储和延迟代价在 top-k 排序自测结果和官方口径看起来对不上是因为它们回答的不是同一个问题文档回答「这么算等不等价」论文回答「这么训练能不能截断」你要回答的是「我这批向量的首屏还准不准」。5.1 差异的三个来源最容易搞错的是归一化状态。实测块 1、块 2 里所有的名次翻转根源都是向量长度没被统一。文档说的等价关系有前提前提没做结论就不成立。紧接着会踩的是评估指标选错。平均相似度、全量排序相关系数都会让人得出「变化不大」的印象而检索真正交付出去的是 top-k 列表头部错了就是错了。相关系数 0.9210 配 top-10 重合 3/10就是这种偏差最典型的样子。还有一层容易被忽略的是数据分布。本文实验 3 里候选与查询的相似度是有区分度的top-10 的量级在 0.9946 以上均值 0.7891如果候选之间的分差本来就很小、几乎挤在一起那降维带来的扰动会更容易改写名次。这也是为什么第一手判断只能在自己数据上做。5.2 选型清单什么时候可以降维什么时候必须停手把上面的账收敛成一张表。结论落在「先补归一化再测 top-k」这两步上而不是「降多少维划算」。场景可以降维吗落地动作向量只用来算相似度、且全链路统一归一化可以先小步试只测 top-k 重合重合不达标就退回原维度用点积索引、但向量长度没统一先停手先补归一化再谈降维否则长度和降维的影响会叠在一起分不清用模型原生的截断能力如按 MRL 目标训练可以按训练支持的档位截截断档位不要自己拍用模型给出的档位同时重新归一化检索结果要进 rerank 或人工复核可以放宽top-k 重合只要不把该召回的漏出候选集即可相似度分布很平top-k 之间分差接近噪声谨慎这类数据对维度最敏感优先保维度先做量化或换索引降维目的是省存储/省延迟但 top-k 已达标可以做把「top-k 重合达标」写成回归用例改维度就跑一次什么时候必须停手只跑了平均相似度、或者只看了全量排序相关系数就宣布「降维没什么损失」——这是最容易踩的坑。停手条件很硬top-k 重合率是你的验收线达标才上未达标就退回原维度。这条线各场景不同但至少要跑一次基线对照取你自己数据上的重合情况不要用别人的数。把「维度账」落地成用例上面这组「归一化前后对照 降维 top-k 回归」的脚本连同向量检索相关的官方文档整理进了资料包扫码即可获取附表 A本文引用事实与出处对照表事实出处本文位置「normalize_embeddings (bool, optional) – Whether to normalize returned vectors to have length 1.」《SentenceTransformer.encode》参数表Sentence Transformers 官方文档https://www.sbert.net/docs/package_reference/sentence_transformer/model.html第 4 章「Further, we can normalize the corpus embeddings so that each corpus embeddings is of length 1. In that case, we can use dot-product for computing scores.」《Semantic Search → Speed Optimization》Sentence Transformers 官方文档https://www.sbert.net/examples/sentence_transformer/applications/semantic-search/README.html第 4 章「MRL learns coarse-to-fine representations that are at least as accurate and rich as independently trained low-dimensional representations.」《Matryoshka Representation Learning》摘要页arXiv:2205.13147https://arxiv.org/abs/2205.13147第 4 章「(a) up to 14x smaller embedding size for ImageNet-1K classification at the same level of accuracy」同上摘要页第 4 章「MTEB spans 8 embedding tasks covering a total of 58 datasets and 112 languages.」《MTEB: Massive Text Embedding Benchmark》摘要页arXiv:2210.07316https://arxiv.org/abs/2210.07316第 4 章「We find that no particular text embedding method dominates across all tasks.」同上摘要页第 4 章「-- L2 distance」「#- (negative) inner product」「- cosine distance」pgvector 官方仓库 READMEhttps://github.com/pgvector/pgvector第 4 章「Note:#returns the negative inner product since Postgres only supportsASCorder index scans on operators」同上Querying → Supported distance functions第 4 章未归一化下点积排序[3, 0, 1, 2]与余弦排序[1, 3, 0, 2]归一化后两者同值同为[1, 3, 0, 2]64 维截断到 32 维时 top-10 重合 3/10未重归一化点积与 9/10重归一化余弦平均相似度 0.7891 → 0.4316 / 0.7993本文实测脚本见第 2、3 章Python 3.13.12 / numpy 2.5.3固定种子 42 与 7第 2、3 章表下口径第 3 章所有指标均来自合成随机向量不是任何真实语料或线上检索服务的采样结果「平均相似度」指查询与 200 条候选的打分均值「top-10 重合」指降维前后 top-10 候选集合的交集大小。真实项目请用你自己的向量批次复跑。写在最后这篇用到的资料写这篇文章时把相关的官方文档和源码又翻了一遍顺手也整理了几份配套的东西大模型学习路线图从零基础到能自己动手做 Agent按阶段说明每一步该学什么、哪些可以先跳过《LangChain LangGraph MCP 智能体开发实战》视频课7 个模块从私有化部署、EmbeddingRAG 到 MCPAgent 全流程AI 大模型知识库在线可查Agent Skills 从入门到落地、Claude Skills 完全指南等专题按目录浏览即可640 套 AI 大模型行业报告 经典 PDF 书籍看行业落地案例和别人怎么做的时候用得上大模型零基础到精通教学视频跟着敲一遍比只读文档快得多资料是我自己整理的放在下面这个码上扫码即可获取添加时备注「AI」优先通过。资料按「先路线、再动手、最后查漏」的顺序整理好了建议先看学习路线那一份照着它挑一条适合自己当前基础的路径再往下看。

相关新闻

家具电商详情页设计及主图生成全套注意事项

家具电商详情页设计及主图生成全套注意事项

(运营美工通用,适配淘宝/拼多多/抖音小店/1688,结合木创家AI落地要点)一、首屏图核心:5秒抓住客户,决定是否往下滑1. 首屏大图必须直击卖点, 不要放杂乱场景图,优先放全景实景图核心…

2026/10/9 2:21:31 阅读更多 →
家具电商老板 / 运营经理高频 AI 应用 FAQ(木创家 AI 落地版)

家具电商老板 / 运营经理高频 AI 应用 FAQ(木创家 AI 落地版)

全链路的解决家具电商的图片生成,详情页制作问题FAQ指南 全部围绕家具主图、电商详情页、图片修复、材质替换、批量出图、成本、实操、避坑等提问标准答案 一、基础认知类(老板最先关心) Q1:家居电商用AI到底能解决我们哪些实实在…

2026/10/9 2:21:31 阅读更多 →
docksec 容器安全审计核心概念:Linux Capabilities、命名空间隔离与 CIS Docker Benchmark 深度解析

docksec 容器安全审计核心概念:Linux Capabilities、命名空间隔离与 CIS Docker Benchmark 深度解析

【免费下载链接】Cybersecurity-Projects Building 70 Projects ranging from beginner to advanced so anyone can — learn from, build upon, use as a reference, or even copy directly. Gamified Cybersecurity learning 👇 项目地址: https://git…

2026/10/9 2:21:31 阅读更多 →

最新新闻

DeepSeek私有化部署与自有数据训练全流程实战指南

DeepSeek私有化部署与自有数据训练全流程实战指南

简介:这份PDF文档面向希望在企业内部落地大语言模型的技术开发人员,包括机器学习工程师、数据科学家与软件开发者,系统讲解DeepSeek私有化部署与自有数据训练的全流程。内容从DeepSeek的技术架构、预训练与微调机制切入,依次覆盖硬…

2026/10/9 2:58:50 阅读更多 →
UDS 针对服务 - 0x7F

UDS 针对服务 - 0x7F

等待更新…

2026/10/9 2:58:50 阅读更多 →
嵌入式驱动开发实战:从能跑到能交付的进阶指南

嵌入式驱动开发实战:从能跑到能交付的进阶指南

嵌入式驱动开发这个方向,外面看着门槛高,进去之后发现真正难的不是写代码,而是搞清楚"为什么这么写"。我做了十多年嵌入式,从裸机寄存器到Linux内核驱动都趟过一遍,带过不少新人,发现大家卡住的地…

2026/10/9 2:58:50 阅读更多 →
DeepSeek跨框架迁移:PyTorch权重转TensorFlow实战指南

DeepSeek跨框架迁移:PyTorch权重转TensorFlow实战指南

简介:针对DeepSeek模型在PyTorch与TensorFlow框架间迁移训练的完整技术文档,共197页、48个大章节,面向算法工程师与深度学习开发者,系统解决跨框架适配、权重转换、灵活训练方案落地等核心问题。文档支持目录章节跳转、书签大纲与…

2026/10/9 2:58:50 阅读更多 →
RK3588摄像头与LCD显示调试实战:从硬件匹配到零拷贝AI显示

RK3588摄像头与LCD显示调试实战:从硬件匹配到零拷贝AI显示

1. 为什么RK3588的摄像头LCD不是“接上线就能用”,而是嵌入式AI落地的第一道真实门槛你是不是也经历过——手捧一块标着“RK3588 AI开发板”的板子,兴冲冲插上USB摄像头、接好LVDS屏,烧完系统一开机,屏幕黑着,ls /dev/…

2026/10/9 2:58:50 阅读更多 →
Shell脚本遍历日期范围:原理、写法与常见坑

Shell脚本遍历日期范围:原理、写法与常见坑

简介:针对Shell脚本中常见的日期范围遍历需求,一份可直接运行的脚本实例被整理为PDF文档。脚本通过命令行传入开始日期与结束日期,利用date命令解析日期并转换为Unix时间戳,再借助嵌套循环逐日递减,输出范围内的全部日…

2026/10/9 2:57:49 阅读更多 →

日新闻

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API实战:LocalDate、Date与ZonedDateTime的转换与避坑指南

Java时间API这个话题,隔三差五就会在群里被翻出来讨论一次。上周还有个同事线上处理一个订单超时问题,排查到最后发现是ZonedDateTime序列化后时区丢了,用户在下单当天晚上看到的时间整整差了8个小时。这类问题几乎每个做Java开发的人都遇到过…

2026/10/9 0:00:49 阅读更多 →
EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

EasyTier实践:从NAT穿透到子网代理的异地组网部署与排错

前几个月我手头有好几台机器需要互相访问:办公室台式机、家里 NAS、还有一台云主机。如果只是偶尔传个文件倒还好,问题是工作场景经常要在几处环境之间来回切换,每次都先登录跳板机再层层代理,实在折腾。我先后试过端口映射、自建…

2026/10/9 0:00:49 阅读更多 →
AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent工程实战:从七要素到七个决策点的系统设计指南

AI Agent 这个词在过去一年里被反复提及,但真正动手搭过一套能跑起来的 Agent 系统的人都知道,从"知道它是什么"到"让它稳定干活"之间隔着一整套工程决策。我前后参与过几个 Agent 项目的落地,从最初用现成框架拼装&…

2026/10/9 0:01:50 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/8 15:26:32 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/8 15:26:40 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/8 10:10:36 阅读更多 →

月新闻

我发现了一个新思路:用 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/8 21:13:17 阅读更多 →
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/8 15:26:17 阅读更多 →
黑夜航拍船只数据集训练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/7 13:34:55 阅读更多 →