“语义缓存层”(2)—— 通过语义匹配找到相似问题

LMCache:基于语义相似度的LLM缓存优化实践 1. 先搞清楚 LMCache 到底解决了什么核心问题 如果你在折腾大语言模型应用,尤其是那些需要频繁调用 API 或者本地模型来处理相似或重复请求的场景,那么 LMCache 这个项目值得你花十分钟了解一下。它不是一个新模型,而是一个 缓存层 ,核心目标就一个: 用更低的成本和更快的速度,处理重复或相似的 LLM 请求 。 简单来说,它的工作原理是:当用户提出一个问题(比如“解释一下量子计算”),LMCache 会先检查这个问题或类似的问题是否已经被回答过。如果命中缓存,就直接返回之前生成的结果,完全跳过 阅读详情

在上一篇文章里,我介绍了我在构建机器人MVP时处理数据时的发现。本章中,我会介绍一下近来的一些存在做法,以及把这个逻辑运用到我的系统中时出现的问题。

一、方案调研

我在五月初完成我的智能体构建和评估。demo通过之后,我开始着手研究有什么办法来处理这种问答对类型的知识。显然我并不是第一个注意到这种问题的,有很多人之前就遇到过这种问题。

严格上来说下面的两个方案并不是并列的关系,不过它们都是对于问答知识应该怎么被利用的探讨。

方案1:模型预判用户问题,相似问题直接返回

第一种设计方案来源于腾讯元器。腾讯元器的知识库服务除了提供传统的文档处理之外,会额外有一个问答知识库:

图1:腾讯元器的问答知识库

我对这个功能非常感兴趣,经过反复测试,大概推断了一下它的工作流程。整个过程大致上来说是:

  1. 用户导入知识库;
  2. 处理文档类型(docx, pdf, markdown等等),生成文本分块;
  3. 根据知识库里的文档类型知识生成QA(当然也可以手动添加QA)

当用户提交查询请求,平台会首先将这个查询和已经生成的问题进行对比,如果语义相似度超过一个严格的阈值(他们的默认值似乎是0.9),系统会直接返回相关的答案,不进入完整的RAG流程。

图2:博主推断的腾讯元器的问答知识库作用流程(由Gemini生成,博主很懒不喜欢画图)

这个想法非常好,如果生成的问题能够准确地符合用户的意图,那么就可以几乎立即给出答复,回答时间在ms级别,不需要推理,没有token消耗。这个设计让我非常感兴趣。

方案2:收集用户问题并缓存,相似问题直接返回

我同时阅读了一些社区里的技术文章,介绍了非常相似的机制。整体结构几乎完全相同,但是作出了一些细节上的调整。

a. 精确匹配 -> 语义匹配

第一层使用Redis来存储之前回答过的问题,如果用户问的是完全一样的答案,那就直接返回Redis中的答案。

这一层本质上就是传统缓存技术,并非是我这篇文章要讨论的重点,所以后续不会深入探讨。

如果没有命中,那么系统就会用语义检索技术来匹配相似的问题。工作流程和腾讯元器类似。

b. 收集用户的真实提问,而不是预判

和腾讯元器不同的是,他们从日常的业务流量中获取缓存,而不是模型基于知识库作出的假设。

提前作出预判也很好,但是始终存在模型关注面和用户关注面之间的差异,只适用于缓存预热;而在生产环境中我认为通过一个动态更新的机制来逐渐逼近用户最关心的那些问题会更好。

c. 过期淘汰

这个系统引入了时间延迟策略,当缓存条目过期,它们会被自动删除。作者采用的是和Redis类似的策略,类似于设定固定的TTL或者LRU。

作者在文章中说,缓存的命中率大概在60%到70%,运营成本降低了大概50%。虽然这个数据是否能够运用到其它系统中可能还存在疑惑,但是设计原则上会让我比较认同。

二、语义缓存层

我们之前讨论的两种架构都在尝试优化下面的问题:

  • LLM/Agent 的成本很高;
  • 系统已经非常“熟悉”的问题值得更快地被响应;

博主也是搞后端的,这种结构我想对于后端工程师来说再熟悉不过了。

  • 查询数据库的成本也很高;
  • 高频查询的字段值得更快地被响应;
图3:传统缓存 vs 语义缓存(图由Gemini生成)

这就是为什么我把这个结构叫做“语义缓存层”。完成调研之后,我确定把QA直接放到一个文件里做检索召回的方案并不妥当,并且打算仿照现有的做法做出一些优化。

