StackExchange.Redis 中的 Redis Vector Sets 实战指南:从向量写入到相似度搜索的完整 API 解析
后端缓存数据库客户端消息队列【免费下载链接】StackExchange.RedisThe Redis client for .NET项目地址https://gitcode.com/gh_mirrors/st/StackExchange.Redis点击查看免费下载Redis Vector Sets向量集合是 Redis 8.0 起提供的向量数据类型用于高效存储向量数据并执行相似度检索。本文以 StackExchange.Redis 官方文档 docs/VectorSets.md 为骨架结合仓库内 RedisDatabase.VectorSets.cs、VectorSetAddRequest.cs、VectorSetSimilaritySearchRequest.cs 等源码实现与 VectorSetIntegrationTests.cs 测试用例完整讲解 SE.Redis 强类型向量 API 的用法、底层命令映射、内存管理与性能优化策略。读完本文你将能够使用 StackExchange.Redis 完成向量写入、带 JSON 属性的过滤式相似度搜索、HNSW 索引调参、范围查询与语义搜索/推荐系统等实战方案。前置条件Redis 版本要求Vector Sets 依赖 Redis 8.0 或更高版本。在调用任何VectorSet*系列 API 之前请确认服务端版本满足要求否则命令将不被识别。客户端侧无需额外配置只要使用本文介绍的 API 即可向量集在首次执行VADD时自动创建其索引类型默认使用 HNSW 近似最近邻索引与参数可在写入时控制详见下文高级配置一节。快速上手与文档一致下文示例中的向量仅为便于演示而缩小4 维实际生产场景中通常使用高维向量如 128、384、768 维。API 的设计目标是高效处理大向量例如 VectorSetAddRequest.Member 接收ReadOnlyMemoryfloat而非数组这使得你可以直接基于ArrayPoolT池化缓冲区甚至内存映射文件memory-mapped files中的原始内存工作避免不必要的数组分配与拷贝。添加向量使用VectorSetAddAsync将成员及其向量写入向量集var db conn.GetDatabase(); var key product-embeddings; // 从 ML 模型产出的向量 var vector new[] { 0.1f, 0.2f, 0.3f, 0.4f }; // 添加带向量的成员 var request VectorSetAddRequest.Member(product-123, vector.AsMemory()); bool added await db.VectorSetAddAsync(key, request);返回值bool表示成员是否新增已存在成员的重复写入返回false。同步版本VectorSetAdd同样可用两者在 RedisDatabase.VectorSets.cs 中最终都会把request转换为VADD命令消息下发。添加带属性的向量可以为成员附加 JSON 元数据用于后续过滤搜索var vector new[] { 0.1f, 0.2f, 0.3f, 0.4f }; var request VectorSetAddRequest.Member( product-123, vector.AsMemory(), attributesJson: {category:electronics,price:299.99} ); await db.VectorSetAddAsync(key, request);从 VectorSetAddMessage.cs 的实现可见属性会以SETATTR {attributes}参数形式随VADD一并发送。此外源码还暴露了UseCheckAndSet对应CAS参数用于按需做检查-设置模式的部分线程安全写入详见 VectorSetAddRequest.cs。相似度搜索按已有成员搜索相似向量使用VectorSetSimilaritySearchAsync// 按已有成员搜索 var query VectorSetSimilaritySearchRequest.ByMember(product-123); query.Count 10; query.WithScores true; using var results await db.VectorSetSimilaritySearchAsync(key, query); if (results is not null) { foreach (var result in results.Value.Results) { Console.WriteLine($Member: {result.Member}, Score: {result.Score}); } }也可以直接用一个向量作为查询var queryVector new[] { 0.15f, 0.25f, 0.35f, 0.45f }; var query VectorSetSimilaritySearchRequest.ByVector(queryVector.AsMemory()); query.Count 10; query.WithScores true; using var results await db.VectorSetSimilaritySearchAsync(key, query);两种查询方式分别对应VSIM命令的ELE {member}与FP32 {vector}目标形态见 VectorSetSimilaritySearchMessage.cs。结果类型 VectorSetSimilaritySearchResult 提供Member、Score0~11 表示完全一致0 表示方向相反未请求WITHSCORES时为NaN与可选的AttributesJson。过滤搜索使用 JSONPath 表达式过滤结果var query VectorSetSimilaritySearchRequest.ByVector(queryVector.AsMemory()); query.Count 10; query.FilterExpression $.category electronics $.price 500; query.WithAttributes true; // 结果中包含属性 query.MaxFilteringEffort 100; // 可选限制过滤重试次数FILTER-EF 参数 using var results await db.VectorSetSimilaritySearchAsync(key, query);FilterExpression对应FILTER参数其完整语法如、、组合、嵌套路径等以 Redis 官方 Vector Sets 过滤搜索文档为准MaxFilteringEffortFILTER-EF则控制过滤时的最大尝试次数二者均由 VectorSetSimilaritySearchRequest.cs 公开并映射到 VectorSetSimilaritySearchMessage.cs 的写盘逻辑。Vector Set 常用操作以下 API 均提供同步与Async两种形态底层命令映射可从 RedisDatabase.VectorSets.cs 直接确认。获取向量集信息VINFO命令返回集合元数据由只读结构体 VectorSetInfo 承载var info await db.VectorSetInfoAsync(key); if (info is not null) { Console.WriteLine($Dimension: {info.Value.Dimension}); Console.WriteLine($Length: {info.Value.Length}); Console.WriteLine($Quantization: {info.Value.Quantization}); }除文档展示的Dimension向量维度与Length集合基数外VectorSetInfo还包含MaxLevelHNSW 图结构最高层、VectorSetUid集合唯一标识与HnswMaxNodeUidHNSW 图中最大节点 ID可用于观测索引规模。当服务端返回未知量化类型时Quantization为Unknown此时可通过QuantizationRaw读取原始字符串见 VectorSetQuantization.cs。检查成员是否存在bool exists await db.VectorSetContainsAsync(key, product-123);对应VISMEMBER命令RedisDatabase.VectorSets.cs。移除成员bool removed await db.VectorSetRemoveAsync(key, product-123);对应VREM命令返回是否确实移除了成员。获取随机成员// 获取单个随机成员 var member await db.VectorSetRandomMemberAsync(key); // 获取多个随机成员 var members await db.VectorSetRandomMembersAsync(key, count: 5);分别对应VRANDMEMBER与带count的VRANDMEMBERRedisDatabase.VectorSets.cs可服务于抽样、A/B 测试等场景。范围查询按字典序范围获取成员VRANGE命令支持按成员名的字典序做范围遍历返回LeaseRedisValue// 获取全部成员 using var allMembers await db.VectorSetRangeAsync(key); // ... 访问 allMembers.Span 等 // 获取指定范围内的成员 using var rangeMembers await db.VectorSetRangeAsync( key, start: product-100, end: product-200, count: 50 ); // 排除边界 using var members await db.VectorSetRangeAsync( key, start: product-100, end: product-200, exclude: Exclude.Both );参数细节可在 RedisDatabase.VectorSets.cs 中确认start/end为空时分别映射为-与正负无穷exclude通过(开区间与[闭区间前缀控制边界count默认-1表示不限制返回数量。枚举大结果集对于大型向量集应使用异步枚举按批处理结果避免客户端一次性缓冲全部数据await foreach (var member in db.VectorSetRangeEnumerateAsync(key, count: 100)) { Console.WriteLine($Processing: {member}); }从 RedisDatabase.VectorSets.cs 的实现可以看到其工作原理每次拉取一批默认count100将本批最后一个值作为下一批的排他起点继续向后翻页当返回批长度小于count或到达指定终点时停止。这意味着提前退出循环时客户端与服务端都会停止处理与发送剩余结果。枚举同样支持异步取消using var cts new CancellationTokenSource(); // 取消逻辑未展示 await foreach (var member in db.VectorSetRangeEnumerateAsync(key, count: 100) .WithCancellation(cts.Token)) { // ... }内部通过[EnumeratorCancellation]把取消令牌贯穿到每一批的VectorSetRangeAsync调用RedisDatabase.VectorSets.cs做到按批粒度的协作式取消。高级配置量化Quantization控制向量压缩方式降低内存占用并提升检索速度var request VectorSetAddRequest.Member(product-123, vector.AsMemory()); request.Quantization VectorSetQuantization.Int8; // 默认 // 或 VectorSetQuantization.None 对应 NOQUANT / f32 全精度 // 或 VectorSetQuantization.Binary对应 BIN 二进制量化 await db.VectorSetAddAsync(key, request);枚举定义见 VectorSetQuantization.csInt88 位整数量化默认值对应int8/Q8、None全精度 f32对应NOQUANT、Binary二进制量化对应BIN。量化类型通过AsciiHash特性与服务端返回的字符串做无分配快速解析并在 VectorSetAddMessage.cs 中按类型决定是否携带NOQUANT/BIN参数Int8为隐式默认不发送参数。维度缩减使用随机投影random projection降低向量维度var request VectorSetAddRequest.Member(product-123, vector.AsMemory()); request.ReducedDimensions 128; // 从原始维度降维 await db.VectorSetAddAsync(key, request);对应VADD的REDUCE {dim}参数VectorSetAddRequest.cs、VectorSetAddMessage.cs。适合对极高维向量在牺牲一定精度的前提下换取内存与计算开销。HNSW 索引参数在写入时微调 HNSW 图构建参数var request VectorSetAddRequest.Member(product-123, vector.AsMemory()); request.MaxConnections 32; // M 参数默认 16每个节点的最大连接数 request.BuildExplorationFactor 400; // EF 参数默认 200构建期的探索因子 await db.VectorSetAddAsync(key, request);MaxConnections与BuildExplorationFactor的默认值、语义M {numlinks}、EF {build-exploration-factor}均可在 VectorSetAddRequest.cs 的 XML 注释中确认。注意这些参数是在首次创建该向量集即对空 key 的首次VADD时生效的索引配置已建索引的后续写入不会改变图结构参数。搜索参数控制搜索阶段的行为var query VectorSetSimilaritySearchRequest.ByVector(queryVector.AsMemory()); query.SearchExplorationFactor 500; // EF 越大越精确但越慢 query.Epsilon 0.1; // 仅返回相似度 0.9 的结果 query.UseExactSearch true; // 使用线性扫描TRUTH替代 HNSW 近似搜索 await db.VectorSetSimilaritySearchAsync(key, query);SearchExplorationFactorEF搜索期探索因子越大召回率越高、耗时越长EpsilonEPSILON相似度阈值只返回相似度 1 - epsilon的结果如0.1对应阈值0.9UseExactSearchTRUTH强制线性精确扫描牺牲性能换取 100% 准确召回适用于小集合或对精度要求苛刻的场景。上述参数以及DisableThreadingNOTHREAD高级选项将搜索限制在主线程执行的完整映射见 VectorSetSimilaritySearchRequest.cs 与 VectorSetSimilaritySearchMessage.cs。向量数据处理获取近似向量按成员获取其近似向量注意若启用了量化或维度缩减返回的是重建后的近似向量而非原始值using var vectorLease await db.VectorSetGetApproximateVectorAsync(key, product-123); if (vectorLease ! null) { ReadOnlySpanfloat vector vectorLease.Value.Span; // 使用向量数据 }对应VEMB命令结果以Leasefloat返回见 RedisDatabase.VectorSets.cs务必用后即还详见内存管理一节。管理 JSON 属性// 获取属性 var json await db.VectorSetGetAttributesJsonAsync(key, product-123); // 设置属性 await db.VectorSetSetAttributesJsonAsync( key, product-123, {category:electronics,updated:2024-01-15} );分别对应VGETATTR与VSETATTR命令RedisDatabase.VectorSets.cs、RedisDatabase.VectorSets.cs。VSETATTR返回bool表示成员是否存在可用于校验。查看 HNSW 图链接检查 HNSW 图结构中的邻居连接// 获取链接的成员列表 using var links await db.VectorSetGetLinksAsync(key, product-123); if (links ! null) { foreach (var link in links.Value.Span) { Console.WriteLine($Linked to: {link}); } } // 获取带相似度分数的链接 using var linksWithScores await db.VectorSetGetLinksWithScoresAsync(key, product-123); if (linksWithScores ! null) { foreach (var link in linksWithScores.Value.Span) { Console.WriteLine($Linked to: {link.Member}, Score: {link.Score}); } }二者均对应VLINKS命令后者追加WITHSCORES参数结果元素类型为 VectorSetLink含Member与Score。该能力可用于诊断索引质量、可视化图结构或做基于图邻居的扩展检索。内存管理LeaseT向量相关操作相似度搜索、范围查询、近似向量、图链接返回LeaseT。LeaseT是一段由内存池默认ArrayPoolT.Shared也支持自定义MemoryPoolT支撑的连续内存必须在使用后释放以归还池中内存见 Lease.cs。// 推荐using 语句 using var results await db.VectorSetSimilaritySearchAsync(key, query); // 或显式释放 var results await db.VectorSetSimilaritySearchAsync(key, query); try { // 使用 results } finally { results?.Dispose(); }using声明式的隐式释放scope 结束时在大多数场景下足够安全显式finally释放则适合需要精确控制归还时机的长生命期代码。服务端返回null时如集合不存在或按成员搜索的成员缺失上述代码也能正确跳过释放。性能考量批量写入批量插入推荐使用管道pipelining一次往返提交多个VADDvar batch db.CreateBatch(); var tasks new ListTaskbool(); foreach (var (member, vector) in vectorData) { var request VectorSetAddRequest.Member(member, vector.AsMemory()); tasks.Add(batch.VectorSetAddAsync(key, request)); } batch.Execute(); await Task.WhenAll(tasks);管道批量提交把 N 次命令合并为更少的网络往返显著提升吞吐。若要控制单批规模可对vectorData分片后循环执行。搜索优化要点量化使用VectorSetQuantization.Int8默认或Binary降低内存占用并提升搜索速度代价是向量精度损失调优SearchExplorationFactor在召回率与延迟之间取平衡数值越大越精确、越慢使用过滤表达式缩小搜索空间减少无效候选考虑维度缩减对超高维向量使用ReducedDimensions投影换空间与算力小集合用精确搜索UseExactSearch trueTRUTH在集合规模较小时可避免 HNSW 近似误差。范围查询分页优先使用异步枚举分批处理避免一次性载入全部结果// 好按批加载、逐项处理 await foreach (var member in db.VectorSetRangeEnumerateAsync(key)) { await ProcessMemberAsync(member); } // 避免一次性加载全部结果 using var allMembers1 await db.VectorSetRangeAsync(key); // 避免虽然分批拉取但 ToArrayAsync 仍会把全部结果堆进内存 var allMembers2 await db.VectorSetRangeEnumerateAsync(key).ToArrayAsync();ToArrayAsync这类消费型收尾操作会抵消枚举的按批内存优势应避免在大集合上使用。常见模式语义搜索将文档嵌入向量存储后按查询向量检索// 1. 存储文档嵌入向量 var embedding await GetEmbeddingFromMLModel(document); var request VectorSetAddRequest.Member( documentId, embedding.AsMemory(), attributesJson: $${title:{{document.Title}},date:{{document.Date}}} ); await db.VectorSetAddAsync(documents, request); // 2. 按查询向量搜索相似文档 var queryEmbedding await GetEmbeddingFromMLModel(searchQuery); var query VectorSetSimilaritySearchRequest.ByVector(queryEmbedding.AsMemory()); query.Count 10; query.WithScores true; query.WithAttributes true; using var results await db.VectorSetSimilaritySearchAsync(documents, query);属性标题、日期等随结果返回可用于直接渲染或二次过滤。推荐系统基于用户已喜欢的商品做相似推荐并用属性过滤库存与价格// 以用户喜欢的商品为锚点查找相似商品 var query VectorSetSimilaritySearchRequest.ByMember(userLikedItemId); query.Count 20; query.FilterExpression $.inStock true $.price 100; query.WithScores true; using var recommendations await db.VectorSetSimilaritySearchAsync(products, query);附API 与 Redis 命令映射速查以上各 API 的底层命令映射可直接在 RedisDatabase.VectorSets.cs 中核对接口声明见 IDatabaseAsync.VectorSets.cs集成验证用例见 VectorSetIntegrationTests.csAPIAsync 形态Redis 命令用途VectorSetAddAsyncVADD添加成员与向量含SETATTR/REDUCE/CAS/量化/HNSW 参数VectorSetSimilaritySearchAsyncVSIM按成员ELE或向量FP32相似度搜索VectorSetLengthAsync/VectorSetDimensionAsyncVCARD/VDIM集合基数 / 向量维度VectorSetInfoAsyncVINFO集合元数据量化、维度、基数、HNSW 状态VectorSetContainsAsyncVISMEMBER成员存在性检查VectorSetRemoveAsyncVREM移除成员VectorSetRandomMember(s)AsyncVRANDMEMBER随机成员抽样VectorSetRangeAsync/VectorSetRangeEnumerateAsyncVRANGE字典序范围查询 / 分批枚举VectorSetGetApproximateVectorAsyncVEMB获取成员的近似向量VectorSetGetAttributesJsonAsync/VectorSetSetAttributesJsonAsyncVGETATTR/VSETATTR读写 JSON 属性VectorSetGetLinksAsync/VectorSetGetLinksWithScoresAsyncVLINKS可选WITHSCORES查看 HNSW 图链接结语StackExchange.Redis 对 Redis Vector Sets 提供了完整且强类型的客户端支持从VADD写入、VSIM相似度搜索、VRANGE范围枚举到 HNSW 索引调参、量化与维度缩减再到LeaseT池化内存管理均可通过统一的IDatabaseAPI 高效使用。建议在生产中遵循本文的性能要点——批量管道写入、按需量化、过滤缩小搜索空间、用异步枚举处理大结果集并在引入前确认 Redis 服务端为 8.0 及以上版本。赞分享后端缓存数据库客户端消息队列【免费下载链接】StackExchange.RedisThe Redis client for .NET项目地址https://gitcode.com/gh_mirrors/st/StackExchange.Redis点击查看免费下载相关推荐Redis搜索模块RediSearch使用Redis搜索模块RediSearch使用 Redis作为高性能的键值对数据库除了基础的数据结构支持外还通过模块系统扩展了更多高级功能。RediSearc数据库缓存KV存储消息队列不装任何客户端怎么拿到 8 大网盘的网盘直链地址不装任何客户端怎么拿到 8 大网盘的网盘直链地址 把资料从网盘搬到新设备时逐个安装各家的官方客户端是条弯路——很多平台连 Linux 版都没有。免费开源的油前端Redis Vector Sets 实战指南HNSW 向量检索与混合过滤搜索完全解析Redis Vector Sets 实战指南HNSW 向量检索与混合过滤搜索完全解析 导读 Redis Vector Sets 是 Redis 8 起内置的一数据库缓存KV存储消息队列上一篇使用 Quick 测试 iOS 与 OS X 应用UIViewController 生命周期、Storyboard 与异步等待完整实战指南下一篇D2DX3个步骤让经典暗黑破坏神2在现代PC上焕发新生创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Panda CSS 虚拟 styled-system 指南:npm 设计系统消费与 Overlay 代码生成

