当前位置: 首页 > article >正文

Entity Framework Core 10向量搜索深度实践(从NuGet包冲突到ANN精度调优全链路拆解)

第一章Entity Framework Core 10向量搜索扩展实战概览Entity Framework Core 10 原生未内置向量搜索能力但通过社区驱动的扩展库EFCore.Vector开发者可无缝集成近似最近邻ANN搜索能力直接在 LINQ 查询中使用语义向量相似度检索。该扩展基于 SQLite 的vss0模块或 PostgreSQL 的pgvector插件构建支持在 EF Core 的上下文生命周期内完成向量化嵌入存储、索引构建与相似性排序。核心能力对齐在DbContext中声明Vectorfloat类型属性自动映射为底层数据库的向量列类型通过.OrderBy(x x.Embedding.DistanceTo(queryVector))编写可翻译的向量距离查询支持余弦相似度、欧氏距离与内积三种度量方式由数据库执行器原生加速快速启用步骤安装 NuGet 包dotnet add package EFCore.Vector --prerelease注册向量服务并配置数据库提供程序以 SQLite 为例// 在 Program.cs 中 builder.Services.AddDbContextAppDbContext(options options.UseSqlite(connectionString) .UseVector()); // 启用向量扩展支持该调用会自动注册IVectorService并注入向量列映射规则。典型实体定义示例public class Document { public int Id { get; set; } public string Title { get; set; } string.Empty; // Vectorfloat 将被映射为 BLOBSQLite或 vector(1536)PostgreSQL public Vectorfloat Embedding { get; set; } Vectorfloat.Zero(1536); }支持的数据库与能力对照数据库向量列类型索引支持距离函数SQLite (v3.42)BLOBVSS 扩展格式HNSW 索引vss_searchdistance_cosine,distance_l2PostgreSQL (pgvector)vector(n)IVFFlat / HNSWCREATE INDEX ... USING hnsw欧氏,#内积,余弦第二章环境搭建与依赖冲突治理2.1 EF Core 10向量扩展的NuGet生态图谱与版本兼容性分析NuGet核心包依赖矩阵包名最低EF Core 10版本向量功能支持Microsoft.EntityFrameworkCore10.0.0基础APIMicrosoft.EntityFrameworkCore.SqlServer10.0.1ANN索引支持EFCore.Vector10.0.0-rc1全向量操作典型向量查询配置示例// 注册向量服务并启用SQL Server ANN优化 services.AddDbContextAppDbContext(options options.UseSqlServer(connectionString) .UseVector(); // 启用向量扩展管道 );该配置激活EF Core 10的向量感知查询翻译器将AsVectorSearch()等扩展方法映射为SQL Server 2022的VECTOR_DISTANCE原生函数避免客户端向量计算。兼容性约束要点EFCore.Vector 10.0.x仅兼容.NET 6与SQL Server 2022含Azure SQLPostgreSQL向量支持需额外引用Npgsql.EntityFrameworkCore.PostgreSQL8.02.2 Microsoft.Data.Sqlite vs Npgsql.EntityFrameworkCore.PostgreSQL向量包冲突根因定位与隔离方案冲突根源分析当项目同时引用Microsoft.Data.Sqlite含 SQLitePCLRaw.bundle_e_sqlite3与Npgsql.EntityFrameworkCore.PostgreSQL依赖Npgsql及其原生驱动二者均通过SQLitePCLRaw或libpq间接加载同名原生库如sqlite3.dll/libpq.dll导致运行时DllNotFoundException或 ABI 不兼容。隔离方案验证使用AssemblyLoadContext.Isolation分离不同数据库驱动的加载上下文禁用自动绑定重定向显式指定NativeLibrary.SetDllImportResolverNativeLibrary.SetDllImportResolver(typeof(SQLitePCLRawProvider).Assembly, (libraryName, assembly, searchPath) { if (libraryName sqlite3 assembly.FullName.Contains(Sqlite)) return LoadFromPath($runtimes/win-x64/native/sqlite3-sqlite.dll); if (libraryName libpq assembly.FullName.Contains(Npgsql)) return LoadFromPath($runtimes/win-x64/native/libpq-npgsql.dll); return null; });该解析器按程序集来源路由原生库路径避免交叉加载。参数libraryName标识请求库名assembly提供调用方上下文searchPath为默认搜索路径此处被覆盖。2.3 向量索引驱动层ANN Backend的运行时绑定机制与Provider注册陷阱动态Provider注册的生命周期约束向量索引驱动层要求所有ANN Provider在初始化阶段完成注册延迟注册将导致索引构建失败。核心约束如下Provider必须实现AnnProvider接口并调用RegisterProvider()注册须在init()函数或main()入口前完成不可在HTTP handler中动态注册重复注册同名Provider会触发panic而非静默覆盖典型注册陷阱示例func init() { // ✅ 正确init阶段注册 ann.RegisterProvider(faiss, FaissProvider{}) // ❌ 错误运行时注册将被忽略 go func() { ann.RegisterProvider(hnsw, HnswProvider{}) // 不生效 }() }该代码中goroutine内的注册因发生在runtime.Started之后被框架直接丢弃ann.GetProvider(hnsw)返回nil后续BuildIndex()调用将panic。Provider元信息注册表字段类型说明Namestring唯一标识符如faiss-cpuVersionsemver兼容性校验依据Capabilities[]string支持的索引类型列表2.4 多目标框架net8.0/net9.0下IL trimming对向量序列化器的破坏性影响与修复实践Trimming 引发的序列化崩溃在启用 true 后System.Numerics.VectorT 的静态构造器及泛型实例化逻辑被误删导致 Spanfloat.ToArray() 在反序列化时抛出 MissingMethodException。关键修复策略在 .csproj 中添加 显式保留核心类型使用 [DynamicDependency(DynamicallyAccessedMemberTypes.PublicConstructors, typeof(Vectorfloat))] 标记序列化入口类验证用例var vec Vector.AsVector(new float[16]); // Trimmed build now preserves Vectorfloat.Count and ctor Console.WriteLine(vec.Count); // 输出: 16该代码依赖 Vectorfloat 的 JIT 专用泛型实例trimmer 默认不识别其动态使用路径添加 TrimmerRootAssembly 后IL Linker 保留全部 Vector 静态成员与泛型闭包确保序列化器可安全重建向量结构。2.5 Docker容器化部署中GPU加速支持缺失的诊断路径与CPU fallback策略验证诊断流程四步法检查宿主机 NVIDIA 驱动与 nvidia-container-toolkit 是否就绪验证docker info输出中是否存在Runtimes: nvidia运行nvidia-smi容器确认设备挂载docker run --rm --gpus all nvidia/cuda:11.8-runtime-ubuntu20.04 nvidia-smi若报错failed to start container则 GPU runtime 未生效查看容器内/dev/nvidia*设备文件是否存在CPU Fallback 自动降级验证场景环境变量预期行为GPU不可用时USE_GPUfalse模型加载跳过 CUDA 初始化启用 ONNX Runtime CPU EP显存不足ORT_CUDA_MEM_LIMIT0强制回退至 OpenMP 并行 CPU 推理第三章向量建模与嵌入集成3.1 实体类中VectorT属性的设计约束与EF Core元数据扩展注入实践设计约束核心原则VectorT 作为高性能数值向量类型不能直接映射为 EF Core 的标量列。其序列化需显式控制且必须规避导航属性误判。元数据扩展注入实现modelBuilder.EntityProduct() .Property(e e.Features) .HasConversion( v JsonSerializer.Serialize(v, (JsonSerializerOptions)null), json JsonSerializer.DeserializeVectorfloat(json, (JsonSerializerOptions)null)) .HasColumnType(jsonb); // PostgreSQL 示例该配置将 Vectorfloat 序列化为 JSONB 字段避免 EF Core 尝试解析为实体关系HasConversion是唯一支持非标量类型的元数据扩展入口。兼容性约束表数据库推荐存储类型是否支持查询内联计算PostgreSQLjsonb / float4[]否需自定义函数SQL Servervarbinary(max)否3.2 集成SentenceTransformers.NET与HuggingFace ONNX模型实现端到端嵌入流水线模型加载与ONNX兼容性适配var model new OnnxSentenceTransformer( modelPath: all-MiniLM-L6-v2.onnx, tokenizerPath: tokenizer.json, maxSequenceLength: 128);该构造函数封装了ONNX Runtime会话初始化、分词器加载及输入张量对齐逻辑maxSequenceLength控制截断长度需与导出ONNX时的input_ids维度严格一致。性能对比关键指标模型格式首token延迟(ms)吞吐(QPS)PyTorch (.bin)42.387ONNX (CPU)18.9215流水线执行步骤文本预处理标准化Unicode归一化分词器生成input_ids/attention_mask张量ONNX Runtime同步推理获取768维嵌入向量3.3 批量向量化场景下的DbContext生命周期管理与内存泄漏规避技巧DbContext实例复用陷阱在批量向量化如千级Embedding插入中长期持有单个DbContext会导致ChangeTracker持续累积实体引发内存泄漏。避免跨批次复用同一DbContext实例优先采用作用域内瞬时创建using var context new AppDbContext();高效清理策略context.ChangeTracker.Clear(); // 清空跟踪但不释放上下文 context.Entry(entity).State EntityState.Detached; // 单实体解绑说明Clear()重置变更追踪器适用于高吞吐写入前的轻量重置Detached适用于需保留上下文但释放特定实体内存的场景。内存占用对比10,000条向量插入策略峰值内存(MB)GC压力单DbContext全程复用1,240高每100条新建DbContext86低第四章ANN查询优化与精度调优全链路4.1 HNSW与IVF-PQ索引在EF Core Query Pipeline中的透明注入与执行计划观测索引注入的管道钩子注册services.AddDbContextAppDbContext(options options.UseSqlServer(connectionString) .AddVectorSearch() // 启用向量扩展 .UseHnswIndexProduct(e e.Embedding, builder builder.WithM(16).WithEfConstruction(200)); );该配置在QueryPipeline初始化阶段注册HnswIndexProvider将索引元数据写入ModelMetadata不修改用户查询语法。执行计划可视化对比索引类型查询延迟p95内存占用召回率10HNSW12.4 ms1.8 GB98.2%IVF-PQ8.7 ms420 MB93.6%执行计划观测方法启用Microsoft.EntityFrameworkCore.Query日志级别为Debug检查生成的ExecutionPlan中是否包含VectorIndexScanExpression验证IndexHint是否被VectorQueryOptimizingVisitor拦截并重写4.2 Cosine相似度与L2距离在WhereOrderBy组合查询中的表达式树重写实践语义等价性约束下的重写规则当查询同时包含WHERE vector_field COSINE_SIMILARITY(?, vec) 0.8和ORDER BY L2_DISTANCE(vector_field, ?)时表达式树需合并为单节点以避免重复向量计算。-- 重写前 SELECT * FROM items WHERE COSINE_SIMILARITY(embedding, [0.1,0.9]) 0.8 ORDER BY L2_DISTANCE(embedding, [0.1,0.9]) LIMIT 10; -- 重写后统一归一化共享向量投影 SELECT * FROM items WHERE embedding_normed * [0.1,0.9] 0.8 ORDER BY SQRT(2 - 2 * (embedding_normed * [0.1,0.9])) LIMIT 10;该转换利用恒等式L2² 2 - 2·cosθ单位向量前提将两次独立距离计算压缩为一次点积复用。执行计划对比指标重写前重写后向量加载次数21GPU kernel launch214.3 Top-K召回率衰减诊断从QueryLog分析到Recall10/Recall100指标埋点QueryLog实时采样与标签对齐在Flink实时管道中对原始QueryLog注入recall_k字段确保与召回服务返回的item_id列表长度一致log.withField(recall_k, UDFs.getRecallSize(log.getField(recall_items))); // recall_items为JSON数组字符串该UDF解析JSON并统计有效item数剔除null/空ID保障后续分桶统计基数准确。多粒度召回率埋点设计按Query类型搜索/推荐/猜你喜欢切片按设备维度iOS/Android/Web隔离评估按时间窗口5min滑动动态计算Recall10与Recall100核心指标对比表指标定义衰减阈值告警Recall10真实相关结果出现在前10个召回中的比例 0.62Recall100真实相关结果出现在前100个召回中的比例 0.894.4 混合查询向量标量过滤全文检索的执行顺序优化与ExecutionStrategy定制执行顺序的语义优先级混合查询中执行顺序直接影响性能与结果精度。理想策略为**标量过滤 → 全文检索 → 向量重排序**以尽早剪枝无效文档。自定义ExecutionStrategy示例type HybridStrategy struct { ScalarFilterFirst bool // 控制是否优先执行WHERE条件 FulltextThreshold float64 // BM25得分阈值 } func (s *HybridStrategy) Plan(q *Query) []Stage { stages : []Stage{} if s.ScalarFilterFirst { stages append(stages, ScalarFilterStage) } stages append(stages, FulltextStage, VectorRerankStage) return stages }该策略显式声明阶段依赖避免向量计算在海量未过滤数据上执行。各阶段耗时对比100万文档样本阶段平均耗时(ms)剪枝率标量过滤8.292%全文检索15.768%向量重排42.3—第五章生产级落地挑战与未来演进可观测性缺口导致根因定位延迟某金融客户在 Kubernetes 集群中部署微服务后遭遇平均 17 分钟的故障定位耗时。根本原因在于 OpenTelemetry Collector 配置缺失 span context 透传导致链路断点。修复方案需显式启用 propagators 并注入 B3 头exporters: otlp: endpoint: otel-collector:4317 tls: insecure: true service: pipelines: traces: exporters: [otlp] processors: [batch] receivers: [otlp]多集群策略同步一致性难题跨 AZ 的 Istio 网格中因 Pilot 控制平面未启用 --consistency-check-interval30s导致 12% 的 Envoy Sidecar 路由规则滞后更新。运维团队通过以下步骤完成加固为每个控制平面 Pod 注入 PILOT_ENABLE_CONSISTENCY_CHECKtrue 环境变量将 istioctl install 命令升级至 v1.21启用 --set values.pilot.env.PILOT_ENABLE_CONSISTENCY_CHECKtrue验证一致性状态kubectl exec -it istiod-xxx -- pilot-discovery request GET /debug/consistency模型服务化推理延迟突增归因基于 Triton Inference Server 的实时推荐服务在流量高峰出现 P99 延迟飙升至 850ms基线 120ms。分析发现 GPU 显存碎片化严重且未启用 --model-control-modeexplicit 模式。解决方案如下表所示问题维度诊断命令修复动作显存碎片nvidia-smi --query-compute-appspid,used_memory --formatcsv启用 --cuda-memory-pool-size1073741824 参数模型加载抖动tritonserver --model-repository/models --log-verbose1预热模型curl -X POST http://localhost:8000/v2/models/recommender/load

