发布时间:2026/6/14 1:14:28
SQL Server Hekaton内存优化引擎:高并发场景下的性能突破实践
1. 项目概述当数据库引擎迎来“内存优先”革命“Hekaton Breaks Through”这个标题直译过来是“赫卡同的突破”听起来有点神秘但在数据库领域它指的是一场静默却影响深远的架构革命。Hekaton是微软SQL Server中集成的高性能内存优化数据库引擎。这个项目标题背后不是一个独立的产品而是一种设计哲学的胜利它标志着传统以磁盘为中心的数据库设计思路在应对现代高并发、低延迟场景时遇到了瓶颈而“内存优先”的架构开始成为关键业务系统的核心支柱。我最早接触Hekaton是在处理一个实时风控系统的性能瓶颈时。当时的系统基于传统磁盘表在交易高峰时段每秒数千次的并发写入和复杂查询让磁盘I/O成了不可逾越的障碍响应时间从毫秒级恶化到秒级业务方抱怨连连。在尝试了各种索引优化、查询重写甚至硬件升级后收效甚微。直到我们将核心的交易流水表迁移到Hekaton内存优化表上性能提升是颠覆性的平均延迟降低了两个数量级吞吐量提升了近百倍而且系统变得异常平稳。这不仅仅是“变快了”而是整个应用交互模式的改变以前不敢做的实时聚合、复杂事件处理现在都可以轻松实现。那么Hekaton到底是什么简单说它是SQL Server数据库引擎内部的一个“特区”。在这个特区内表的数据完全常驻在内存中所有的数据操作增删改查都直接在内存中进行从而彻底绕过了传统磁盘I/O的瓶颈。但它的革命性不止于此。为了匹配内存的高速特性Hekaton重新设计了并发控制机制采用了一种乐观的、无锁的多版本并发控制MVCC方案替代了传统的基于锁和闩latch的机制这从根本上解决了高并发下的争用问题。同时它采用编译而非解释的方式来执行T-SQL存储过程将过程变成高度优化的本地DLL代码执行效率堪比C程序。因此“Breaks Through”突破的是性能的极限、是并发能力的天花板、更是我们对关系型数据库能做什么的想象。这项技术最适合谁如果你正在面临以下挑战那么Hekaton很可能就是你的突破口首先是极高的吞吐量需求例如金融交易、在线游戏、物联网数据采集需要每秒处理数万甚至数十万笔事务其次是极低的延迟要求比如实时竞价、欺诈检测要求响应时间在毫秒甚至亚毫秒级别最后是令人头疼的高并发冲突在传统的锁机制下大量用户同时修改少量热点数据导致大量阻塞和死锁拖慢整个系统。对于开发者和架构师而言理解Hekaton意味着掌握了一种将关键业务模块性能提升一个甚至数个数量级的核心手段。2. 核心架构解析为何内存优化能带来数量级提升要理解Hekaton的“突破”性我们不能只停留在“它把数据放在内存里所以快”的层面。市面上很多缓存方案如Redis也是内存存储但Hekaton的不同之处在于它是一套完整的、与SQL Server深度集成的关系型数据库引擎支持完整的ACID事务和丰富的T-SQL语法。它的突破是一系列协同设计的架构创新共同作用的结果。2.1 内存优先的存储与索引结构传统磁盘表的存储结构是为磁盘的机械特性设计的数据页、区、B-Tree索引所有这些都围绕着减少随机I/O、利用顺序I/O的思想。但当数据全在内存中时这些优化反而成了包袱。Hekaton的存储引擎是为内存的随机访问特性从头设计的。数据在Hekaton中以“行”为单位存储在内存中但这些行并非散乱存放。它们被组织在两种全新的索引结构下哈希索引和范围索引一种无锁的Bw-Tree变体。哈希索引针对等值查询WHERE id value进行了极致优化通过一个内存中的哈希桶数组可以在O(1)的时间复杂度内定位到数据这对于主键查找和点查询场景效率惊人。而范围索引则用于支持范围查询WHERE date start、排序ORDER BY和连接JOIN操作它的内部结构避免了传统B-Tree在节点分裂和合并时需要的锁通过一种“增量更新”的机制来实现无锁的并发修改。注意选择索引类型是关键的设计决策。如果你的业务场景90%以上是精确的主键查询那么哈希索引是首选。但如果你的查询模式包含大量的范围扫描、前缀匹配或排序那么范围索引通常更合适。一个常见的误区是为所有列都创建索引这在Hekaton中会带来显著的内存开销和维护成本需要谨慎评估。所有数据行和索引条目都包含必要的时间戳信息以支持多版本并发控制MVCC。当你更新一行数据时Hekaton不会在原地覆盖旧数据而是创建该行数据的一个新版本并将旧版本标记为待清理。这种“追加式”的写入模式完全避免了写入冲突是实现高并发写入的基石。2.2 乐观无锁的并发控制机制这是Hekaton与传统数据库最根本的区别也是其高并发能力的核心。传统数据库使用悲观并发控制一个事务在读取或修改数据前会先获取锁共享锁、排他锁以防止其他事务干扰。这就像只有一个入口的仓库每个人进去前都要拿钥匙容易造成排队阻塞和互相等待不放钥匙死锁。Hekaton采用了乐观并发控制OCC。它的哲学是“假设冲突很少发生先放手去做提交时再检查”。具体流程如下事务执行阶段事务在私有工作区中进行所有读写操作不获取任何锁。读操作看到的是事务开始时的数据快照。写操作在内存中创建数据的新版本。验证阶段提交时在事务提交的瞬间系统会进行“有效性验证”。它检查在该事务执行期间是否有其他已提交的事务修改了本事务读取过的数据。如果没冲突万事大吉如果有冲突即发生了“写倾斜”则当前事务回滚。提交阶段验证通过后事务的更改所有新版本的行以一种原子性的方式对其他事务可见。这种机制的巨大优势在于读操作永远不会阻塞写操作写操作也永远不会阻塞读操作。只有在两个事务恰好修改了同一行数据并同时提交时后提交的事务才会回滚。在冲突率低的场景如物联网传感器数据、用户行为日志、金融交易流水系统可以轻松支撑起惊人的并发量。应用程序需要做的就是处理好偶尔因冲突导致的提交失败通常采用重试逻辑即可。2.3 本地编译存储过程从解释到执行即使数据在内存中、并发无锁如果执行引擎本身效率低下瓶颈依然存在。传统T-SQL存储过程是解释执行的每执行一次引擎都要解析语句、生成执行计划、然后按计划一步步执行。对于高频调用的简单过程这个开销占比会很高。Hekaton引入了本地编译存储过程Natively Compiled Stored Procedures。当你创建一个标记为WITH NATIVE_COMPILATION的存储过程时SQL Server会在创建时而非运行时将其编译成高度优化的机器码DLL。这个过程包括查询优化与固化在编译期就确定最优的执行计划运行时无需任何优化器开销。生成C代码将T-SQL逻辑转换为C代码。编译为本地DLL调用C编译器如Visual C生成真正的处理器指令。编译后的存储过程其执行路径是硬编码的数据访问直接通过内存指针进行函数调用开销极低。实测下来一个编译后的简单插入或查询过程其执行速度可以是解释型过程的十倍甚至百倍。这对于封装核心业务逻辑、每秒被调用成千上万次的操作如“下单”、“记账”来说是性能利器。实操心得并非所有存储过程都适合本地编译。它适用于逻辑相对固定、执行频率极高的短小精悍的过程。对于逻辑复杂、包含动态SQL或很少执行的过程编译带来的启动开销和灵活性丧失可能不划算。一个最佳实践是将热点交易路径上的核心操作封装成小的本地编译存储过程而将复杂的业务编排留在传统的解释型过程中。3. 从设计到部署实战启用Hekaton内存优化表理解了原理我们来看如何将一个现有的热点表迁移到Hekaton或者如何从零开始设计一个内存优化表。这个过程需要细致的规划和测试但步骤本身是清晰可循的。3.1 环境准备与兼容性评估首先确保你的SQL Server版本支持Hekaton。它从SQL Server 2014开始引入后续版本功能不断增强。对于生产环境我强烈建议使用SQL Server 2016或更高版本因为它们提供了更成熟的工具链如内存优化顾问和更好的功能支持如列存储索引、临时表。启用Hekaton功能需要在数据库级别进行。你需要创建一个支持内存中OLTP的文件组。这不仅仅是逻辑概念它对应着磁盘上的一个或多个文件用于持久化内存优化表的日志和检查点数据注意表数据在内存但为了持久化日志和检查点仍需落盘。-- 为现有数据库添加内存优化文件组和文件 ALTER DATABASE YourDatabase ADD FILEGROUP Hekaton_FG CONTAINS MEMORY_OPTIMIZED_DATA; ALTER DATABASE YourDatabase ADD FILE ( NAME Hekaton_Data, FILENAME D:\SQLData\YourDatabase_Hekaton.ndf ) TO FILEGROUP Hekaton_FG;接下来是最关键的一步评估现有表是否适合迁移。使用SQL Server Management Studio (SSMS) 中的“内存优化顾问”工具。右键点击目标表选择“内存优化顾问”它会自动分析表结构、索引、外键约束和相关的存储过程代码并生成一份详细的评估报告。这份报告会指出不兼容的特性例如不支持的DDLIDENTITY属性需要用SEQUENCE对象替代计算列、稀疏列、FILESTREAM等不被支持。不支持的约束外键约束FOREIGN KEY在2016版本后仅支持引用其他内存优化表CHECK约束中的UDF调用可能受限。不支持的索引全文索引、空间索引、XML索引等。T-SQL表面差异某些语法在内存优化表的上下文中行为不同。评估的目的不是找出所有问题然后放弃而是明确迁移的工作量和技术风险。很多时候不兼容的特性可以通过业务逻辑调整或应用层代码来弥补。3.2 表结构设计与迁移策略设计内存优化表时思维需要转换。以下是一个订单明细表从磁盘表迁移到内存优化表的示例原始磁盘表CREATE TABLE dbo.OrderDetails_Disk ( OrderDetailID BIGINT IDENTITY(1,1) PRIMARY KEY, OrderID BIGINT NOT NULL, ProductID INT NOT NULL, Quantity INT NOT NULL, UnitPrice MONEY NOT NULL, LastUpdated DATETIME2 DEFAULT GETUTCDATE(), CONSTRAINT FK_Order FOREIGN KEY (OrderID) REFERENCES dbo.Orders(OrderID) );迁移后的内存优化表-- 首先创建一个SEQUENCE替代IDENTITY CREATE SEQUENCE dbo.OrderDetailSeq AS BIGINT START WITH 1; CREATE TABLE dbo.OrderDetails_InMem ( OrderDetailID BIGINT NOT NULL PRIMARY KEY NONCLUSTERED DEFAULT (NEXT VALUE FOR dbo.OrderDetailSeq), -- 使用SEQUENCE OrderID BIGINT NOT NULL INDEX IX_OrderID HASH WITH (BUCKET_COUNT 1000000), -- 哈希索引 ProductID INT NOT NULL, Quantity INT NOT NULL, UnitPrice MONEY NOT NULL, LastUpdated DATETIME2 NOT NULL DEFAULT (SYSUTCDATETIME()), -- 默认值语法略有不同 -- 注意移除了外键约束参照完整性需由应用或另一内存优化表保证 INDEX IX_LastUpdated (LastUpdated) -- 范围索引 ) WITH ( MEMORY_OPTIMIZED ON, DURABILITY SCHEMA_AND_DATA -- 持久化表数据和架构都持久化 );几个关键设计点主键与索引必须为内存优化表显式定义至少一个索引作为主键承载。这里我们定义了非聚集主键PRIMARY KEY NONCLUSTERED。NONCLUSTERED在这里是必须的关键字不代表“非聚集”而是指索引结构类型哈希或范围。哈希索引桶数为OrderID创建的哈希索引其BUCKET_COUNT参数至关重要。它应该设置为预计唯一键值数量的1-2倍且最好是一个质数以减少哈希冲突。设置过大浪费内存过小则冲突严重降低性能。可以通过查询SELECT COUNT(DISTINCT OrderID) FROM ...来估算。持久化选项DURABILITY有两种选择SCHEMA_AND_DATA完全持久化。数据在重启后不丢失是大多数业务表的首选。SCHEMA_ONLY非持久化。仅表结构持久化数据在重启或数据库离线后丢失。适用于临时数据、缓存或ETL中间表。外键处理移除了外键。在Hekaton中如果被引用的表如Orders不是内存优化表则无法创建外键。解决方案有两种一是将关联表也迁移为内存优化表二是在应用层或通过触发器保证参照完整性。在订单场景下我们可能选择第一种构建一个完整的内存优化业务模块。迁移数据通常使用INSERT INTO ... SELECT FROM语句。对于大数据量表需要分批操作并考虑业务停机窗口。3.3 编写与编译本地存储过程业务逻辑的迁移是性能提升的最后一步。我们将高频的“插入订单明细”操作封装为本地编译存储过程。CREATE PROCEDURE dbo.usp_InsertOrderDetail_Native OrderID BIGINT, ProductID INT, Quantity INT, UnitPrice MONEY WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER AS BEGIN ATOMIC WITH ( TRANSACTION ISOLATION LEVEL SNAPSHOT, LANGUAGE Nus_english ) -- 此过程自动在原子块的隔离级别下运行 DECLARE NewDetailID BIGINT NEXT VALUE FOR dbo.OrderDetailSeq; DECLARE CurrentTime DATETIME2 SYSUTCDATETIME(); INSERT INTO dbo.OrderDetails_InMem (OrderDetailID, OrderID, ProductID, Quantity, UnitPrice, LastUpdated) VALUES (NewDetailID, OrderID, ProductID, Quantity, UnitPrice, CurrentTime); -- 可以在这里添加其他原子操作比如更新订单总金额 -- UPDATE dbo.Orders_InMem SET TotalAmount (Quantity * UnitPrice) WHERE OrderID OrderID; END;关键语法解读WITH NATIVE_COMPILATION声明此为本地编译过程。SCHEMABINDING绑定到基础表架构确保表结构变更时过程会被标记为无效。BEGIN ATOMIC WITH ...这是必须的原子块。它保证过程中的所有操作在一个原子事务中执行。TRANSACTION ISOLATION LEVEL SNAPSHOT是内存优化表支持的隔离级别与乐观并发控制相匹配。过程内部不能使用临时表、游标、EXEC动态SQL等许多传统T-SQL特性。它的语法是受限但高效的子集。编译此过程后应用程序调用usp_InsertOrderDetail_Native将与调用一个本地DLL函数无异速度极快。4. 性能调优与生产环境监控将表迁移到Hekaton并编译过程后性能通常会有立竿见影的提升。但要使其在生产环境中稳定、高效地长期运行还需要进行细致的调优和监控。4.1 内存管理与容量规划内存优化表的所有数据常驻内存因此内存容量规划是第一要务。你需要估算表的数据量及增长速率。估算单行大小计算表中所有字段的字节数总和。对于可变长度字段按平均长度估算。别忘了加上约16字节的行头开销。估算索引大小哈希索引每个桶占用8字节指针。总大小 BUCKET_COUNT * 8字节。范围索引大小约为数据大小的10%-20%取决于键大小和碎片情况。计算总内存需求总内存 ≈ (数据行数 * 单行大小) 索引大小 行版本开销对于活跃更新每个更新都会产生新版本旧版本在事务结束后由垃圾回收清理但会暂时占用内存。务必为服务器配置足够的物理内存并设置合理的“最大服务器内存”配置为操作系统和其他应用留出空间。可以通过DMV动态管理视图sys.dm_db_xtp_table_memory_stats实时监控内存优化表的内存消耗。4.2 垃圾回收与日志优化Hekaton采用MVCC更新和删除操作会产生旧的行版本。这些“垃圾”数据由后台的垃圾回收GC线程自动清理。GC的效率和速度直接影响内存的稳定性和查询性能因为扫描索引时需要跳过旧版本。影响GC效率的主要因素是长时间运行的事务。如果一个事务即使是只读事务长时间不结束那么在该事务开始时存在的所有行版本都无法被回收可能导致内存压力。因此在应用设计中必须避免长时间持有事务。将业务逻辑拆分为短小的事务单元。此外尽管数据在内存但为了持久化DURABILITY SCHEMA_AND_DATA所有操作仍会写入事务日志。Hekaton的日志记录比磁盘表更高效只记录逻辑操作和必要的重做信息但日志I/O仍然是潜在的瓶颈。确保日志文件放在高性能的存储上如SSD并且有足够的吞吐量。监控日志发送速率和等待统计信息中的日志相关等待类型如WRITELOG。4.3 监控与故障排查实战将Hekaton用于生产后需要建立一套监控体系。以下是一些关键的DMV和性能计数器内存使用sys.dm_os_memory_clerks查看MEMORYCLERK_XTP的大小。事务冲突sys.dm_db_xtp_transaction_stats查看提交/回滚计数、冲突回滚计数。高冲突率意味着你需要优化业务逻辑或数据模型以减少热点争用。GC活动sys.dm_xtp_gc_stats查看垃圾回收的行数、当前挂起的行版本数。如果“挂起的行版本”持续增长说明有长事务阻塞了GC。本地编译过程sys.dm_exec_procedure_stats可以查看编译过程的执行统计但更细粒度的信息需要结合扩展事件Extended Events。一个典型的性能问题排查流程现象应用响应变慢数据库服务器内存使用率持续走高。检查查询sys.dm_db_xtp_table_memory_stats发现某个内存优化表的内存占用远超数据量估算。分析查询sys.dm_xtp_gc_stats发现rows_processed很低但rows_eligible_for_gc很高说明GC不工作。定位查询sys.dm_tran_active_snapshot_database_transactions寻找运行时间极长的事务可能是应用连接泄露或未提交的事务。解决终止异常事务优化应用代码确保事务短小并考虑使用SET TRANSACTION ISOLATION LEVEL READ COMMITTED而非快照隔离来减少版本保留时间。5. 典型应用场景与架构融合实践Hekaton并非银弹它最适合特定的工作负载。理解它的最佳应用场景能让你在架构设计中做出最合适的选择。5.1 场景一高吞吐量事务处理系统这是Hekaton的经典场景如金融支付、证券交易、电信计费。这类系统的特点是事务量极大TPS过万、事务逻辑相对简单插入、点查、状态更新、对一致性和持久性要求极高。架构模式采用“混合数据库”模式。将整个数据库中的“热点”表如交易流水表、会话状态表、未结订单表迁移到Hekaton内存优化表。将相对静态或访问频率较低的数据如客户信息、产品目录、历史归档数据保留在传统磁盘表中。应用层通过数据库内的视图或跨容器事务来整合访问。这种模式能以最小的改动获得核心路径上最大的性能收益。5.2 场景二实时数据分析与事件处理传统上实时分析是流处理引擎如Flink、Spark Streaming的领域。但Hekaton提供了另一种可能在数据库内实现亚秒级的事件处理。例如在游戏服务器中实时计算玩家排行榜在电商网站实时更新商品库存和抢购状态在物联网平台实时聚合传感器数据并触发告警。实现方式利用内存优化表存储实时状态通过本地编译存储过程处理传入的事件流。过程内部可以完成查询、更新、聚合、并触发后续动作如调用外部服务或写入队列。由于所有操作都在内存中完成延迟可以控制在毫秒级。SQL Server 2016后内存优化表支持列存储索引这进一步提升了聚合查询的性能使得在同一个引擎内同时处理高并发事务和实时分析成为可能。5.3 场景三会话状态与缓存层替代在Web农场Web Farm中管理用户会话状态是个挑战。传统的解决方案是使用进程外会话状态服务器或分布式缓存如Redis。Hekaton可以作为一个高性能、强一致的会话状态存储。优势与ASP.NET Session State Provider无缝集成需自定义提供程序。相比Redis它提供了完整的SQL查询能力和强大的ACID事务支持。数据持久化到磁盘可靠性更高。对于已经重度依赖SQL Server的技术栈引入Hekaton作为会话存储可以减少技术复杂度并利用现有的备份、监控和高可用机制如Always On可用性组。5.4 与现有架构的融合挑战引入Hekaton最大的挑战往往不是技术本身而是与现有架构和思维的融合。事务管理跨内存优化表和磁盘表的事务是支持的但它是通过两阶段提交2PC在内部协调的开销比纯内存事务大。应尽量避免或减少此类混合事务。工具链支持一些熟悉的工具可能对内存优化表支持有限。例如SSMS的“编辑前200行”功能不可用某些第三方数据同步或ETL工具可能需要特定版本才支持。高可用与灾难恢复Hekaton完全支持SQL Server的Always On可用性组和故障转移集群。但需要注意的是在故障转移时内存中的数据需要在新主副本上重新加载到内存这会导致短暂的RTO恢复时间目标增加具体时间取决于数据量。因此对于超大规模的内存优化数据库需要仔细设计高可用策略例如使用多个同步副本分担负载。从我个人的实践经验来看Hekaton的成功应用30%在于技术选型和实施70%在于对业务场景的精准把握和持续的优化调整。它不是用来替换所有磁盘表的魔法而是一把精准的手术刀用在最需要它的业务环节上往往能起到“四两拨千斤”的效果。每次性能瓶颈的突破带来的不仅是系统的流畅更是业务创新的可能性。