三、总结

到这里,这个结构其实都很简单。我很快就把这个结构实现出来,并放到了我的RAG前面。流程大概是这样子:

  1. 数据处理阶段,把所有整理出来的QA都存到语义缓存层的向量数据库里;
  2. 用户提问时,先对语义缓存层中的问题做一次语义匹配(vectorDB层面,依然是混合检索,余弦相似度低于0.9的全部滤除);
  3. 如果找到了高度相似的历史问题,就直接返回相关答案;
  4. 否则,执行普通的RAG流程。

请注意,我的设计与上述的两种方案稍有不同:

  1. 不从文档生成QA,而是直接导入我已有的QA数据;

  2. 智能体的回答不会被立即存到缓存中,因为我认为这些回答的质量未经认证;

如果缓存命中,没有LLM调用、没有文档检索、没有deepseek的深度思考,系统的响应时间缩短到毫秒级别。

这个模式确实高效解决了一些高频又简单的问题,在下一节中,我会详细描述在我的后续评测中出现的问题,然后讨论一下这个模式继续优化的方向。

本文参考

腾讯元器官网:https://yuanqi.tencent.com

Semantic Caching Guide 2026: Cut AI API Costs 20-50% Proven: https://tokenmix.ai/blog/semantic-caching-guide

LLM语义缓存实战:用向量相似度将API成本降低70%+:https://pengjiyuan.github.io/articles/semantic-caching-2026/

LLM API 成本杀手:语义缓存(Semantic Cache)从原理到生产实战: https://carrie-l.github.io/AI/2026-04-18-llm-semantic-cache-production-cost-reduction

LMCache:基于语义相似度的LLM缓存系统设计与工程实践 在构建基于大型语言模型的应用时,开发者常面临响应延迟和API成本高昂的挑战。传统缓存机制基于精确字符串匹配,难以应对自然语言表达的多样性。语义缓存技术通过将文本转换为高维向量表示,在向量空间中计算语义相似度,实现了对相似意图问题的智能匹配与复用。这一技术能显著降低模型调用频率,提升系统响应速度,并有效控制运营成本。其核心价值在于将昂贵的模型计算转化为高效的向量检索,尤其适用于问答系统、聊天机器人等高重复查询场景。本文以LMCache项目为例,深入解析了语义缓存的架构设计、关键参数调优及常见问题解决方案,为优 阅读详情

相关推荐

基于语义相似度的提示缓存:为AI编程代理节省90% Token成本

在软件工程中,缓存(Cache)是解决重复计算和查询性能瓶颈的核心技术,通过存储高频访问数据来避免重复的昂贵操作。其原理是将计算结果或数据副本保存在快速访问的存储介质中,当相同请求再次发生时直接返回,从而显著提升系统响应速度并降低资源消耗。这一技术价值在人工智能时代尤为凸显,特别是在大语言模型(LLM)驱动的应用场景中。每次调用模型进行代码生成、问题解答或错误诊断,都会消耗Token并产生费用与延迟,而大量用户查询本质上是重复或语义相似的。通过引入提示缓存(Prompt Caching)机制,可以将模型对特

weixin_30813225的博客 408

“语义缓存层”(3) —— QA只是“缓存”吗?

讨论了简单“语义缓存层”的一系列问题

BuryCoder的博客 188

ModaHub魔搭社区:我决定给 ChatGPT 做个缓存层GPTCache

黄老板的一句【AI 的 iPhone 时刻已至】震撼了半个科技圈。或许,应该把这句话再扩展一下:AI 的 iPhone 时刻早已势不可挡,它不是平静随和地跟大家 say hi,而是作为一个强悍的巨人携着一把名为 ChatGPT 的斧子,重重地砸开了那扇通向 AI 新世界的大门。接连几个月,ChatGPT、AutoGPT 等新事物的不断涌现持续刷新着大家的认知。与此同时,圈内不断有类 ChatGPT 或 ChatGPT 相关的新产品问世,当然,这其中也包括我的团队。

实战AI智能体 437

Elasticsearch 作为 GenAI 缓存层

检索器增强生成(Retriever-Augmented Generation),俗称 RAG,是自然语言处理中的一种高效机制。它通过接受给定的提示或问题并从大型数据集中检索相关信息来进行操作。对于 Elasticsearch,通常使用语义搜索来检索此结果。然后,相关文档和提示会发送到生成式大语言模型 (LLM),以创建易于人类使用的响应。理想的最终结果是更准确但上下文更丰富的响应,比简单的基于关键字的答案提供更多深度。