相关文章:

Entity Framework Core 10向量搜索深度实践(从NuGet包冲突到ANN精度调优全链路拆解)

第一章:Entity Framework Core 10向量搜索扩展实战概览Entity Framework Core 10 原生未内置向量搜索能力,但通过社区驱动的扩展库 EFCore.Vector,开发者可无缝集成近似最近邻(ANN)搜索能力,直接在 LINQ 查…...

OpenClaw异常处理机制:千问3.5-27B任务失败自动回滚

OpenClaw异常处理机制:千问3.5-27B任务失败自动回滚 1. 为什么需要异常处理机制 上周我让OpenClaw执行一个复杂的文件处理任务:扫描2000多份PDF合同,提取关键条款并生成汇总表格。本以为可以喝着咖啡等结果,没想到半夜收到飞书报…...

直播运营需要哪些数据分析能力?场观、停留、成交和投流怎么联动分析

直播运营数据分析的核心能力直播运营需要掌握多维度的数据分析能力,以优化直播效果并提升转化率。核心能力包括数据采集、清洗、可视化、建模及解读能力。CDA数据分析师证书的课程体系涵盖了这些核心技能,为从业者提供系统化训练。能力维度具体内容CDA相…...

OpenClawAPI封装:将SecGPT-14B能力集成到现有安全工具链

