如何使用 LLM 生成的术语自动在搜索应用程序上构建 autocomplete 功能
作者:来自 Elastic Michael Supangkat
了解如何在 Elastic Cloud 中,通过使用 LLM 生成的词汇,为搜索应用增强自动补全功能,实现更智能、更动态的搜索建议。
自动补全是搜索应用中的一项关键功能,它通过在用户输入时实时提供建议,显著提升用户体验。传统上,Elasticsearch 的自动补全功能是通过补全建议器(completion suggester)实现的,它依赖于预定义的词汇。这种方式需要人工整理建议词汇,且往往缺乏上下文的相关性。通过调用 OpenAI 的 completion 接口生成 LLM 词汇,我们可以构建一个更加智能、可扩展且自动化的自动补全功能。
用 LLM 强化你的搜索自动补全功能
在本文中,我们将探讨:
- 在 Elasticsearch 中实现自动补全的传统方法
- 如何通过集成 OpenAI 的 LLM 提升补全建议的质量
- 如何结合 Elastic Cloud 的 Ingest Pipeline 和 Inference Endpoint 实现可扩展的方案
Elasticsearch 传统的自动补全方式
在 Elasticsearch 中构建自动补全的常见做法是,在索引映射中定义一个补全字段(completion field)。这样 Elasticsearch 就可以基于预定义的词汇提供建议。
这种方法实现起来非常直接,尤其是当你的数据集相对静态,并且已经准备好了完整的建议词列表时。
实现步骤
- 创建一个包含 completion 字段的索引。
- 手动整理并维护建议词列表,并将其存储到索引中。
- 使用补全建议器(completion suggester)查询,获取相关建议。
示例:传统自动补全设置
首先,创建一个名为 products_test 的索引。在这个索引中,我们定义一个名为 suggest 的字段,类型为 completion,该字段专门用于快速自动补全建议。
PUT /products_test
{"mappings": {"properties": {"suggest": { "type": "completion" }}}
}
向 products_test 索引中插入一个测试文档。suggest 字段存储多个补全建议词。
PUT /products_test/_doc/1
{"suggest": ["MacBook Air M2", "Apple Laptop", "Lightweight Laptop"]
}
最后,我们使用 completion suggester 查询来搜索以 “MacB” 开头的建议词。
前缀 “MacB” 将匹配到 “MacBook Air M2”。
POST /products_test/_search
{"suggest": {"search-suggestion": {"prefix": "MacB","completion": { "field": "suggest" }}}
}
suggest
部分包含匹配到的建议词。
options
包含一个匹配建议的数组,其中 "text": "MacBook Air M2"
是最优先的建议结果。
"took": 2,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 0,"relation": "eq"},"max_score": null,"hits": []},"suggest": {"search-suggestion": [{"text": "MacB","offset": 0,"length": 4,"options": [{"text": "MacBook Air M2","_index": "products_test","_id": "1","_score": 1,"_source": {"suggest": ["MacBook Air M2","Apple Laptop","Lightweight Laptop"]}}]}]}
}
虽然这种方法有效,但它依赖于手动整理和不断更新建议词汇,且无法动态适应新产品或描述的变化。
更多有个 autocomplete 的文章,请在 “Elastic:开发者上手指南” 里查找 “autocomplete"。
用 OpenAI LLM 增强自动补全功能
在某些场景中,数据集会频繁变化,这就需要你不断更新有效的建议词列表。当出现新的产品、名称或术语时,你必须手动将它们添加到建议列表中。
这正是 LLM 发挥作用的地方 —— 它可以基于真实世界的知识和最新数据,动态生成相关补全词汇。
通过调用 OpenAI 的 completion 接口,我们可以基于产品名称和描述动态生成自动补全建议。这带来的好处包括:
- 自动生成同义词和相关术语
- 基于产品描述的上下文感知建议
- 无需手动维护词表,系统更加可扩展
基于 LLM 的自动补全实现步骤
- 使用 OpenAI 的 completion API 创建一个推理端点(Inference Endpoint)。
- 配置一个 Elasticsearch ingest pipeline,在 pipeline 中使用脚本处理器(script processor),调用 OpenAI 接口并使用预定义 prompt 获取补全建议。
- 将生成的建议词存储到带有 completion 字段的 Elasticsearch 索引中。
- 使用搜索请求获取动态补全结果。
以上所有步骤都可以通过在 Kibana Dev Tools 中逐步复制粘贴 API 请求完成。
在本示例中,我们使用的是 gpt-4o-mini 模型。你需要提前获取你的 OpenAI API 密钥。登录你的 OpenAI 账号,然后访问 https://platform.openai.com/api-keys,创建一个新的密钥或使用已有密钥。
创建推理端点(Inference Endpoint)
首先,我们需要创建一个推理端点。
这个端点让我们可以通过 API 与机器学习模型(这里是 OpenAI)无缝交互,同时还能保持在 Elastic 的界面中进行操作。
PUT _inference/completion/openai-completion
{"service": "openai","service_settings": {"api_key": "<insert_your_api_key>","model_id": "gpt-4o-mini"}
}
设置 Elasticsearch Ingest Pipeline
通过设置一个 ingest pipeline,我们可以在数据索引时进行处理。在这个案例中,pipeline 被命名为 autocomplete-LLM-pipeline,并包含以下内容:
- 脚本处理器(script processor):定义我们发送给 OpenAI 的 prompt,以获取建议词列表。产品名称和产品描述作为动态值包含在 prompt 中。
- 推理处理器(inference processor):引用我们之前创建的 OpenAI 推理端点。该处理器接收来自脚本处理器的 prompt 作为输入,将其发送到 LLM 模型,并将结果存储在一个名为 results 的输出字段中。
- 分割处理器(split processor):将 LLM 输出的文本结果分割成逗号分隔的数组,以适应 suggest 类型字段的格式。
- 2 个删除处理器(remove processors):在填充 suggest 字段后,删除 prompt 和 results 字段。
PUT _ingest/pipeline/autocomplete-LLM-pipeline
{"processors": [{"script": {"source": "\n ctx.prompt = 'Based on the following product name and product description, create relevant autocomplete suggestion terms from the following product, including the exact product name itself as the first term, synonyms of the product category, and keywords which might commonly be used when searching the following product:' + '\\\\n Product Name:\\\\n' + ctx.ProductName + '\\\\nProduct Description:\\\\n' + ctx.Description + '\\\\nJust include the suggestion terms in the response, as an array encapsulated in double quotes and separated by commas without any prefix or numbering'\n "}},{"inference": {"model_id": "openai-completion","input_output": {"input_field": "prompt","output_field": "results"}}},{"split": {"field": "results","separator": ",","target_field": "suggest"}},{"remove": {"field": "prompt"}},{"remove": {"field": "results"}}]
}
为了能让让大家把上面的 prompt 看得更清楚,我们在下面重新粘贴:
ctx.prompt = 'Based on the following product name and product description, create relevant autocomplete suggestion terms from the following product, including the exact product name itself as the first term, synonyms of the product category, and keywords which might commonly be used when searching the following product:' + '\\\\n Product Name:\\\\n' + ctx.ProductName + '\\\\nProduct Description:\\\\n' + ctx.Description + '\\\\nJust include the suggestion terms in the response, as an array encapsulated in double quotes and separated by commas without any prefix or numbering'\n
更多有关在 ingest pipeline 里调用 LLM 的示例,我们可以阅读 “分面搜索:利用人工智能改善搜索范围和结果”。
索引示例文档
在这个示例中,我们使用 documents API 通过开发工具手动将文档索引到一个临时索引中,名为 'products'。
需要注意的是,这并不是我们最终用于自动补全的索引。
PUT products/_doc/1
{"ProductName": "MacBook Air M2","Description": "The MacBook Air M2 is a powerful, ultra-portable laptop designed to deliver exceptional performance, all while maintaining an ultra-slim profile. Powered by Apple’s latest M2 chip, this lightweight machine is perfect for both work and play, combining top-tier performance with impressive battery life"
}
创建带有 Completion 类型映射的索引
现在,我们将创建实际用于自动补全的索引,该索引包含一个名为 suggest 的 completion 类型字段。
PUT products_with_suggestion
{"mappings": {"properties": {"suggest": { "type": "completion" } }}
}
通过 Ingest Pipeline 重新索引文档到指定索引
在这一步中,我们将之前创建的 products 索引中的数据重新索引到实际的自动补全索引 products_with_suggestion,并通过 autocomplete-LLM-pipeline 进行处理。
该 pipeline 将处理来自原始索引的示例文档,并将结果填充到目标索引中的 suggest 自动补全字段。
POST _reindex?slices=auto&wait_for_completion=false
{"source": {"index": "products"},"dest": {"index": "products_with_suggestion","pipeline": "autocomplete-LLM-pipeline"}
}
展示自动补全建议
如下所示,新的索引 products_with_suggestion 现在包含一个名为 suggest 的新字段,该字段包含由 OpenAI LLM 生成的词汇或同义词数组。
你可以运行以下请求来检查:
GET products_with_suggestion/_search
结果:
{"hits": [{"ProductName": "MacBook Air M2","Description": "The MacBook Air M2 is a powerful, ultra-portable laptop designed to deliver exceptional performance, all while maintaining an ultra-slim profile. Powered by Apple’s latest M2 chip, this lightweight machine is perfect for both work and play, combining top-tier performance with impressive battery life","suggest": ["MacBook Air M2","ultra-portable laptop","lightweight laptop","performance laptop","Apple laptop","M2 chip laptop","thin laptop","best laptop for work","laptop with long battery life","powerful lightweight laptop","Apple MacBook","MacBook Air","laptop for students","portable computer","laptop for professionals"]},{"ProductName": "DKNY Unisex Black & Grey Printed Medium Trolley Bag","Description": "Black and grey printed medium trolley bag, secured with a TSA lockOne handle on the top and one on the side, has a trolley with a retractable handle on the top and four corner mounted inline skate wheelsOne main zip compartment, zip lining, two compression straps with click clasps, one zip compartment on the flap with three zip pocketsWarranty: 5 yearsWarranty provided by Brand Owner / Manufacturer","suggest": ["DKNY Unisex Black & Grey Printed Medium Trolley Bag","medium trolley bag","travel bag","luggage","roller bag","printed suitcase","black and grey suitcase","trolley luggage","travel trolley","carry-on trolley","retractable handle bag","inline skate wheels bag","TSA lock luggage","zip compartment suitcase","compression straps bag","soft sided luggage","durable travel bag","wheeled duffel bag","luggage with warranty","brand name luggage"]}]
}
请注意,即使使用相同的 prompt,LLM 生成的词汇也不总是相同的。你可以检查生成的词汇,看看它们是否适合你的搜索用例。如果不符合需求,你可以选择修改脚本处理器中的 prompt,以获得更可预测和一致的建议词汇。
测试自动补全搜索
现在,我们可以使用 completion suggester 查询来测试自动补全功能。下面的示例还包括一个 fuzzy 参数,通过处理搜索查询中的小拼写错误来提升用户体验。你可以在开发工具中执行以下查询,并查看建议结果。
POST /products_with_suggestion/_search
{"suggest": {"search-suggestion": {"prefix": "lugg","completion": {"field": "suggest","fuzzy": { "fuzziness": 1 }}}}
}
为了可视化自动补全结果,我实现了一个简单的搜索栏,它通过客户端在 Elastic Cloud 中针对自动补全索引执行查询。随着用户输入,搜索会基于 LLM 生成的建议列表中的词汇返回结果。
通过 OpenAI 推理集成进行扩展
通过在 Elastic Cloud 中将 OpenAI 的 completion API 作为推理端点,我们可以高效地扩展这个解决方案:
- 推理端点 允许自动化和可扩展的 LLM 建议生成,而无需手动创建和维护建议词汇列表。
- Ingest Pipeline 确保在索引过程中实时丰富数据。
- 脚本处理器(Script Processor)在 ingest pipeline 中允许轻松编辑 prompt,以便在需要时更具体地定制建议列表的内容。
- Pipeline 执行 还可以直接配置为索引模板,以进一步实现自动化。这使得随着新产品的添加,建议列表可以动态生成。
在成本效率方面,模型只在索引过程中调用,这意味着它的使用随着处理的文档数量而扩展,而不是搜索量。因此,预计用户增长或搜索活动增加时,这种方法比在搜索时运行模型节省更多的成本。
结论
传统的自动补全依赖于手动定义的词汇,这既有限制又劳动密集。通过利用 OpenAI 生成的 LLM 建议,我们可以选择自动化并增强自动补全功能,提升搜索相关性和用户体验。此外,使用 Elastic 的 ingest pipeline 和推理端点集成,确保了自动化和可扩展的自动补全系统。
总的来说,如果你的搜索用例需要一套非常具体的建议,且是从一个经过精心维护和整理的列表中提取的,按照本文第一部分的描述,通过 API 批量导入建议词汇仍然是一个很好的高效选择。如果管理和更新建议列表是一个痛点,那么基于 LLM 的补全系统通过自动生成上下文相关的建议,省去了手动输入的麻烦。
Elasticsearch 提供了与行业领先的生成 AI 工具和供应商的本地集成。可以查看我们的网络研讨会,了解如何超越 RAG 基础,或构建适合生产的 Elastic 向量数据库应用。
为了为你的用例构建最佳的搜索解决方案,立即开始免费云试用,或尝试在本地机器上运行 Elastic。
原文:How to build autocomplete feature on search application automatically using LLM generated terms - Elasticsearch Labs
相关文章:
如何使用 LLM 生成的术语自动在搜索应用程序上构建 autocomplete 功能
作者:来自 Elastic Michael Supangkat 了解如何在 Elastic Cloud 中,通过使用 LLM 生成的词汇,为搜索应用增强自动补全功能,实现更智能、更动态的搜索建议。 自动补全是搜索应用中的一项关键功能,它通过在用户输入时实…...
电路基础:【1】PN结二极管制作电桥点亮LED灯
第一章:PN结二极管制作电桥点亮LED灯 文章目录 第一章:PN结二极管制作电桥点亮LED灯前言一、电路原理二、电路图与元器件1.电路图 做实验总结 前言 在本章中,我们将探讨如何通过PN结二极管制作电桥电路,并利用该电路点亮LED灯。L…...
蓝桥与力扣刷题(蓝桥 门牌制作)
题目:小蓝要为一条街的住户制作门牌号。 这条街一共有 2020 位住户,门牌号从 1 到 2020编号。 小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7&…...
unity console日志双击响应事件扩展
1 对于项目中一些比较长的日志,比如前后端交互协议具体数据等,这些日志内容可能会比较长,在unity控制面板上查看不是十分方便,我们可以对双击事件进行扩展,将日志保存到一个文本中,然后用系统默认的文本查看…...
基于Django创建一个WEB后端框架(DjangoRestFramework+MySQL)流程
一、Django项目初始化 1.创建Django项目 Django-admin startproject 项目名 2.安装 djangorestframework pip install djangorestframework 解释: Django REST Framework (DRF) 是基于 Django 框架的一个强大的 Web API 框架,提供了多种工具和库来构建 RESTf…...
unittest框架 核心知识的系统复习及与pytest的对比
1. unittest 介绍 是什么:Python 标准库自带的单元测试框架,遵循 xUnit 架构(类似Java的JUnit)。 核心概念: TestCase:测试用例的基类,所有测试类需继承它。 TestSuite:测试套件&a…...
嵌入式硬件设计SPI时需要注意什么?
嵌入式硬件设计SPI时需要注意什么? 1. 硬件设计注意事项 关键点注意事项1. 信号完整性- 缩短SCK、MOSI、MISO的走线长度,避免反射干扰。- 使用屏蔽线或差分信号(高速场景)。- 阻抗匹配(特别是高频信号,如50Ω端接)。2. 电源与地线- 电源去耦:每个SPI芯片的VCC附近放置0…...
vscode远程ssh链接服务器
前提:安装并配置好 ssh 服务,并且远程主机和本地主机在同一个局域网。 降级到1.85.2版本并禁用自动更新,因为最新的vscode不支持remote SSH。 【VS Code】VS Code不再支持remote SSH 1.在vscode 扩展中搜索Remote - SSH,下载安装扩展 2.点击 远程资源管理…...
97k倍区间
97k倍区间 ⭐️难度:中等 🌟考点:暴力,2017省赛 📖 📚 import java.util.Scanner;public class Main {static int N 100010;public static void main(String[] args) {Scanner sc new Scanner(System.…...
绝美焦糖暖色调复古风景画面Lr调色教程,手机滤镜PS+Lightroom预设下载!
调色教程 通过 Lr 软件丰富的工具和功能,对风景照片在色彩、影调等方面进行调整。例如利用基本参数调整选项,精准控制照片亮度、对比度、色温、色调等基础要素;运用 HSL 面板可对不同色彩的色相、饱和度以及明亮度进行单独调节;利…...
双王炸爆单,问界M8、M9怎么选?
文 | AUTO芯球 作者 | 雷慢 问界M8一小时小订7500台, 新问界M9一小时订单3800台。 余承东这次直接把一对王炸打了出来, 来看这对大小王, 问界M8预售价36.8万到45.8万, 问界M9预售价47.8万到57.8万, 这两款车&…...
【自学笔记】OpenStack基础知识点总览-持续更新
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 OpenStack基础知识点总览一、OpenStack概述1.1 OpenStack起源1.2 OpenStack的目标与优势1.3 OpenStack的常见核心项目 二、OpenStack的节点类型2.1 控制节点2.2 网络…...
同步 Fork 仓库的命令
同步 Fork 仓库的命令 要将您 fork 的仓库的 main 分支与原始仓库(fork 源)同步,您可以使用以下命令: 首先,确保您已经添加了原始仓库作为远程仓库(如果尚未添加): git remote add…...
2025-03-04 学习记录--C/C++-C语言 判断是否是素数
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 C语言 判断是否是素数 一、代码 ⭐️ #include <stdio.h> #include <stdbool.h> // 使用 bool 类型// 判断是否是…...
1、CI/CD 平台安装部署(Gitlab+Jenkins)
CI/CD 平台安装部署 安装部署Gitlab安装Gitlab添加组、创建用户、创建项目 Jenkins 安装Maven 安装和配置Tomcat 安装和配置Jenkins 构建 Maven 项目自由风格项目构建 什么是CI/CD? 通俗来说就是启动一个服务,能够监听代码变化,然后自动执行构…...
数据集路径出错.yaml‘ images not found , missing path
方法一:删除settings.yaml 方法二:dataset_name.yaml改用绝对路径,如最后一张图 错误分析: dataset_name.yaml中的path的路径仅支持绝对路径,写相对路径就会搜索不到,使用settings.json中的路径࿰…...
零基础学习Python 之类(Class)和实例(Instance)_我的学习Python记录12
零基础学习Python 之类(Class)和实例(Instance)_我的学习Python记录12 目录 什么是类和实例?类的作用如何定义类?如何创建实例?类的属性和方法 属性方法 实际案例 案例 1:学生信息…...
Map<String,Object>转换为XML报文的方法
1. 使用 JAXB (Java Architecture for XML Binding) JAXB 是 Java 标准库的一部分,支持将 Java 对象与 XML 相互转换。虽然 JAXB 主要用于将 Java 对象转换为 XML,但可以通过一些技巧将 Map<String, Object> 转换为 XML。 示例代码 import java…...
Linux:如何安装虚拟机
Linux:如何安装虚拟机 第一步首先打开阿里巴巴开源镜像网站然后点击相应要下载链接 选择自己需要的 这个是完整版 这个是联网进行安装系统 这个是基础版只有命令行界面 这里我选择下载基础版 下载好打开vmwareworkstation 开始安装...
HTML 编辑器推荐与 VS Code 使用教程
在进行 HTML 编程时,选择一款合适的 HTML 编辑器能极大地提高开发效率。以下为大家推荐几款常用且功能强大的 HTML 编辑器,同时详细介绍如何使用 VS Code 创建和预览 HTML 文件。 一、HTML 编辑器推荐 VS Code:由微软开发,是一款…...
Python的Pandas和matplotlib库:让数据可视化贼简单
在数据爆炸的时代,数据可视化已成为数据分析的关键环节。Python 作为强大的编程语言,拥有众多用于数据可视化的库,而 pandas 库在其中扮演着重要角色。它不仅能高效处理和分析数据,还具备强大的数据可视化功能,让我们轻…...
私有云基础架构与运维(二)
二.私有云基础架构 【项目概述】 经过云计算基础知识及核心技术的学习后,希望进一步了解 IT 基础架构的演变过 程,通过学习传统架构、集群架构以及私有云基础架构的相关知识,认识企业从传统 IT 基 础架构到私有云基础架构转型的必要性。…...
Java Maven 项目问题:org.dom4j:dom4j:pom:2.1.3 failed to transfer from...
问题与处理策略 问题描述 IDEA 中打开一个 Java 项目,使用 Maven 构建时,报如下错误 org.dom4j:dom4j:pom:2.1.3 failed to transfer from https://repo.maven.apache.org/maven2 during a previous attempt. This failure was cached in the local r…...
DeepSeek group-limited expert routing和负载均衡
Ref https://github.com/deepseek-ai/DeepSeek-V3/blob/main/inference/model.py GitHub - deepseek-ai/EPLB: Expert Parallelism Load Balancer DeepSeek-V3 Technical Report DeepSeek的路由方法 class Gate(nn.Module):def __init__(self, args: ModelArgs):super().__…...
nvidia驱动升级-ubuntu 1804
升级 1.从官网下载*.run驱动文件 2.卸载原始驱动 sudo /usr/bin/nvidia-uninstall sudo apt-get --purge remove nvidia-\* # 可能不需要加-\ sudo apt-get purge nvidia-\* # 可能不需要加-\ sudo apt-get purge libnvidia-\* # 可能不需要…...
金融合规测试:金融系统稳健运行的“定海神针“
一、什么是金融合规测试? 金融行业是受监管最严格的领域之一,各国政府和监管机构(如中国人民银行、银保监会、证监会、美国SEC、欧盟ESMA等)都制定了严格的法律法规,要求金融机构确保系统安全、交易透明、公平竞争&am…...
[Windows] 多系统键鼠共享工具 轻松跨系统控制多台电脑
参考原文:[Windows] 多系统键鼠共享工具 轻松跨系统控制多台电脑 还在为多台电脑需要多套键盘鼠标而烦恼吗?是不是在操控 Windows、macOS、Linux 不同系统电脑时手忙脚乱?现在,这些问题通通能解决!Deskflow 软件闪亮登…...
vue3 组合式API:透传 Attributes(v-bing与:)—setup() 上下文对象ctx.attrs
一、概念及举例说明透传 attribute与模板语法中的Attribute(v-bind) 透传 attribute:传递给一个组件没有通过 props 与 emits 的attribute或者v-on事件监听(常见的:calss、style、id) 举例:当一个组件以单个元素为根元素渲染时,透传 attribute 会自动被添加到根元素上 …...
记录一次利用条件索引优化接口性能的实践
一、业务背景 某表数据量达到4000w,需要每天定时任务处理20w条。前2周内SQL执行无任何问题,非常快,效率比较高。随着处理完的数据量变大,处理完数据状态设置为1,SQL执行效率越来越差,已经达到了惊人的4.6秒…...
Anaconda 部署 DeepSeek
可以通过 Anaconda 环境部署 DeepSeek 模型,但需结合 PyTorch 或 TensorFlow 等深度学习框架,并手动配置依赖项。 一、Anaconda 部署 DeepSeek 1. 创建并激活 Conda 环境 conda create -n deepseek python3.10 # 推荐 Python 3.8-3.10 conda activate…...
MATLAB中lookAheadBoundary函数用法
目录 语法 说明 示例 匹配指定模式之前的位置 匹配指定模式之前的边界以外的边界 lookAheadBoundary函数的功能是匹配指定模式之前的边界。 语法 newpat lookAheadBoundary(pat) 说明 newpat lookAheadBoundary(pat) 创建匹配 pat 的开头的模式。结果中不包含 pat 匹…...
Unity HDR颜色、基础颜色、强度强度、HDR面板Intensity之间的相互转换
目录 前言: 一、UnityHDR面板的规律 二、HDR与基础颜色转换,HDR强度获取,输入设置强度获取 1.基础色->HDR颜色 2.HDR颜色->基础色 3.获取HDR颜色在面板中的强度 4.获取HDR颜色在面板设置输入时的强度 前言: HDR&#…...
nvm 让 Node.js 版本切换更灵活
有很多小伙伴前端开发进程中,我们常常会遇到不同项目依赖不同版本 Node.js 的情况。我们不可能去卸载重新安装适应的版本去安装依赖或者启动项目。为了避免版本冲突带来的一系列麻烦,在这里给大家推荐一款Node.js 版本管理工具——nvm(Node V…...
微机惊魂记
春天午后的阳光懒洋洋地洒在教学楼的走廊上,我跟着同学们排着队往四楼的微机教室走去。楼梯间的窗户开着,飘进来阵阵樱花的香气,让人昏昏欲睡。 微机教室在一栋普通的五层教学楼里,墙壁刷着淡绿色的漆,墙角还有些剥落…...
Windows下安装VMware Workstation 17并设置支持MacOS
VMware Workstation 17 介绍 VMware Workstation 17 是 VMware 公司推出的一款强大的桌面虚拟化软件,适用于 Windows 、 Linux 和FreeBSD等操作系统。它允许用户在单一物理计算机上创建、运行和管理多个虚拟机(VM),每个虚拟机都可…...
[MySQL初阶]MySQL(5)内置函数详解
标题:[MySQL初阶]MySQL(5)内置函数详解 水墨不写bug 文章目录 一、日期函数1. current_date()2. current_time()3. current_timestamp()4. date(datetime)5. date_add(date, interval expr unit)6. date_sub(date, interval expr unit)7. dat…...
Linux下安装elasticsearch(Elasticsearch 7.17.23)
Elasticsearch 是一个分布式的搜索和分析引擎,能够以近乎实时的速度存储、搜索和分析大量数据。它被广泛应用于日志分析、全文搜索、应用程序监控等场景。 本文将带你一步步在 Linux 系统上安装 Elasticsearch 7.17.23 版本,并完成基本的配置࿰…...
华为云 | 快速搭建DeepSeek推理系统
DeepSeek(深度求索)作为一款国产AI大模型,凭借其高性能、低成本和多模态融合能力,在人工智能领域崛起,并在多个行业中展现出广泛的应用潜力。 如上所示,在华为云解决方案实践中,华为云提供的快速…...
宠物医院台账怎么做,兽医电子处方单模板打印样式,佳易王兽医兽药开方宠物病历填写打印操作教程
一、概述 本实例以佳易王兽医宠物电子处方开单系统版本为例说明,其他版本可参考本实例。试用版软件资源可到文章最后了解,下载的文件为压缩包文件,请使用免费版的解压工具解压即可试用。 软件特点: 多场景处方兼容性针对宠物医…...
STM32之DMA
Flash是主闪存,下载程序的地方,系统存储器出厂自动写入,不许修改。系统存储器是存储Bootloader,选项字节存的是flash的读保护,写保护,还有看门狗等。运行内存SRAM存的临时变量,也就是程序中定义…...
用低代码平台集成人工智能:无需专业开发也能实现智能化
引言:人工智能的普及与企业需求 随着人工智能(AI)技术的飞速发展,越来越多的企业开始意识到其在提升运营效率、优化客户体验和推动业务创新方面的巨大潜力。从智能客服到自动化决策支持,从数据分析到个性化推荐&#x…...
UI自动化:利用百度ocr识别解决图形验证码登录问题
相信大家在做自动化测试过程中都遇到过图形验证码的问题,最近我也是遇到了,网上搜了很多方法,最简单的方法无非就是去掉图形验证码或者设置一个万能验证码,但是这个都需要开发来帮忙解决,对于我们这种自学的人来说就不…...
1236 - 二分查找
题目描述 请在一个有序递增数组中(不存在相同元素),采用二分查找,找出值 xx 的位置,如果 xx 在数组中不存在,请输出 -1 ! 输入 第一行,一个整数 nn ,代表数组元素个数…...
MARL零样本协调之Fictitious Co-Play学习笔记
下列引用来自知乎作者Algernon 知乎link FCP作为ZSC领域两阶段训练方法的开创者 论文《Collaborating with Humans without Human Data》来自 NeurIPS 2021。这篇论文提出 Fictitious Co-Play (FCP) 来解决 ZSC 问题。论文认为,ZSC 的第一个重要问题是对称性&#x…...
设计模式 + java8方法引用 实现任意表的过滤器
会用到下面2个依赖,原因是在今天的案例中,我想在我代码中使用上Entity::getFieldName 这种形式 LambdaQueryWrapper<ApplicationDashboard> queryWrapper new LambdaQueryWrapper<>(); queryWrapper.eq(ApplicationDashboard::getAppCode,…...
thingsboard edge 在windows 环境下的配置
按照官方文档:Installing ThingsBoard Edge on Windows | ThingsBoard Edge,配置好java环境和PostgreSQL。 下载对应的windows 环境下的tb-edge安装包。下载附件 接下来操作具体如下 步骤1,需要先在thingsboard 服务上开启edge 权限 步骤2…...
OpenAI Whisper:开启语音转文本的智能时代
在人工智能技术飞速发展的今天,OpenAI推出的Whisper语音识别系统正悄然改变着人类与机器的交互方式。作为一款开源的AI驱动语音转文本工具,Whisper凭借其跨语言能力、高精度识别和灵活的生态系统,成为开发者和普通用户共同追捧的技术标杆。 核心技术与突破 Whisper基于深度…...
OpenHarmony4.0_Linux环境搭建
查看链接:OpenHarmony4.0_Linux环境搭建https://www.yuque.com/xinzaigeek/jishu/fs9msruqhd5nhw4i...
道可云人工智能每日资讯|亚马逊云业务部门成立智能体人工智能团队
道可云元宇宙每日简报(2025年3月6日)讯,今日元宇宙新鲜事有: 《杭州市富阳区未来产业培育行动计划(2025-2026年)》发布 3月3日,杭州市富阳区经信局正式发布了《杭州市富阳区未来产业培育行动计划(2025-2026年)》&…...
Java-servlet(四)详细讲解Servlet类层次结构与生命周期
Java-servlet(四)详细讲解Servlet和生命周期 前言一、Servlet类层次结构1.Servlet包2.Servlet 与 ServletConfig 与 Serializable 的关系1. 三者分别是什么2. 三者之间的关系 3.如何让类具有 Servlet 功能 二、Servlet 生命周期1.初始化阶段2.服务阶段3.…...