Elastic 中国社区官方博客 1380

Prompt Airlines CTF通关实战:从提示词注入到多模态攻击的AI安全攻防演练

提示词注入(Prompt Injection)是当前大语言模型(LLM)应用面临的核心安全威胁之一,其原理在于攻击者通过精心构造的用户输入,覆盖或绕过系统预设的指令,从而操控模型行为。这种攻击手法的技术价值在于揭示了AI系统在理解与执行指令时存在的逻辑边界模糊性,可能导致数据泄露、越权访问等严重风险。在应用场景上,从基础的客服对话到结合视觉识别的多模态系统,都可能成为攻击面。本文以一场名为“Prompt Airlines CTF”的实战挑战为例,深入剖析了包括指令遗忘、上下文注入、工具调用滥用及多模态提示注

aodan5477的博客 517

CANOCO5.0实现冗余分析(RDA)最详细步骤

在地理及生态领域会常使用RDA分析,RDA的实现路径也有很多,今天介绍一下CANOCO软件的实现方法。1.不同样点和环境因子之间夹角是锐角 是正相关,是钝角是负相关。2.夹角越大 说明相关性较小,夹角越小,相关性越大。得有不同的物种或者样点数值,再加上环境因子数据。3.箭头越长 相关性越大。时间调整到2010年。

Along6的博客 1万+

“语义缓存层”(5)—— 两阶段召回设计

介绍了不再把语义“缓存层”看作缓存层,而是作为另一个知识库,让后续流程能够充分利用这些知识的一个小小创新设计。

BuryCoder的博客 159

【实战】ESP32 + LN298N 实现电动推杆的闭环位置伺服控制

本文详细介绍了如何使用ESP32微控制器和LN298N电机驱动模块,为普通电动推杆增加编码器反馈,实现精准的闭环位置伺服控制。文章从硬件选型与接线讲起,深入解析了编码器四倍频计数原理与位置换算,并重点阐述了PID控制算法的核心思想、代码实现及参数整定方法,旨在帮助读者从零构建一个反应迅速、定位精准的智能执行器系统。

weixin_29195615的博客 318

AI技能智能缓存框架:基于语义相似度匹配提升响应速度

在AI应用开发中,缓存技术是优化系统性能、降低延迟的关键手段。传统键值缓存通过精确匹配实现快速数据检索,但在处理自然语言等非结构化数据时面临命中率低的挑战。其原理是将高频访问的计算结果存储于快速存储介质中,避免重复计算。这一技术的核心价值在于显著提升系统吞吐量、降低API调用成本,并改善终端用户体验。针对AI技能调用场景,语义相似度匹配技术应运而生,它通过嵌入模型将文本转化为向量表示,并基于向量相似度搜索实现智能缓存匹配,从而有效应对用户输入的多样化表达。cacheforge-skills框架正是这一技术的

weixin_30315723的博客 610

CanMV K230实战:用MicroPython玩转AI视觉识别(附完整代码)

本文详细介绍了如何使用MicroPython在CanMV K230开发板上实现AI视觉识别,包括环境搭建、摄像头配置、模型部署及优化技巧。通过实战案例(如智能门禁和工业分拣机器人),展示如何快速开发低门槛的嵌入式AI应用,特别适合初学者和嵌入式开发者。

x8y9z0的博客 1143

[Cocos2d塔防游戏开发]Cocos2dx-3.X完成塔防游戏《王国保卫战》--地图(一)

上面3章图是完成后的效果图 游戏已完成,除了英雄外,基本还原了90%的游戏内容,一共13关,20种防御塔,30+种敌人,如上图,以假乱真吧 下面从地图模块起介绍我的方法,如有更好的方法,请留言一起讨论,游戏资源下载原版游戏数据包,解压即可 推荐一款软件,TextureUnpackerRelease1.04可以分割plist形式的图片,提高效率 经过一个月学习也发现之前有很多化简为繁的错误

7172

我决定给 ChatGPT 做个缓存层 >>> Hello GPTCache