OpenClaw API封装:将SecGPT-14B能力集成到现有安全工具链 1. 为什么需要API封装 去年我在构建自动化安全审计系统时,发现很多团队面临一个共同困境:虽然本地部署了大模型,但模型能力始终无法真正融入现有工作流。SecGPT-14B作为…...

Gradio UI定制化:修改SenseVoice-Small webui.py实现多语言切换+结果导出功能

Gradio UI定制化:修改SenseVoice-Small webui.py实现多语言切换结果导出功能 1. 引言:为什么需要定制化语音识别界面 如果你用过语音识别工具,可能会发现一个普遍问题:界面功能太固定。比如,你想切换识别语言&#x…...

Phi-3-mini-4k-instruct-gguf完整指南:GGUF模型加载机制与llama-cpp内存优化原理

Phi-3-mini-4k-instruct-gguf完整指南:GGUF模型加载机制与llama-cpp内存优化原理 1. 认识Phi-3-mini-4k-instruct-gguf模型 Phi-3-mini-4k-instruct-gguf是微软Phi-3系列中的轻量级文本生成模型GGUF版本。这个模型特别适合处理问答、文本改写、摘要整理和简短创作…...

OpenClaw智能监控:Qwen3-32B实现服务器异常自动告警

OpenClaw智能监控:Qwen3-32B实现服务器异常自动告警 1. 为什么选择OpenClaw做服务器监控? 去年我的个人博客经历了一次长达6小时的宕机,直到有读者发邮件反馈才发现问题。传统监控工具如Zabbix或Prometheus虽然功能强大,但配置复…...