Panda CSS 虚拟 styled-system 指南:npm 设计系统消费与 Overlay 代码生成

前端构建工具开发工具 【免费下载链接】panda 🐼 Universal, Type-Safe, CSS-in-JS Framework for Design Systems ⚡️ 项目地址: https://gitcode.com/gh_mirrors/pa/panda 点击查看 免费下载 导读 本文讲解 Panda CSS 仓库中“虚拟 styled-system&a…

2026/10/10 2:17:53 阅读更多 →
第8篇:Agent工具系统 —— 从Function Calling到自定义Tool

第8篇:Agent工具系统 —— 从Function Calling到自定义Tool

第8篇:Agent工具系统 —— 从Function Calling到自定义Tool工具(Tool)是Agent与外部世界交互的接口。没有工具的Agent只是一个“对话模型”,有了工具的Agent才能真正“行动”——搜索信息、查询数据库、发送邮件、执行代码。本文系…

2026/10/10 2:17:53 阅读更多 →
AI芯片软硬件协同设计:从架构选型到流片Bring-up的工程实践

AI芯片软硬件协同设计:从架构选型到流片Bring-up的工程实践

1. AI芯片软硬件协同设计的核心逻辑1.1 为什么软硬件必须一起设计做AI芯片这行的人都有一个共识:芯片设计不再是单纯的硬件活儿。十年前做芯片,硬件团队把RTL写好、时序收敛、流片回来,软件团队再慢慢适配驱动和框架,这种串行模式…

