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

Elasticsearch:构建 AI 驱动的搜索体验

Elasticsearch 介绍

当你开始使用 Elastic 时,你将使用 Elasticsearch Relevance Engine™(ESRE),它专为 AI 搜索应用程序提供支持。借助 ESRE,你可以利用一整套开发者工具,包括 Elastic 的文本搜索、向量数据库以及我们专有的用于语义搜索的 Transformer 模型。

Elastic 提供多种搜索技术,首先是 BM25,它是行业标准的文本搜索方法。BM25 可精准匹配特定搜索,找到精确的关键词,并且可以通过调优提升效果。

在开始向量搜索时,需要了解向量搜索有两种形式:“dense - 密集”(即 kNN 向量搜索)和 “sparse - 稀疏”。

Elastic 还提供开箱即用的 Learned Sparse Encoder 模型,用于语义搜索。该模型在多个数据集(如金融数据、天气记录、问答对等)上的表现优异。该模型无需额外的微调,即可在各个领域提供高相关性的搜索结果。

查看这个交互式演示,看看当 Elastic 的 Learned Sparse Encoder 模型与 Elastic 的 BM25 文字搜索算法对比时,搜索结果如何变得更加相关。

此外,Elastic 还支持密集向量,以实现对文本之外的非结构化数据(如视频、图像和音频)的相似性搜索。

语义搜索和向量搜索的优势在于,它们允许用户使用直观的语言进行搜索查询。例如,如果你想查找关于第二收入的职场指南,你可以搜索 “side hustle”(side hustle),即使这一术语在正式的 HR 文件中并不常见。

在本指南中,我们将演示如何创建 Elasticsearch,使用 Elastic 网页爬虫摄取数据,并通过简单几步实现语义搜索。

安装

Elasticsearch 及 Kibana

我们首先需要安装 Elasticsearch 及 Kibana。我们可以参考如下的文章来进行安装:

  • 如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch

  • Kibana:如何在 Linux,MacOS 及 Windows 上安装 Elastic 栈中的 Kibana

当我们安装的时候,选择 Elastic Stack 8.x 的文章来进行安装。在本展示中,我们将使用 Elastic Stack 8.17.2 来进行展示。当我们首次运行 Elasticsearch 时,我们可以看到如下的界面:

请记下上面的 elastic 超级用户的密码,以备在下面进行使用。你还需要记下上面的 fingerprint 的值,以配置下面的 crawler。如果不记得上面的画面,那么你可以在 Kibana 的配置文件 config/kibana.yml 文件中找到。

启动白金试用

创建 API key

我们可以按照如下的步骤来创建一个 API key 供下面的步骤来进行使用:

我们可以拷贝上面的 API key 以供下面的配置进行使用:

安装 ELSER 模型

如果你还没有下载 ELSER 模型的话,请参考文章 “Elasticsearch:部署 ELSER - Elastic Learned Sparse EncoderR” 来进行安装。安装完毕后,我们可以看到如下的画面:

如上所示,我们已经成功地安装了 .elser_model_2 模型。

创建 ELSER 端点

我们使用如下的命令来创建一个叫做 my-elser-model 的端点:

PUT _inference/sparse_embedding/my-elser-model
{"service": "elasticsearch","service_settings": {"adaptive_allocations": { "enabled": true,"min_number_of_allocations": 1,"max_number_of_allocations": 10},"num_threads": 1,"model_id": ".elser_model_2" }
}

这个端点在下面的配置中进行使用。

创建 Elasticsearch 索引

我们首先打开 Kibana,并创建一个叫做 elasticsearch-labs-blog 的索引:

上面表明我们已经成功地创建了一个叫做 elasticsearch-labs-blog 的索引。

我们可以通过 Kibana Dev Toosl 来进行检查:

接下来,添加一个 Semantic Text 类型的字段,我们给它取个非常有创意的名字:semantic_text

我们同样来通过 Dev Tools 来进行查看:

我们可以看到上面有一个已经生成的 semantic_text 的字段。

写入数据

配置 Elastic Open Web Crawler

你需要 Docker 来使用 Open Web Crawler

下面是一个简单的配置文件,它指示爬虫读取 Elasticsearch Labs 博客,并将数据写入 elasticsearch-labs-blog 索引,使用 elasticsearch.host 作为主机,并通过 elasticsearch.api_key 进行身份验证。