Java应用秒级启动不是梦:GraalVM静态镜像内存优化4阶段接入法(含Spring Boot 3.2+自动配置模板)

第一章:Java应用秒级启动不是梦:GraalVM静态镜像内存优化4阶段接入法(含Spring Boot 3.2自动配置模板)为什么传统JVM启动无法突破1秒瓶颈? JVM预热、类加载、JIT编译及GC初始化共同构成启动延迟主因。Spring Boot 3.2 …...

LeetCode 最长回文子串:python 题解写

1 实用案例 1.1 表格样式生成 本示例用于生成包含富文本样式与单元格背景色的Word表格文档。 模板内容: 渲染代码: # python-docx-template/blob/master/tests/comments.py from docxtpl import DocxTemplate, RichText # data: python-docx-template/bl…...

Qwen-Image-2512-Pixel-Art-LoRA高清展示:1024×1024输出+RGB精准色彩还原实测

Qwen-Image-2512-Pixel-Art-LoRA高清展示:10241024输出RGB精准色彩还原实测 想不想亲手创造出那种充满复古魅力的像素艺术?那种让你瞬间回到童年游戏机时代的画面,现在用AI就能轻松搞定。今天,我们就来深度实测一个专门为像素艺术…...

OpenClaw安全实践:用SecGPT-14B自动生成每周风险周报