相关新闻

3分钟搞定离线OCR:开源工具Umi-OCR的快速入门指南
2026/6/14 1:01:23

3分钟搞定离线OCR:开源工具Umi-OCR的快速入门指南

3分钟搞定离线OCR:开源工具Umi-OCR的快速入门指南 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。内置多国语言库。…

阅读更多
ExACT框架:AI智能体测试时动态计算优化实战解析
2026/6/12 6:54:48

ExACT框架:AI智能体测试时动态计算优化实战解析

1. 项目概述:当AI智能体在“考试”时获得更多“草稿纸”最近在折腾AI智能体(Agent)的朋友,估计都遇到过同一个头疼的问题:你精心设计的智能体,在模拟环境里跑得飞起,逻辑清晰,决策果…

阅读更多
给单片机初学者的福利:手把手复刻一个0-5V数字电压表(代码逐行讲解+电路分析)
2026/6/3 4:56:29

给单片机初学者的福利:手把手复刻一个0-5V数字电压表(代码逐行讲解+电路分析)

从零打造高精度数字电压表:51单片机实战指南 第一次接触单片机项目时,那种既兴奋又忐忑的心情至今难忘。看着一堆电子元件和代码,不知从何下手是很多初学者的共同困扰。本文将带你完整实现一个0-5V数字电压表,不仅提供可运行的代码…

