提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:龚雪|2024-07-08 10:24:08.933|阅读 16 次
概述:本文将介绍如何使用DevExpress WinForms组件在网格控件中集成语义相似性搜索(通过嵌入模型提供支持),欢迎下载最新版组件体验!
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
许多用户都知道Microsoft的Daniel Roth和Steve Sanderson引入的.NET智能组件——AI驱动的UI控件,许多人都喜欢这个控件原因归结为以下几点:
P.S:DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!
获取DevExpress WinForms v24.1正式版下载
DevExpress技术交流群10:532598169 欢迎一起进群讨论
上面提到的例子采用ASP. NET Core Blazor和MVC/Razor集成,在本文中我们将演示如何使用DevExpress WinForms数据网格轻松引入“智能搜索”,其他数据感知DevExpress UI控件的集成也类似——您只需要使用适当的事件来实现期望的结果。
1. Microsoft的 NuGet(作为一个实验性的GitHub仓库)是我们“智能搜索”实现的核心——只是把它和DevExpress.Win.Grid包一起添加到WinForms项目中。
让我们仔细看看Microsoft的GitHub repo本地嵌入:
嵌入用于语义相似度搜索,自然语言字符串被转换成称为嵌入的数字向量。两个字符串在概念上越相关,它们的向量就越接近。虽然您可以使用外部AI服务来计算嵌入,但在许多情况下,可以简单地再服务器上本地计算它们(不需要GPU - CPU就可以正常工作)。SmartComponents.LocalEmbeddings是一个简化此操作的包,使用它您可以在一毫秒内计算嵌入,并在一位数毫秒内对数十万个候选项执行语义搜索。
SmartComponents.LocalEmbeddings NuGet包实际上不包含任何ML模型,但它被配置为在您第一次构建应用程序时下载一个模型,您可以配置下载哪个模型。
有关这方面的更多信息,请查看了解在web上搜索类似的文章。ONNX嵌入模型(由Microsoft.ML.OnnxRuntime.dll提供支持)会自动从SmartComponents.LocalEmbeddings NuGet包中添加到Bin文件夹中 - 它的大小为16MB。
2. 被绑定到一个Item记录的集合(ID, Name, Description),测试数据是人工智能生成的(节省时间)。我们处理网格的 事件来确定搜索字符串行的可见性(基于条目文本相似度—在本例中为Name和Description,可选),当处理键盘输入或更改搜索选项(如相似性阈值)时,也会触发过滤例程。
void OnCustomRowFilter(object sender, RowFilterEventArgs e) { Item? item = ((ColumnView)sender).DataController.GetRowByListSourceIndex(e.ListSourceRow) as Item; if(item == null) return; string filter = teFilter.Text; if(string.IsNullOrEmpty(filter)) return; float threshold = (float)tbThreshold.Value / 100; e.Visible = SmartFilterProvider.IsSimilarTo(filter, item.Name, threshold); if(!e.Visible && cbIncludeDescription.Checked) e.Visible = SmartFilterProvider.IsSimilarTo(filter, item.Description, threshold); e.Handled = true; }
3. “智能搜索”是由SmartFilterProvider类实现的——它调用了SmartComponents. LocalEmbeddings API基于GitHub repo中发布的文档。
namespace SmartAIFilter.Provider { using SmartComponents.LocalEmbeddings; public static class SmartFilterProvider { readonly static LocalEmbedder Embedder = new LocalEmbedder(caseSensitive: false); readonly static ConcurrentDictionary<string, EmbeddingF32> cache = new ConcurrentDictionary<string, EmbeddingF32>(StringComparer.OrdinalIgnoreCase); public static bool IsSimilarTo(string filter, string text, float threshold = 0.75f) { EmbeddingF32 eText = cache.GetOrAdd(text, x => Embedder.Embed(x)); EmbeddingF32 eFilter = cache.GetOrAdd(filter, x => Embedder.Embed(x)); return eFilter.Similarity(eText) > threshold; } } }
上面的LocalEmbedder类使用运行时——它可以执行许多不同的CPU或GPU嵌入模型(通常,CPU对于这样小的模型工作得更快)。
SmartComponents.LocalEmbeddings NuGet包实际上不包含任何ML模型,但它被配置为在您第一次构建应用程序时下载一个模型。如前所述,您可以配置下载哪个模型。
作为一名开发人员,您可以根据特定用例场景/项目需求来调整这个示例。例如,您可以根据需要使用在线(OpenAI, Azure等)或离线模型(Ollama, ONNX)。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:慧都网本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
行业领先的界面控件开发包,帮助企业构建卓越应用!
DevExpress DXperience Subscription高性价比的企业级.NET用户界面套包,助力企业创建卓越应用!
DevExpress WinForms Subscription为Windows Forms平台创建具有影响力的业务解决方案,高性价比WinForms界面控件套包。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