2026/10/10 2:16:53 阅读更多 →

最新新闻

PyTorch+LSTM电影评论情感分析实战:从预处理到模型部署

PyTorch+LSTM电影评论情感分析实战:从预处理到模型部署

简介:一份评审分达99分的基于深度学习的电影评论情感分析项目资源包,适合计算机相关专业课程设计、期末大作业及入门实战,重点解决从数据爬取到模型训练演示中缺完整代码、缺数据集、缺文档的常见问题。资源围绕豆瓣短评设计,约5万…

2026/10/10 3:47:26 阅读更多 →
ruff + mypy + 模型:构建双轨代码审查流水线

ruff + mypy + 模型:构建双轨代码审查流水线

先聊一个现象:不少团队的代码评审还是“人在盯”,静态检查工具只跑了个摆设,规则集是默认的,类型标注是稀稀拉拉的,AI模型要么没接,要么接了也只是把diff丢给模型让它“帮忙看看”。直到我最近把一个内部数…

2026/10/10 3:47:26 阅读更多 →
OpenClaw智能体实战:从零搭建可运行的多步任务智能体

OpenClaw智能体实战:从零搭建可运行的多步任务智能体

简介:这份PDF资料源自厦门大学大数据教学团队的大模型科普讲座,面向希望系统理解人工智能与智能体应用的高校师生、科研人员及技术爱好者。内容从1950年图灵测试与1956年达特茅斯会议讲起,梳理人工智能六大发展阶段与未来五个阶段预测&#x…