阅读更多
MuleSoft驱动的企业级AI编排:LLM与业务系统深度集成实践
2026/6/14 0:57:30

MuleSoft驱动的企业级AI编排:LLM与业务系统深度集成实践

1. 项目概述:当企业级集成平台遇上大语言模型“AI Orchestration in Action: How MuleSoft and LLMs Fuel the Future of Enterprise AI”——这个标题不是一句空泛的营销口号,而是我在过去18个月里亲手搭建、上线并持续迭代的三个核心生产系统的统一命名…

阅读更多
数据反熵自动化:构建可自愈的数据一致性系统
2026/6/14 0:57:30

数据反熵自动化:构建可自愈的数据一致性系统

1. 项目概述:这不是“数据修复”,而是让系统自己学会“纠错”和“自愈”“Data Anti-Entropy Automation”——这个标题乍看像学术论文里的术语,但在我过去十年带团队做数据平台、治理中台和实时数仓的实战里,它其实对应着一个每天…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/14 0:57:30

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/14 0:57:30

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/14 0:57:30

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
美国政府禁 Fable/Mythos,AI 市场或生变,大语言模型未来使用成谜?
2026/6/13 23:57:30

美国政府禁 Fable/Mythos,AI 市场或生变,大语言模型未来使用成谜?

美国政府禁 Fable/Mythos,AI 市场或将生变,未来大语言模型使用成谜?本来周五我打算放松一下,一边让智能代理帮我写代码,一边和朋友们看足球赛。我最近在做有趣的 HTML 游戏,还写了篇草稿文章探讨如何借助 A…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/14 0:57:30

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/14 0:57:30

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/14 0:57:30

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)
2026/6/14 0:57:30