OpenClaw安全实践:用SecGPT-14B自动生成每周风险周报 1. 为什么需要自动化风险周报 作为安全团队的成员,每周五下午总是我最头疼的时候。需要手动收集各个系统的告警日志、分析潜在风险、整理成PPT格式,最后发送给管理层。这个过程通常要花…...

OpenClaw更新策略:千问3.5-9B模型与框架的版本管理

OpenClaw更新策略:千问3.5-9B模型与框架的版本管理 1. 为什么需要版本管理 上周我在本地部署的OpenClaw突然罢工了——前一天还能正常处理文件整理任务,第二天就频繁报错"模型响应格式异常"。排查后发现是自动更新机制将千问3.5-9B模型升级到…...

PPT讲解视频怎么做?3种常见方案对比

在做课程、培训或者知识分享时,很多人都会遇到一个问题:👉 如何把PPT变成一个讲解视频?目前主流方案大致可以分为3类,每种方式我都实际体验过,下面给你一个真实对比总结。一、方案一:手动录屏&a…...

鸡翅Club项目学习文档 - 第一部分

## 学习进度- [x] 第一部分:项目整体架构与核心概念 - [ ] 第二部分:设计模式详解 - [ ] 第三部分:代码实战演练---## 一、项目概述### 1.1 项目定位| 项目名称 | 鸡翅Club刷题系统 | |----------|------------------| | 英文名 | jc-club&am…...

【AutoSAR】详解PDUR模块

所谓梦想,就是让你感到痛苦的事情不再发生。一、前言在学习AUTOSAR通信栈时,我们会遇到多种PDU相关的缩写,如L-PDU、N-PDU、I-PDU等。理解这些缩写及其相互关系、以及它们与OSI七层模型的对应关系,对于掌握通信部分至关重要。接下…...

你的SSH密钥可能已经过期了评

引言 在现代软件开发中,性能始终是衡量应用质量的重要指标之一。无论是企业级应用、云服务还是桌面程序,性能优化都能显著提升用户体验、降低基础设施成本并增强系统的可扩展性。对于使用 C# 开发的应用程序而言,性能优化涉及多个层面&#x…...

HLS高层次综合开发应用

一、HLS高层次综合开发应用 1.怎么利用编译指令(pragma)来控制各种粗细粒度的流水和并行,怎么把数组进行分块等等。这样的设计结果就会远远好于使用通用CPU。然而还有一个问题是,最后性能优化的HLS C/C代码可能会很长,…...

前端面试题(九九八十一难)

⼀、JavaScript核⼼原理1.computed与watch监听变化的原理核⼼:均依赖Vue响应式系统(Proxy/Object.defifineProperty)。 -computed:⾃动收集内部依赖的响应式数据,依赖变化⾃动重新计算,有缓存。 -watch&…...

OpenClaw技能扩展教程:Qwen3-14b_int4_awq实现公众号自动发布