2026/10/10 3:47:26 阅读更多 →
Flink性能调优:从并行度到状态管理的实战经验

Flink性能调优:从并行度到状态管理的实战经验

在大数据这个圈子里,“数据处理效率”是最常被挂在嘴边的一句话,但真正能在高吞吐、低延迟、可恢复性这三个方向同时站住的引擎,Flink绕不开。我第一次系统性使用Flink是在一个实时数仓项目里,数据源是几千万级的订单行为流&#…

2026/10/10 3:47:26 阅读更多 →
面向对象基础详解:类与对象、三大特性及常见面试坑

面向对象基础详解:类与对象、三大特性及常见面试坑

我最早接触面向对象,是在某家IT培训机构的基础班上。当时老师放了一张PPT,上面写着“面向对象三大特性:封装、继承、多态”,下面坐着的同学一半在记笔记,一半在发呆。我也是发呆的那一半——封装是啥?继承谁…

2026/10/10 3:47:26 阅读更多 →
从“无标题”到成品:内容项目定位与执行全流程

从“无标题”到成品:内容项目定位与执行全流程

“无标题”这三个字,可能是很多内容项目最真实的起点。文档是新建的,文件夹是空的,脑子里堆着七八个点子,但项目名称、内容方向、目标用户全都没有定下来。我经手过不少这样的盘子,最容易翻车的地方不在后面执行&#…

2026/10/10 3:46:25 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

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/10 1:36:08 阅读更多 →
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/9 10:11:06 阅读更多 →

月新闻

我发现了一个新思路:用 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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/9 6:17:20 阅读更多 →