别再只用BERT了!用Transformers库的AutoModel,5分钟搞定文本相似度计算(附代码对比)

超越BERT:用Transformers库高效实现文本相似度计算的三种实战方案在自然语言处理领域,文本相似度计算是信息检索、问答系统和推荐系统等应用的核心技术。传统方法如TF-IDF或Word2Vec已逐渐被基于Transformer的预训练模型所取代。Hugging Face的Transform…

阅读更多
Prompt Engineering:重构人机协作的工程化方法论
2026/6/14 0:57:30

Prompt Engineering:重构人机协作的工程化方法论

1. 项目概述:这不是“写提示词”,而是重构人机协作的底层逻辑“Prompt Engineering”这个词,这两年被讲得太多,也太轻飘。很多人把它理解成“给AI发指令的技巧”,甚至简化为“多加几个形容词”“换种说法再试一次”。我…

阅读更多
Anthropic提示层归零:模型即协议的工程实践
2026/6/14 0:57:30

Anthropic提示层归零:模型即协议的工程实践

1. 项目概述:这不是一次普通更新,而是一次架构级“蒸发”“Anthropic Just Shipped the Layer That’s Already Going to Zero”——这个标题一出来,我正在调试一个Claude调用链的终端前停了三秒。不是因为震惊,而是因为熟悉&…

阅读更多
GIT修改用户名
2026/6/13 10:50:23

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/13 15:45:46

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/13 11:10:35

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多