OpenClaw技能扩展教程:Qwen3-14b_int4_awq实现公众号自动发布 1. 为什么需要自动化公众号发布 作为一个技术博主,我每周都要在公众号上发布2-3篇技术文章。最让我头疼的不是写作本身,而是发布前的繁琐流程:手动排版Markdown、设…...

Zig : 关于@Vector,slice,array,arraylist实例

最近在看Zig,是一个有意思的语言。以一个字符串容器为例,来尝试了解一下Zig和其它语言有什么不同。 一、代码 const std import("std"); const print std.debug.print; pub fn main() !void {try print_arraylist();_ print_array();_ pri…...

mysql如何对比两个数据库备份的差异_使用mysqldiff工具

不能。mysqldiff 不解析 SQL 备份文件,仅支持连接运行中的两个数据库实例(如 server1:db1 server2:db2)对比结构元数据,需先将 dump 文件导入为库才能使用。mysqldiff 能不能直接比两个 SQL 备份文件?不能。mysqldiff …...

HTML压缩工具本地运行卡顿怎么办_在线替代或参数优化【说明】

本地HTML压缩卡顿时,可调参降载、换轻量工具、用在线服务、分块处理或禁用IDE校验功能。例如调--collapse-whitespace参数、换rust-html-minifier、分块提取body压缩、关闭VS Code HTML格式化。如果您在本地运行HTML压缩工具时遇到卡顿现象,可能是由于工…...

OpenClaw定时任务实战:Qwen3-4B驱动夜间数据抓取与处理

OpenClaw定时任务实战:Qwen3-4B驱动夜间数据抓取与处理 1. 为什么选择OpenClaw做定时数据抓取? 去年我接手了一个市场监测项目,需要每天凌晨3点抓取20多个行业网站的更新内容。最初用Python脚本APScheduler的方案,但遇到三个痛点…...

ESP32驱动MPU-9250 DMP实现硬件级运动处理

1. SparkFun MPU-9250 DMP Arduino库深度解析:面向ESP32平台的嵌入式运动处理实践指南1.1 库定位与工程价值重定义尽管原始README明确声明该库“currently only supports and is tested on SAMD processors”,但其核心设计——基于Invensense官方DMP固件…...

直播带货系统源码开发需要哪些功能?电商直播平台搭建详解

近几年,随着短视频与直播生态的快速发展,直播带货已经从一种营销玩法,逐渐演变为电商行业的重要基础设施。从品牌方自建私域直播平台,到企业打造垂直电商直播系统,越来越多的公司开始选择搭建自己的直播带货系统源码&a…...

基于STM32的多功能温室大棚环境监测系统:实时显示、远程监控与智能调节温湿度

基于stm32多路温室大棚监测 容易制作 主要功能: [1]OLED屏可以实时显示四路温湿度数据 [2]手机APP可以远程监控四路温湿度数据 [3]温度湿度阈值均可手动通过按键设置 温度或者湿度超过阈值上限打开排气扇 温度低于阈值打开加热器 湿度低于阈值打开加湿器 原理图pcb…...

品牌设计没头绪?专业公司来帮你!

“在品牌设计的茫茫大海中,你是否常常感到迷失方向,找不到头绪?别担心,专业的品牌设计公司就是你的灯塔,为你照亮前行的道路!”在当今竞争激烈的市场环境中,品牌设计对于企业的发展至关重要。一…...

后悔没早看!敏感肌日常修护全攻略,轻松养出健康厚脸皮✨

后悔没早看!敏感肌日常修护全攻略,轻松养出健康厚脸皮✨集美们!谁懂啊🥹 作为天生的薄皮敏感肌,换季泛红、刷酸烂脸、遇热就红通通这些破事我全中!折腾了五六年,踩了无数坑,终于总结…...

出海行业热点 | Apple推新款“Ultra”高端产品;Google取消30%分成,开放第三方商店;阿里云登陆MWC,支持众多中国企业出海;

- 热点总览(3.3~3.9) -1. 印尼拟限未成年人用社媒2. Apple推新款“Ultra”高端产品3. Apple限制美区下载ByteDance应用4. Google取消30%分成,开放第三方商店5. 月流水有望过千万,三七开年找到了新爆款6. 阿里云登陆MWC&#xff0c…...

智能建造知识拓展 | 施工阶段AI赋能的十大关键场景

导 读在上期文章《智能建造知识拓展 | 三维激光扫描:为数字孪生构筑精准“空间底座”》中,我们为您介绍了三维激光扫描技术如何以毫米级精度采集现场数据,为数字孪生构建提供可靠的“数字底图”。本期,我们将聚焦人工智能——这位…...