,Redis 会将其定义为两个不同的问题,而事实上,这两个问题表达的是同一个意思。由于想让 GPTCache 变得更加透明(这样用户无需额外研发,便可将其轻松集成到我们的系统或其他基于 ChatGPT 搭建的系统中),所以适配器应该方便轻松集成所有 LLM,并可灵活扩展,从而在未来集成更多的多模态模型。正如开篇提到的,写这篇文章的初衷是站在 AIGC 从业者的角度,和大家分享 ChatGPT 引领的浪潮下,开发者【从 0 到 1】【从 1 到 100】的探索经历和心得,以求和大家讨论、共勉。

ZILLIZ 2357

Megatron单机多卡Qwen2.5:pre-train+sft

英伟达:https://github.com/NVIDIA/Megatron-LM/releases/tag/core_r0.8.0阿里:https://github.com/alibaba/Pai-Megatron-Patch/releases/tag/v0.10.2。

weixin_46873015的博客 2179

LLM服务中缓存层的归零革命:从命中率优化到语义复用

在大语言模型推理服务中,缓存曾是提升性能与降低成本的核心机制,其原理依赖请求哈希匹配与键值存储复用;但随着高并发、低延迟和强一致性需求升级,传统缓存面临长尾延迟、可观测性冗余与伪一致性陷阱等固有瓶颈;技术价值正转向更底层的语义等价识别与跨请求状态复用,通过轻量embedding、上下文令牌绑定与CPU-GPU协同卸载,实现计算开销的物理级压缩;典型应用场景包括RAG网关加速、对话状态管理与边缘缓存前置;本文聚焦Claude API中`cache_read`字段归零现象,深入解析`semantic_finge

weixin_34302798的博客 470

手把手教你用GD32F407VET6的EXMC驱动外部SRAM,搞定大内存需求

本文详细介绍了如何使用GD32F407VET6的EXMC外设驱动外部SRAM,解决嵌入式开发中的大内存需求问题。通过硬件连接方案、EXMC时序配置与初始化步骤,以及软件集成与内存管理技巧,帮助开发者快速实现内存扩展。特别适合需要处理图形显示缓冲、音频处理等大内存场景的GD32F407开发者。

weixin_30752699的博客 346

iOS远程真机之WebDriverAgent 天坑记

一、WDA安装依赖报错:       这个东西神坑,我搞了一天都没找到解决方案,最后在appium讨论中发现,       解决方案是:       先定位到WebDriverAgent 所在路径$ cd /Users/XXXX/git/WebDriverAgent        然后运行:mkdir -p Resources/WebDriverAgent.bundle sh ./Scripts/b

甫式人生 7316

Python几行代码实现语义相似文本搜索

语义相似度搜索是自然语言处理中的基础任务,其核心在于将文本映射为可计算的向量表示,并通过数学方法衡量语义接近程度。现代NLP技术已将词向量生成、句子嵌入和余弦相似度计算等环节高度封装,使开发者无需掌握深度学习原理即可快速构建高精度搜索能力。Sentence-BERT等预训练模型显著缓解了传统TF-IDF面临的词汇鸿沟问题,而CPU友好的轻量级模型(如all-MiniLM-L6-v2)让语义搜索真正具备轻量化部署条件。该技术广泛应用于客户舆情分析、智能客服知识库、电商评论挖掘等场景,尤其适合需快速验证、中低并

weixin_30897079的博客 313

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Redis 向量检索与多级缓存:从语义搜索到事件驱动的架构融合

修改类型具体操作删除填充短语去掉"下面这张图展示了"、"这段代码的核心设计"、"核心价值在于"等简化结构把"不是替代 Milvus,而是作为..."改为"不是要替代 Milvus,而是当个"去除三段式将"向量索引提供快速近似检索,语义缓存提升重复查询的响应速度,Stream 机制实现检索结果的事件驱动分发"简化减少 AI 词汇替换"融合架构"、"能力边界"、"生产级"、"核心链路"等调整语气加入"有点杀鸡用牛刀"、"低得可怜"、"得清楚"等更口语化表达打破公式结构。

2401_87746054的博客 5405

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

RAG语义缓存踩坑记:向量相似不等于业务相同,租户数据差点越权泄露

在上周的生产安全巡检中,我们发现了惊险的一幕:一位企业用户在问答系统提问:“我们公司上个月的财务净利润是多少?RAG 系统的语义缓存(Semantic Cache)命中了极高的相似度(0.96),并直接返回了之前另一家企业用户的财务回答!虽然 Embedding 向量在语义空间极其接近,但两者的公司 ID 与权限边界完全不同。这种“向量相似不等于业务相同”的漏洞,差点引发严重的跨租户越权泄露事故。安全团队在收到预警后,立即切断了语义缓存网关,临时改走直连 RAG 检索。

Leo 5530

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

BGE-Large-Zh生产环境:日均10万次查询的政务咨询语义匹配服务

本文介绍了如何在星图GPU平台上自动化部署BGE-Large-Zh语义向量化工具,实现高效的政务咨询语义匹配服务。该工具能将市民咨询问题快速转化为语义向量,并与政策文档进行精准匹配,日均处理10万次查询,大幅提升政务服务的响应速度和准确率。

weixin_29041443的博客 596

我决定给 ChatGPT 做个缓存层 >>> Hello GPTCache

???? 写在前面黄老板的一句【AI 的 iPhone 时刻已至】震撼了半个科技圈。或许,应该把这句话再扩展一下:AI 的 iPhone 时刻早已势不可挡,它不是平静随和地跟大家 say hi,而是作为一个强悍的巨人携着一把名为 ChatGPT 的斧子,重重地砸开了那扇通向 AI 新世界的大门。接连几个月,ChatGPT、AutoGPT 等新事物的不断涌现持续刷新着大家的认知。与此同时,圈内不断有类 C...

ZILLIZ 732

如何降低 80% 推理成本:大模型语义缓存网关架构设计与工程落地

降低 AI 落地成本的关键,在于将低价值的重复运算拦截在系统大门之外。通过构建高精度的向量相似度对比机制、设定严格的安全性判定门槛,并针对非确定性变动做好容错退避逻辑,语义缓存网关能够帮助技术团队在不降低用户体验的前提下,实现大幅度的降本增效,建立起真正健康的商业化毛利模型。

qq_35160742的博客 1488

大模型服务集成:从 Token 限流到语义缓存的后端架构实战

大模型后端服务的核心挑战,是在成本、延迟和质量三者之间找到平衡点。Token 限流控制成本底线,语义缓存降低延迟和重复消耗,多模型降级保障可用性。三者协同,才能支撑大模型在生产环境中的稳定运行。落地路线上,建议分阶段推进:第一阶段,先实现 Token 限流,建立成本可控的基础;第二阶段,引入语义缓存,针对高频重复场景降低延迟和消耗;第三阶段,构建多模型降级链路,提升服务韧性。每个阶段都需要配套的监控指标——限流触发率、缓存命中率、降级频率——用数据驱动架构决策。

alex_goden的博客 5966

如何高效实现文本语义匹配?GTE中文向量镜像一键上手

本文介绍了基于星图GPU平台自动化部署GTE中文语义相似度服务镜像的高效方案。该平台支持一键启动WebUI与API接口,无需代码即可实现模型微调与集成。典型应用场景包括智能客服中的工单分类、新闻去重及RAG系统中的语义匹配,显著提升中文文本处理的准确率与开发效率。

weixin_42309599的博客 121

StructBERT文本相似度WebUI部署教程:适配中小企业知识库智能匹配需求

本文介绍了如何在星图GPU平台上自动化部署StructBERT文本相似度-中文-通用- WebUI镜像,实现高效的中文文本语义匹配功能。该工具特别适用于中小企业知识库智能匹配,可快速完成客服问题匹配、内容查重等任务,提升业务处理效率。

weixin_36303807的博客 82

LLM应用缓存策略实战:从精确匹配到语义缓存的性能优化方案

缓存是计算机系统中提升性能、降低延迟的核心技术,其原理是通过存储频繁访问的数据副本,减少对慢速存储或远程服务的重复请求。在软件工程实践中,缓存技术能显著提升系统吞吐量、降低资源消耗,对于高并发和计算密集型应用价值巨大。随着大语言模型(LLM)应用的普及,**响应延迟**和**API成本**成为关键瓶颈,缓存技术自然成为优化LLM应用体验与成本的关键手段。通过设计合理的缓存层,可以将重复的LLM调用结果存储起来,当用户提出相同或语义相似的问题时,直接从缓存返回结果,从而将响应时间从秒级降至毫秒级,并大幅节省模

weixin_34321753的博客 455
上一篇: “语义缓存层”(1)—— 问答对适合直接丢知识库吗?
下一篇: “语义缓存层”(3) —— QA只是“缓存”吗?
Sega Lee
博客等级 码龄6年 1粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值