将以下内容复制到一个文件中,并将其命名为 crawler-config-blog.yml,然后根据需要更改 hostapi_key

$ cd demos/
$ ls
azure         deepseek      vector_search
$ mkdir -p crawler-elser/config
$ cd crawler-elser/config
$ vi crawler-config-blog.yml

crawler-config-blog.yml

domains:- url: https://www.elastic.coseed_urls:- https://www.elastic.co/search-labs/blogcrawl_rules:- policy: allowtype: beginspattern: /search-labs/blog- policy: denytype: regexpattern: .*output_sink: elasticsearch
output_index: elasticsearch-labs-blog elasticsearch:host: https://192.168.101.142port: 9200api_key: MjhVbXhwVUJDMkt6RFJJSTJ1RlM6eGFZZ2dpX3pTMTJZNXRJVnJCazljZw==ca_fingerprint: 1deb6039c6b542724612dd267f6f1bc53f40add6350ca865a9948cc977eee545bulk_api.max_items: 5pipeline_enabled: false

:你需要根据自己的配置修改上面的 api_key 及 elasticsearch.ca_fingerprint 值。我们可以参考链接来进行配置。你可以使用 ifconfig 来获取当前电脑上的私有 IP 地址。

现在创建一个 docker-compose.yml 文件。

docker-compose.yml

services:crawler:image: docker.elastic.co/integrations/crawler:latestvolumes:- ./config:/app/configstdin_open: truetty: true
$ pwd
/Users/liuxg/demos/crawler-elser
$ tree -L 2
.
├── config
│   └── crawler-config-blog.yml
└── docker-compose.yml

并使用以下命令启动服务:

docker-compose up -d

我们使用如下的命令来进行查看:

docker ps
$ docker ps
CONTAINER ID   IMAGE                                           COMMAND       CREATED              STATUS              PORTS     NAMES
a061113bb26f   docker.elastic.co/integrations/crawler:latest   "/bin/bash"   About a minute ago   Up About a minute             crawler-elser-crawler-1

现在你准备好开始爬取过程了:

docker-compose exec -it crawler bin/crawler crawl /app/config/crawler-config-blog.yml

几分钟后,你应该已经将整个 Elasticsearch labs 博客索引完成。

我们通过如下的命令来进行查看:

GET elasticsearch-labs-blog/_search

另外一种运行 crawler 的方式是通过阅读文章 “Elasticsearch:使用 Open Crawler 和 semantic text 进行语义搜索”。

发生了什么?

博客内容被索引到 body 字段,然后这些内容被转换为语义文本字段中的稀疏向量。这个转换包括两个主要步骤。首先,内容被划分成较小的、可管理的块,以确保文本被拆分成有意义的片段,这样可以更有效地处理和搜索。接下来,每个文本块使用文本扩展技术被转换成稀疏向量表示。这个步骤利用 ELSER(Elastic Search Engine for Relevance)将文本转换成捕捉语义含义的格式,从而实现更准确和相关的搜索结果。

通过将文本字段和 semantic_text 字段都索引到 Elasticsearch,这个过程结合了传统的关键词搜索和先进的语义搜索的优势。这个混合搜索提供了全面的搜索功能,确保用户可以基于原始文本和其潜在意义找到相关信息。

使用 Elasticsearch 来进行搜索

测试搜索查询 现在是时候搜索你想要的信息了。如果你是一个实现搜索的开发者(例如,为你的网页应用程序实现搜索),你应该使用 Console/Dev Tools 来测试和优化你索引数据的搜索结果。

我们从一个简单的 multi_match 查询开始,它将匹配 “title” 和 “body” 字段中的文本。由于这是一个经典的词汇搜索(还不是语义搜索),像 “how to implement multilingual search”这样的查询将匹配你提供的单词。

GET elasticsearch-labs-blog/_search
{"_source": ["title"],"query": {"multi_match": {"query": "how to implement multilingual search","fields": ["title","body"]}}
}
  "hits": {"total": {"value": 243,"relation": "eq"},"max_score": 10.187533,"hits": [{"_index": "elasticsearch-labs-blog","_id": "9d9385fd1d6e37586d1d05e08197a3e52d7e211d","_score": 10.187533,"_source": {"title": "How to implement image similarity search in Elasticsearch - Elasticsearch Labs"}},{"_index": "elasticsearch-labs-blog","_id": "9a81a1b071b31132ef425b81ac77682854397aa5","_score": 5.8747864,"_source": {"title": "Scalar quantization optimized for vector databases - Elasticsearch Labs"}},{"_index": "elasticsearch-labs-blog","_id": "8f2c911f8b9eb1301887e4a64d47e889d195d81d","_score": 5.803198,"_source": {"title": "Multilingual vector search with the E5 embedding model - Elasticsearch Labs"}},{"_index": "elasticsearch-labs-blog","_id": "787f3c1fe1192f92b6cd656c45afeb3b73dbcad0","_score": 5.469969,"_source": {"title": "Evaluating scalar quantization in Elasticsearch - Elasticsearch Labs"}},{"_index": "elasticsearch-labs-blog","_id": "cad40b1b9a5e3d410cc3193ab61c6303e6ff79c6","_score": 5.3935347,"_source": {"title": "Elasticsearch Open Inference API adds support for Jina AI Embeddings and Rerank Model - Elasticsearch Labs"}},{"_index": "elasticsearch-labs-blog","_id": "bba02bb478a478ebe0adddc748693307a64fd709","_score": 5.39243,"_source": {"title": "Building multilingual RAG with Elastic and Mistral - Elasticsearch Labs"}},

在这种情况下,前 5 个匹配结果还不错,但并不完美。

How to implement image similarity search in Elasticsearch - Elasticsearch Labs
Scalar quantization optimized for vector databases - Elasticsearch Labs
Multilingual vector search with the E5 embedding model - Elasticsearch Labs
Evaluating scalar quantization in Elasticsearch - Elasticsearch Labs
Elasticsearch Open Inference API adds support for Jina AI Embeddings and Rerank Model - Elasticsearch Labs

现在尝试使用语义查询,它会自动将文本 “how to implement multilingual search?” 转换为向量表示,并对 semantic_text 字段执行查询。

GET elasticsearch-labs-blog/_search
{"_source": ["title"],"query": {"semantic": {"field": "semantic_text","query": "how to implement multilingual search?"}}
}
 "hits": {"total": {"value": 243,"relation": "eq"},"max_score": 23.57368,"hits": [{"_index": "elasticsearch-labs-blog","_id": "8f2c911f8b9eb1301887e4a64d47e889d195d81d","_score": 23.57368,"_source": {"title": "Multilingual vector search with the E5 embedding model - Elasticsearch Labs"}},{"_index": "elasticsearch-labs-blog","_id": "bba02bb478a478ebe0adddc748693307a64fd709","_score": 22.532505,"_source": {"title": "Building multilingual RAG with Elastic and Mistral - Elasticsearch Labs"}},{"_index": "elasticsearch-labs-blog","_id": "9621418190a5fe3a472fbaa228676560d034566e","_score": 22.302826,"_ignored": ["meta_description.keyword"],"_source": {"title": "How to search languages with compound words - Elasticsearch Labs"}},{"_index": "elasticsearch-labs-blog","_id": "7a1464445379516bf694c5677b2835c96a1c13a6","_score": 21.983751,"_source": {"title": "Dataset translation with LangChain, Python & Vector Database for multilingual insights - Elasticsearch Labs"}},{"_index": "elasticsearch-labs-blog","_id": "626be320dfa0b30e915b59ce7355002692c54599","_score": 20.928116,"_source": {"title": "Agentic RAG with Elasticsearch & Langchain - Elasticsearch Labs"}},{"_index": "elasticsearch-labs-blog","_id": "9a81a1b071b31132ef425b81ac77682854397aa5","_score": 20.376408,"_source": {"title": "Scalar quantization optimized for vector databases - Elasticsearch Labs"}},

你从这个语义搜索中得到的前五个结果看起来好多了。

Multilingual vector search with the E5 embedding model - Elasticsearch Labs
Building multilingual RAG with Elastic and Mistral - Elasticsearch Labs
How to search languages with compound words - Elasticsearch Labs
Dataset translation with LangChain, Python & Vector Database for multilingual insights - Elasticsearch Labs
gentic RAG with Elasticsearch & Langchain - Elasticsearch Labs

为什么不同时使用两者呢?创建一个混合搜索查询

使用倒排排名融合(RRF)是混合检索系统中的一种技术,用于提高搜索结果的相关性。它将不同的检索方法(如词汇(传统)搜索和语义搜索)结合起来,以增强整体搜索性能。

通过利用 RRF,查询确保最终的文档列表是来自两种检索方法的最佳结果的平衡组合,从而提高搜索结果的整体相关性和多样性。这种融合技术弥补了单一检索方法的局限性,提供了更全面、更准确的结果集。

GET elasticsearch-labs-blog/_search
{"_source": ["title"],"retriever": {"rrf": {"retrievers": [{"standard": {"query": {"multi_match": {"fields": ["title","body"],"query": "how to implement multilingual search"}}}},{"standard": {"query": {"semantic": {"field": "semantic_text","query": "how to implement multilingual search"}}}}]}}
}
  "hits": {"total": {"value": 243,"relation": "eq"},"max_score": 0.03226646,"hits": [{"_index": "elasticsearch-labs-blog","_id": "8f2c911f8b9eb1301887e4a64d47e889d195d81d","_score": 0.03226646,"_source": {"title": "Multilingual vector search with the E5 embedding model - Elasticsearch Labs"}},{"_index": "elasticsearch-labs-blog","_id": "9a81a1b071b31132ef425b81ac77682854397aa5","_score": 0.031513646,"_source": {"title": "Scalar quantization optimized for vector databases - Elasticsearch Labs"}},{"_index": "elasticsearch-labs-blog","_id": "bba02bb478a478ebe0adddc748693307a64fd709","_score": 0.031280547,"_source": {"title": "Building multilingual RAG with Elastic and Mistral - Elasticsearch Labs"}},{"_index": "elasticsearch-labs-blog","_id": "9621418190a5fe3a472fbaa228676560d034566e","_score": 0.03079839,"_ignored": ["meta_description.keyword"],"_source": {"title": "How to search languages with compound words - Elasticsearch Labs"}},{"_index": "elasticsearch-labs-blog","_id": "787f3c1fe1192f92b6cd656c45afeb3b73dbcad0","_score": 0.030330881,"_source": {"title": "Evaluating scalar quantization in Elasticsearch - Elasticsearch Labs"}},{"_index": "elasticsearch-labs-blog","_id": "cad40b1b9a5e3d410cc3193ab61c6303e6ff79c6","_score": 0.029877368,"_source": {"title": "Elasticsearch Open Inference API adds support for Jina AI Embeddings and Rerank Model - Elasticsearch Labs"}},{"_index": "elasticsearch-labs-blog","_id": "9d9385fd1d6e37586d1d05e08197a3e52d7e211d","_score": 0.016393442,"_source": {"title": "How to implement image similarity search in Elasticsearch - Elasticsearch Labs"}},

混合搜索的前5个结果包含了非常好的结果,所有结果都与如何使用 Elasticsearch 实现多语言搜索高度相关:

Multilingual vector search with the E5 embedding model - Elasticsearch Labs
Scalar quantization optimized for vector databases - Elasticsearch Labs
Building multilingual RAG with Elastic and Mistral - Elasticsearch Labs
How to search languages with compound words - Elasticsearch Labs
Evaluating scalar quantization in Elasticsearch - Elasticsearch Labs

下一步

感谢你花时间自建 Elasticsearch 并为你的数据设置语义搜索。在你开始使用 Elastic 的旅程时,了解一些你在跨环境部署时作为用户应该管理的操作、安保和数据组件。

准备好开始了吗?在 Elastic Cloud 上启动免费的 14 天试用,或尝试这 15 分钟的动手学习,了解搜索 AI 101。

相关文章:

Elasticsearch:构建 AI 驱动的搜索体验

Elasticsearch 介绍 当你开始使用 Elastic 时,你将使用 Elasticsearch Relevance Engine™(ESRE),它专为 AI 搜索应用程序提供支持。借助 ESRE,你可以利用一整套开发者工具,包括 Elastic 的文本搜索、向量…...

数据文件误删除,OceanBase中如何重建受影响的节点

当不慎误删数据文件且当前没有现成的可替换节点时,在OceanBase中,不必急于采取极端措施,可以考虑运用 server_permanent_offline_time 参数,来重建受影响的节点。 原理: server_permanent_offline_time 是 OceanBase数…...

MySQL面试专题

1.什么是BufferPool? Buffer Pool基本概念 Buffer Pool:缓冲池,简称BP。其作用是用来缓存表数据与索引数据,减少磁盘IO操作,提升效率。 Buffer Pool由缓存数据页(Page) 和 对缓存数据页进行描述的控制块 组成, 控制…...

Redmi Note 11 T pro + 刷入 LinegaOs 22.1 记录 手机已经解锁bl.

Redmi Note 11 T pro 刷入 LinegaOs 22.1 记录 手机已经解锁bl. 获取LIneagaOS源码, 以及https://github.com/xiaomi-mediatek-devs 这个组织提供的代码,非常感谢 环境要求: ubuntu 22.04 需要准备的依赖 sudo apt install git curl vim…...

Python+Requests+Pytest+YAML+Allure接口自动化框架

GitHub源码地址(详细注释):源码 调试项目python自主搭建:附项目源码 一、项目介绍 本项目是基于 PythonRequestsPytestYAMLAllure 搭建的 接口自动化测试框架,用于对 REST API 进行测试。 框架的主要特点包括&#…...

如何解决Redis缓存异常问题(雪崩、击穿、穿透)

引言 Redis作为一种高性能的内存数据库,被广泛应用于缓存系统的构建中。然而,在实际应用过程中,我们常常会遇到三种典型的缓存异常问题:缓存雪崩、缓存击穿和缓存穿透。这些问题如果处理不当,可能会导致系统性能下降&…...

如何使用 Postman 进行接口测试?

使用 Postman 这一工具,可以轻松地进行接口测试。以下是一份简单的使用教程,帮助你快速上手。 Postman 接口测试教程:详细步骤及操作技巧...

记一次线上环境JAR冲突导致程序报错org.springframework.web.util.NestedServletException

一、问题描述 有个文件导入功能,用到了Hutool 的加密解密功能,本地运行完全可以,但是线上报错:“org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFou…...

VLAN实验

一:实验拓扑 二:实验需求 1、PC1和PC3所在接口为access接口,属于VLAN 2 2、PC2/4/5/6处于同一网段 其中PC2可以访问PC4/5/6 PC4可以访问PC5不能访问PC6 PC5不能访问PC6 3、PC1/3和PC2/4/5/6不在一个网段,且可以正常通讯 4、…...

FPGA中串行执行方式之状态机

FPGA中串行执行方式之状态机 在FPGA中,默认情况下,逻辑是并行执行的,因为FPGA的硬件资源是并行的。然而,在某些情况下,你可能需要某一段逻辑以串行方式执行。这可以通过以下几种方法实现:使用状态机(Finite State Machine, FSM)​、使用计数器控制、使用流水线(Pipel…...

【常用的中间件】

中间件(Middleware)是位于客户端和服务器之间的软件层,用于处理客户端请求和服务器响应之间的各种任务。中间件可以提供多种功能,如负载均衡、消息队列、缓存、身份验证等。以下是常用的中间件及其作用: 1. 消息队列中…...

spring - 十二种事务失效场景

目录 ​编辑 一、方法内部调用 1、原理: 2、结论: 3、解决方法: 1. 增加一个service,把一个事务的方法移到新增加的service方法里面,然后进行注入再调用 2. 在自己类中注入自己 3. 通过AopContentent 二、访问权限不是pubilc 三、方法用final修饰 四、没有被spr…...

python脚本处理excel文件

1.对比perl和python 分别尝试用perl和python处理excel文件,发现perl的比较复杂,比如说read excel就有很多方式 Spreadsheet::Read use Spreadsheet::ParseExcel 不同的method,对应的取sheet的cell方式也不一样。更复杂的是处理含有中文内…...

C#基础学习(二)C#数组生存手册:从入门到“血压拉满“的奇妙旅程

作为一只C#萌新,当你试图用数组装下整个世界时,系统可能会温柔地弹出一句**"Index was outside the bounds of the array."**。别慌!这份求生指南将用段子教你玩转数组 一、数组是什么 数组简单来说就是由相同元素组成的一个集合&a…...

MySQL 性能优化方向

MySQL 性能优化是一个系统性的工作,涉及数据库设计、查询优化、索引优化、硬件配置等多个方面。以下是 MySQL 性能优化的主要方向和具体优化方案: 一、数据库设计优化 1. 合理设计表结构 规范化设计:避免数据冗余,确保数据一致性。适度反规范化:在查询频繁的场景下,适当…...

2025年- G26-Lc100-57.插入间隔(max、min)--java版

1.题目描述 题目翻译: 给定一个不重叠的区间阵列 intervals,其中intervals[i] [starti, endi]表示第i一个区间的起始位置和结束位置,并且intervals 按照起始位置starti升序排序。 另外,给定一个新的区间newInterval [start, e…...

Burp Suite HTTPS解密原理

HTTPS HTTPS是在HTTP的基础上增加了SSL/TLS协议,提供了数据的加密、完整性校验和身份认证等安全保障。HTTPS的工作过程可以分为两个阶段:握手阶段和数据传输阶段。 流程如下图所示: 通过上面的图可以看到,在TCP建立连接后会发起…...

【ESP32S3】esp32获取串口数据并通过http上传到前端

通过前面的学习(前面没发过,因为其实就是跑它的demo)了解到串口配置以及开启线程实现功能的工作流程,与此同时还有esp32作为STA节点,将数据通过http发送到服务器。 将这两者联合 其实是可以得到一个:esp32获…...

怎么查看linux是Ubuntu还是centos

要确定你的Linux系统是基于Ubuntu还是CentOS,可以通过几种不同的方法来进行判断。下面是一些常用的方法: 要快速判断 Linux 系统是 Ubuntu 还是 CentOS,可通过以下方法综合验证: 一、查看系统信息文件 1. /etc/os-release 文件…...

Qt进程间通信:QSharedMemory 使用详解

1. 什么是 QSharedMemory? QSharedMemory 是 Qt 中用于进程间共享内存的类。它允许多个进程共享一块内存区域,从而避免数据传输时的 IO 操作,提高通信速度。通过共享内存,多个进程可以直接读写这块内存,而无需经过文件…...

【day1】数据结构刷题 链表

一 反转链表 206. 反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]…...

使用redis设置店铺状态

知识点: 将前端传过来的status(0,1)通过redis对象以key,values值的形式存放在redis中。 #设置店铺状态 redisTemplate.opsForValue().set(KEY,status); #获取店铺状态 Integer status (Integer) redisTemplate.o…...

基于python+django的商城网站-电子商城管理系统源码+运行

基于 python 开发的电子商城网站,平台采用 B/S 结构,后端采用主流的 Python 语言进行开发,前端采用主流的 Vue.js 进行开发。该系统是给师弟做的课程作业。同学们可以拿去自用。学习问题可以留言哦。 整个平台包括前台和后台两个部分。 前台…...

深度解读 C 语言运算符:编程运算的核心工具

一、引言 在 C 语言的编程世界中,运算符是构建逻辑与运算的基石,它如同一位指挥家,精准地协调着程序中各种数据的操作与处理。C 语言丰富多样的运算符涵盖了算术、关系、逻辑、位运算、赋值以及其他杂项运算等多个领域,为开发者提…...

docker中间件部署

1.docker安装 # 1.卸载旧版本 yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine# 2.需要的安装包 yum install -y yum-utils# 3.设置镜像的仓库 # 3.1.默认是国外的&#x…...

【Python Cookbook】字符串和文本(二)

字符串和文本(二) 6.字符串忽略大小写的搜索替换7.最短匹配模式8.多行匹配模式9.将 Unicode 文本标准化10.在正则式中使用 Unicode 6.字符串忽略大小写的搜索替换 你需要以忽略大小写的方式搜索与替换文本字符串。 为了在文本操作时忽略大小写&#xf…...

docker pull时报错:https://registry-1.docker.io/v2/

原文:https://www.cnblogs.com/sdgtxuyong/p/18647915 https://www.cnblogs.com/OneSeting/p/18532166 docker 换源,解决连接不上的问题。 编辑以下文件,不存在则创建: vim /etc/docker/daemon.json {"registry-mirrors&qu…...

DeepSeek助力文案,智能音箱如何改变你的生活?

你好,我是三桥君 你有没有为写智能音箱的宣传文案而抓耳挠腮过?三桥君在这方面可是有些感想,今天就来给你唠唠怎么用DeepSeek写出超赞的智能音箱宣传文案。 首先,你得给DeepSeek喂足“料”。这就好比做饭,你得准备好各…...

【机器学习】什么是随机森林?

什么是随机森林? 随机森林(Random Forest)是一种集成学习方法,它通过组合多个决策树来提高预测的准确性和鲁棒性。可以把随机森林看作是“森林”,而森林中的每棵树就是一个决策树。每棵树独立地做出预测,最…...

Nature Machine Intelligence 嵌入式大语言模型使机器人能够在不可预测的环境中完成复杂的任务

近期英国爱丁堡大学发表Nature Machine Intelligence研究工作,提出了一种名为ELLMER(具身大型语言模型支持机器人)的创新框架,通过整合大型语言模型(如GPT-4)、检索增强生成(RAG)、视…...

[特殊字符] 2025蓝桥杯备赛Day13——P10984 [蓝桥杯 2023 国 Python A] 残缺的数字

🔍 2025蓝桥杯备赛Day13——P10984 [蓝桥杯 2023 国 Python A] 残缺的数字 🚀 题目速览 题目难度:⭐⭐⭐(需掌握位运算与组合数学) 考察重点:二进制状态处理、位运算、乘法原理、枚举 P10984 [蓝桥杯 2…...

【AcWing】算法基础课-数学知识

目录 1、质数 1.1 试除法判定质数 暴力解法 优化解法 1.2 分解质因数(试除法) 暴力解法 优化解法 1.3 筛质数 朴素筛法(nlogn) 埃氏筛法(nloglogn) 线性筛法(n) 2、约数 2.1 试除法求约数 2.2 约数个数 2.3 约数之和 2.4 最大公约数 实现方法一 实现方法二 …...

JVM常见概念之条件移动

问题 当我们有分支频率数据时,有什么有趣的技巧可以做吗?什么是条件移动? 基础知识 如果您需要在来自一个分支的两个结果之间进行选择,那么您可以在 ISA 级别做两件不同的事情。 首先,你可以创建一个分支&#xff…...

k8s存储介绍(二)Secret

Kubernetes(K8s)提供了一种安全的方式来存储和管理敏感信息,如密码、OAuth 令牌和 SSH 密钥,这就是 Secret。使用 Secret 可以避免将敏感数据硬编码到 Pod 规范或容器镜像中,从而提高安全性和可管理性。 1. Secret 的…...

Css布局-常规流笔记

https://developer.mozilla.org/zh-CN/docs/Learn/CSS/CSS_layout/Normal_Floworghttps://developer.mozilla.org/zh-CN/docs/Learn/CSS/CSS_layout/Normal_Flow 前言 常规流布局是html元素默认布局,凡是没有设置过css布局的html元素,默认布局方式称为常…...

Linux系统管理与编程08:任务驱动综合应用

兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 [环境] windows11、centos7.9.2207、zabbix6、MobaXterm、Internet环境 [要求] zabbix6.0安装环境:Lamp(linux httpd mysql8.0 php) [步骤] 3 …...

基于 OCO - 2 氧气 A 带辐射数据与地面台站气压观测数据构建近地面气压监测算法方案

基于 OCO - 2 氧气 A 带辐射数据与地面台站气压观测数据构建近地面气压监测算法方案 一、数据获取与准备 (一)OCO - 2 氧气 A 带辐射数据 数据下载:从 OCO - 2 官方数据发布平台(如 NASA 的相关数据存储库),按照研究所需的时间范围(例如,近 5 年的数据以获取足够的样本…...

Linux centos7 虚拟用户访问脚本

下面是脚本: #!/bin/bash #function:创建 vsftpd 虚拟用户脚本 #author: 20250324 IT小旋风# 判断是否是 root 用户 if [ "$USER" ! "root" ]; thenecho "不是 root 用户,无法进行安装操作"exit 1 fi# 关闭防火墙 system…...

HTTP 协议中请求与响应的详细解析

前言:HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在互联网上传输超文本的协议 --由一个请求和响应组成,一个完整的 HTTP 请求由请求行(Request Line)、请求头(Headers&…...

Collectors.toMap / list 转 map

前言 略 Collectors.toMap List<User> userList ...; Map<Long, User> userMap userList.stream().collect(Collectors.toMap(User::getUserId, Function.identity()));假如id存在重复值&#xff0c;则会报错Duplicate key xxx, 解决方案 两个重复id中&#…...

根据模板将 Excel 明细数据生成 PDF 文档 | PDF实现邮件合并功能

在日常办公中&#xff0c;我们常常会面临这样的需求&#xff1a;依据特定的模板&#xff0c;把 Excel 里的每一条数据转化为单独的 PDF 文档&#xff0c;且这些 PDF 文档中的部分内容会根据 Excel 数据动态变化。这一功能不仅能高效完成任务&#xff0c;还支持图片的动态替换&a…...

<KeepAlive>和<keep-alive>有什么区别

在不同的前端技术框架里&#xff0c;<KeepAlive> 和 <keep-alive> 有着不同的含义与使用场景&#xff0c;下面分别从 Vue 2 和 Vue 3 来为你详细介绍它们的区别。 Vue 2 中的 <keep-alive> 在 Vue 2 里&#xff0c;<keep-alive> 属于内置组件&#x…...

vscode正则表达式使用

小标题 ^\d.\d.\d\s.*$ ^表示匹配字符串的开头。\d\.\d\.\d表示匹配一到多个数字&#xff0c;接着一个小数点&#xff0c;再接着一到多个数字&#xff0c;然后又一个小数点和一到多个数字&#xff0c;用来匹配类似 “2.1.1” 这样的标题号部分。\s表示匹配一个空格。.*表示匹配…...

【LeetCode 题解】算法:4.寻找两个正序数组的中位数

1. 引言&#xff1a;挑战 LeetCode 经典算法题 在算法这片广袤无垠的天地里&#xff0c;一道道经典题目宛如夜空中熠熠生辉的星辰&#xff0c;持续吸引着开发者们投身其中&#xff0c;不断探索。今天&#xff0c;我们继续将目光聚焦于 LeetCode 平台上一道极具代表性的题目&am…...

2025.03.23【前沿工具】| CellPhoneDB:基因网络分析与可视化的利器

文章目录 1. CellPhoneDB工具简介2. CellPhoneDB的安装方法3. CellPhoneDB常用命令 1. CellPhoneDB工具简介 在单细胞生物学的迅猛发展中&#xff0c;理解细胞间的通讯机制对于揭示组织功能和疾病状态至关重要。CellPhoneDB工具&#xff0c;作为一个专门设计用来分析单细胞转录…...

Excel(进阶篇):powerquery详解、PowerQuery的各种用法,逆透视表格、双行表头如何制作透视表、不规则数据如何制作数据透视表

目录 PowerQuery工具基础修改现有数据理规则PowerQuery抓取数据的两种方式多文件合并透视不同表结构多表追加数据透视追加与合并整理横向表格:逆透视 数据用拆分工具整理数据算账龄 不等步长值组合合并文件夹中所有文件PowerQuery处理CSV文件双行表头、带合并单元格如何做数据…...

【WebGIS教程2】Web服务与地理空间服务解析

前言&#xff1a; 在万物互联的时代&#xff0c;Web服务作为跨平台协作的基石&#xff0c;正推动地理信息领域向开放共享迈进。地理空间Web服务通过标准化协议&#xff08;如WMS、WFS&#xff09;与松耦合架构&#xff0c;打破传统GIS的封闭性&#xff0c;实现数据与功能的无缝…...

[250325] Claude AI 现已支持网络搜索功能!| ReactOS 0.4.15 发布!

目录 Claude AI 现已支持网络搜索功能&#xff01;ReactOS 0.4.15 发布&#xff01; Claude AI 现已支持网络搜索功能&#xff01; 近日&#xff0c;Anthropic 公司宣布&#xff0c;其 AI 助手 Claude 现在可以进行网络搜索&#xff0c;为用户提供更及时、更相关的回复。这项新…...

gitee第三方登录获取openid | python+Django |已跑通

注&#xff1a;此项目根据美多改编&#xff0c;qq第三方需要备案gitee不用 一、获取appid和appsecret 点击右侧账号设置 左侧菜单栏数据管理里有第三方应用 点击创建应用&#xff0c;根据你的具体情况设置 二、以下是事例代码&#xff0c;根据需要修改即可 setting.py #QQ登…...

Enovia许可分析的自动化解决方案

随着企业产品生命周期管理&#xff08;PLM&#xff09;需求的不断演变&#xff0c;Enovia许可分析已成为确保资源优化和合规性的关键环节。然而&#xff0c;传统的手动许可分析方法往往效率低下、易出错&#xff0c;并且难以应对大规模数据。为了解决这一挑战&#xff0c;Enovi…...