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

统一 Elastic 向量数据库与 LLM 功能,实现智能查询

作者:来自 Elastic Sunile Manjee

利用 LLM 功能进行查询解析,并使用 Elasticsearch 搜索模板,将复杂的用户请求转换为结构化的、基于模式的搜索,从而实现高精度查询结果。

想象一下,你在搜索“距离 Belongil Beach 250 米内、最近翻新、至少 4 星级、配有游泳池和健身房的住宿”,而搜索引擎精准地返回了符合你需求的结果。智能搜索能够理解查询意图并进行推理,仅靠启发式方法难以实现这种能力。这正是大型语言模型(LLM)功能与 Elasticsearch 搜索模板结合,打造真正智能搜索体验的关键所在。

亲自体验

如果你对此存疑,不必担心。完整的端到端示例已在 Python notebook 中提供,包含数据、索引映射、推理端点、搜索模板和 LLM 功能。你需要一个 Elastic Cloud 实例、Azure OpenAI 实例和 Google Maps API 密钥。

问题:处理复杂约束

传统的搜索方法,如基于关键词或向量的检索,在面对包含多重细节的复杂查询时往往难以提供理想结果。例如,在酒店搜索场景中,用户可能希望:

  • 位置:距离 Belongil Beach 250 米以内
  • 评分:至少 4 星级
  • 设施:包括游泳池和健身房
  • 状态:最近翻新

使用简单的关键词匹配或相似度评分可能会导致搜索结果不完整或不相关,影响用户体验和信任度。

LLMs + Elasticsearch:基于模式的搜索

Elasticsearch 采用索引模式架构,在索引数据时定义了诸如 “rating - 评分”“ geopoint - 地理位置 ” “amenities - 设施” 等字段,使得搜索结果的筛选和排名更加精准。然而,这也要求查询语句具备相应的结构化格式。

这正是 LLM(如 GPT 系列或生成式模型)发挥作用的关键。LLM 可以解析用户的自然语言查询,提取关键信息(例如 “distance = 250m” “rating >= 4” “amenities = pool, gym”, “靠近 Belongil Beach” 等),并在检测到地理信息时调用地理编码服务。然后,LLM 生成一个 JSON 负载,将其插入 Elasticsearch 搜索模板 —— 这是一个参数化查询,将查询逻辑与动态值分离。

这种方法结合了 LLMs 的语义理解能力和 Elasticsearch 的基于模式的筛选与分面搜索能力,实现真正智能的搜索体验。

示例实际应用

假设用户的查询是:

“recently renovated accommodations 250m from Belongil Beach with at least 4 stars and with a pool and gym.”

  1. LLM 处理: LLM 分析文本,识别出需要一个基于距离的筛选(250 米)、最低评分(rating - 4 星)、相关设施(ameniteis - 游泳池、健身房),以及 “recently renovated - 最近翻新” 的上下文提示。它还调用地理编码服务获取 “Belongil Beach” 的精确纬度和经度坐标。
  2. 搜索模板: 你可以创建一个 Elasticsearch 搜索模板,该模板接受 rating、distance、latitude、longitude 以及可能的自由文本查询作为参数。一旦 LLM 提供这些参数,你的应用程序就可以填充占位符并调用 Elasticsearch。在这里,不仅可以利用过滤,还可以结合向量搜索、ELSER 和词法搜索进行混合查询。
  3. 搜索结果: 返回的响应精确匹配了符合以下条件的住宿:距离 Belongil Beach 250 米内、至少 4 星级、标记为最近翻新,并且配有游泳池和健身房。例如:
    • Hotel name: Belongil Beach Apartment
    • Rating: 4 星
    • City: Byron Bay,新南威尔士州
    • Country: 澳大利亚

相比单纯依赖向量空间或混合搜索,你可以输入精确的过滤条件,从而提高召回的全面性和精确度。

为什么这种方法有效

  • 精准度和召回率: 通过按照索引模式结构化查询,可以消除歧义,确保不会错过有效结果(高召回率),同时排除无关结果(高精准度)。相比之下,仅依赖向量空间可能缺乏自然的筛选功能。

  • 可扩展性: Elasticsearch 设计用于处理海量数据。一旦提取出查询参数,即使在超大索引上,查询依然保持极高的执行速度。

  • 灵活性: 如果出现新的属性(例如 “EV charging station”),LLM 仍能识别该属性作为酒店设施,并将其注入 Elasticsearch 搜索模板。

  • 复杂查询的适应性: 无论用户查询多么复杂,LLM 的语义解析都能确保捕捉所有相关细节,包括距离限制、星级评分、基于位置的条件等。

为什么使用搜索模板

Elasticsearch 搜索模板支持创建参数化查询,将查询逻辑与动态值分离。这在根据用户输入或其他可变数据构建动态查询时尤为重要。

例如,假设酒店索引包含以下字段:

  • Description
  • Attractions
  • Rating
  • Facilities
  • Location
    • Latitude
    • Longitude

用户可能在搜索查询中包含这些属性的任意组合。随着字段数量的增加,手动为每种可能的输入组合构建查询变得不可行。搜索模板通过根据用户输入动态生成适当的查询,解决了这一问题。例如:

  • 如果用户指定了 rating 和 attractions,则会生成相应的查询。
  • 如果用户提供了 location 和 rating,则搜索模板会生成匹配这些输入的查询。

搜索模板采用 JSON 格式定义,并包含用于动态值的占位符。在执行搜索模板时,Elasticsearch 会用实际值替换占位符并执行查询。

搜索模板可用于执行多种任务,例如:

  • 根据用户输入筛选结果
  • 提升特定结果的相关性
  • 添加自定义评分函数
  • 进行结果聚合

下面是一个示例搜索模板,它会根据输入参数动态创建查询。

{"script": {"lang": "mustache","source": """{"_source": false,"fields": ["HotelName","HotelRating","countryName","cityName","countryCode","Attractions"],"retriever": {"standard": {"query": {"semantic": {"field": "semantic_description_elser","query": "{{query}}"}},"filter": {"bool": {"must": [{{#distance}}{"geo_distance": {"distance": "{{distance}}","location": {"lat": {{latitude}},"lon": {{longitude}}}}}{{/distance}}{{#rating}}{{#distance}},{{/distance}}{"range": {"HotelRating": {"gte": {{rating}}}}}{{/rating}}{{#countryName}}{{#distance}}{{^rating}},{{/rating}}{{/distance}}{{#rating}},{{/rating}}{"term": {"countryName": "{{countryName}}"}}{{/countryName}}{{#city}}{{#distance}}{{^rating}},{{/rating}}{{/distance}}{{#rating}},{{/rating}}{"match": {"cityName": "{{city}}"}}{{/city}}{{#countryCode}}{{#distance}}{{^rating}},{{/rating}}{{/distance}}{{#rating}},{{/rating}}{"term": {"countryCode": "{{countryCode}}"}}{{/countryCode}}{{#distance}}{{^rating}}{{/rating}}{{/distance}}{{#rating}}{{/rating}}],"should": [{{#attraction}}{"wildcard": {"Attractions": {"value": "*{{attraction}}*","case_insensitive": true}}}{{/attraction}}]}}}}}"""}
}

如果你想对 search template 有更深入的了解,请参考文章 “Elasticsearch:search template”。

LLM 功能

大型语言模型(LLM)具备强大的推理能力,可用于解析数据、调用 API 或请求额外信息,以确定最佳的下一步操作。当 LLM 与搜索模板结合时,它能够判断用户查询是否包含搜索模板支持的属性。如果识别出受支持的属性,LLM 将执行相应的用户定义方法调用。

在 Notebook 中,包含了一些 LLM 功能。每个功能都在工具列表(tools list)中进行了定义。

  tools = [{"type": "function","function": { ...

让我们简要回顾每个功能。extract_hotel_search_parameters LLM 函数的作用是从用户查询中提取搜索模板支持的参数。

"type": "function","function": {"name": "extract_hotel_search_parameters","description": "Extract search parameters for finding hotels (excluding the query itself).  the parameters are extracted from the input query",

geocode_location LLM 函数将在识别出位置属性(例如 “500 meters from Belongil Beach”)时被调用。

{"type": "function","function": {"name": "geocode_location","description": "Resolve a location to its latitude and longitude.","parameters": {"type": "object","properties": {"location": {"type": "string","description": "The name of the location, e.g., Belongil Beach."}},"required": ["location"]}}
}

LLM 函数 query_elasticsearch 将使用 geocode_location(如果在用户查询中找到)和 extract_hotel_search_parameters 提取的参数进行调用。

"type": "function","function": {"name": "extract_hotel_search_parameters","description": "Extract search parameters for finding hotels (excluding the query itself).  the parameters are extracted from the input query",

Completions API 将每个 LLM 函数注册为一个工具。本文前面已详细介绍了这些工具列表。

   while True:# Call the LLM with toolsresponse = client.chat.completions.create(model=deployment_name,messages=messages,tools=tools,tool_choice="auto",)

Azure OpenAI

该 Notebook 使用 Azure OpenAI completions 模型运行。要运行它,你需要 Azure OpenAI 密钥(Key 1 或 Key 2)、端点(Endpoint)、部署名称(Deployment Name)和版本号(Version number)。所有这些信息都可以在 Azure OpenAI → Keys and Endpoint 下找到。

部署一个 completions 模型,该部署名称将在 Notebook 中使用。

在 Chat Playground 中,点击 View code 以查找 API 版本。

Google Maps API

该 Notebook 使用 Google Maps API 对用户查询中识别的位置进行地理编码。此功能需要一个 Google 账户和 API 密钥,可在此处生成。

将 LLM 功能与搜索模板付诸实践

LLM 通过推理确定所需的功能及其执行顺序,基于给定查询进行处理。例如,当执行查询 recently renovated accommodations 250m from Belongil Beach with at least 4 stars and with a pool and gym 时,LLM 的推理层被激活:

提取参数

初始 LLM 函数调用旨在从查询中提取参数。

Role: assistant
Tool Calls:Tool Call ID: call_VHhjy0TMxPnefibSssrTa5r0Function Name: extract_hotel_search_parametersArguments: {"query":"recently renovated accommodations 250m from Belongil Beach with at least 4 stars and with a pool and gym","distance":"250m","rating":4,"location":"Belongil Beach","attraction":"recently renovated, pool, gym"}

地理编码

LLM 随后判断查询包含 “from” 位置,并确定应调用地理编码函数。

--------------------------------------------------
Updated parameters after geocode_location:
{'query': 'recently renovated accommodations 250m from Belongil Beach with at least 4 stars and with a pool and gym', 'distance': '250m', 'rating': 4, 'location': 'Belongil Beach', 'attraction': 'recently renovated, pool, gym', 'latitude': -28.6337328, 'longitude': 153.6003455}Formatted Messages:
Message 1:
Role: assistant
Tool Calls:Tool Call ID: call_jr4jJ04lW0y0E2AKnVmNumyhFunction Name: query_elasticsearchArguments: {"query":"recently renovated accommodations 250m from Belongil Beach with at least 4 stars and with a pool and gym","latitude":-28.6337328,"longitude":153.6003455,"distance":"250m","rating":4,"attraction":"recently renovated, pool, gym"}--------------------------------------------------

智能查询

LLM 的推理层利用先前函数调用提取的参数,结合搜索模板执行 Elasticsearch 查询。

--------------------------------------------------
Function Arguments for query_elasticsearch:
{'query': 'recently renovated accommodations 250m from Belongil Beach with at least 4 stars and with a pool and gym', 'latitude': -28.6337328, 'longitude': 153.6003455, 'distance': '250m', 'rating': 4, 'attraction': 'recently renovated, pool, gym'}
Parameters for Elasticsearch:
{'query': 'recently renovated accommodations 250m from Belongil Beach with at least 4 stars and with a pool and gym', 'latitude': -28.6337328, 'longitude': 153.6003455, 'distance': '250m', 'rating': 4, 'attraction': 'recently renovated, pool, gym'}
Elasticsearch Query:
{"id": "hotel_search_template","params": {"query": "recently renovated accommodations 250m from Belongil Beach with at least 4 stars and with a pool and gym","latitude": -28.6337328,"longitude": 153.6003455,"distance": "250m","rating": 4,"attraction": "recently renovated, pool, gym"}
}
Elasticsearch query successful.

精准结果

通过 LLM 功能与搜索模板执行智能查询,成功找到完美匹配的结果。

Number of results found: 1Formatted Messages:
Message 1:
Role: assistant
Content: I found one recently renovated accommodation within 250 meters of Belongil Beach that has at least 4 stars and offers both a pool and gym:- **Hotel Name:** Belongil Beach Apartment
- **Rating:** 4 stars
- **Location:** Byron Bay, New South Wales, AustraliaIf you need more information or assistance with booking, please let me know!

结论

将大型语言模型(LLM)功能与 Elasticsearch 搜索模板相结合,实现了对查询意图的理解和推理能力。与其将查询视为一段无结构的文本,我们通过系统性拆解,将其匹配到已知的模式,并让 Elasticsearch 负责搜索、筛选和评分的核心工作。最终,用户获得了一种高度精准且友好的搜索体验 —— 他们只需输入需求,系统便能准确理解其意图。

立即体验向量搜索!你可以通过 Search AI 的自学实践课程进行操作,也可以选择启动免费的云试用,或在本地机器上尝试 Elastic。

原文:Unifying Elastic vector database and LLM functions for intelligent query - Elasticsearch Labs

相关文章:

统一 Elastic 向量数据库与 LLM 功能,实现智能查询

作者:来自 Elastic Sunile Manjee 利用 LLM 功能进行查询解析,并使用 Elasticsearch 搜索模板,将复杂的用户请求转换为结构化的、基于模式的搜索,从而实现高精度查询结果。 想象一下,你在搜索“距离 Belongil Beach 25…...

(Lauterbach调试器学习笔记)一、首次连接TriCore开发板调试

Lauterbach调试器学习笔记 文章目录 Lauterbach调试器学习笔记前言一、Lauterbach调试器介绍二、调试步骤三、常用代码四、不常用代码,但是很有意思总结 前言 第一篇简单记录一下Lauterbach调试器的使用过程,主要是想写第二篇python api。 一、Lauterba…...

HTML星球大冒险之路线图

第一章:欢迎来到 HTML 星球! 1.1 宇宙的基石:HTML 是什么? 🌍 比喻:HTML 是网页世界的「乐高积木」,用标签搭建一切可见内容🎯 目标:理解 HTML 的作用,掌握…...

网络安全与七层架构

网络安全与七层架构 随着互联网技术的迅猛发展,网络安全问题日益凸显。网络安全不仅影响到个人用户的信息安全,更是企业及国家安全的重要组成部分。而七层架构(OSI模型)为网络通信提供了理论支撑,能够有效地帮助我们理…...

2025-03-13 学习记录--C/C++-PTA 练习2-17 生成3的乘方表

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 练习2-17 生成3的乘方表 输入一个非负整数n,生成一张3的乘方表,输出3^0~$$3^n$$的值…...

改进YOLOv8系列,AAAI 2025,多尺度特征提取自注意力模块,全局信息聚合,即插即用!分享

**论文:https://arxiv.org/pdf/2404.07846 **代码地址: https://github.com/nagejacob/TBSN/blob/main/network/tbsn.py 改进YOLOv8系列:多尺度特征提取自注意力模块,全局信息聚合,即插即用!分享 🚀论文研究概括🚀加入到网络中的理论研究🚀需要修改的代码1 🍀🍀…...

我又又又又又又更新了~~纯手工编写C++画图,有注释~~~

再再再次感谢Ttcofee提的问题 本次更新内容: 鼠标图案(切换),版本号获取,输入框复制剪切板 提前申明:如果运行不了,请到主页查看RedpandaDevc下载,若还是不行就卸了重装。 版本号&…...

Vue源码深度解析:从2.x到3.x的架构演进与核心原理剖析

Vue源码深度解析:从2.x到3.x的架构演进与核心原理剖析 一、框架演变:从Vue2到Vue3的跨越 1.1 革命性升级 Vue3的发布标志着前端框架进入新纪元,其核心改进体现在三个方面: 性能飞跃:包体积减少41%,初始…...

评委打分5个评委 去掉一个最高分和一个最低分 取平均分

一键替换max用min 按shiftF6 public static int getMin(int[]scores){int min scores[0];for (int i 0; i < scores.length; i) {if(scores[i]> min){min scores[i];}}return min;} 这里有和c/c不一样的知识点 c/c调用函数类似于java的方法,但是c/c的函数调用需要声明…...

javabean类(测试类之外的类)

altinsert快捷键生成构造方法和get、set方法 或者插件ptg&#xff08;连接外网搜索插件并且下载&#xff09;...

C++ 邻接矩阵(代码)

C邻接矩阵代码&#xff0c;见下&#xff1a; #include<iostream>using namespace std;#define inf -1 class Graph{ private:int vertices;int **edges;public:Graph(int vertices);~Graph();void addEdge(int u, int v, int w);void printGraph(); };Graph::Graph(int …...

Cookie与Session详解

Cookie简介 Cookie 是浏览器提供的持久化存储数据的一种机制。是指某些网站为了辨别用户身份、进行会话跟踪而储存在用户本地终端上的数据&#xff08;通常经过加密&#xff09;。以下是关于 Cookie 的详细介绍&#xff1a; Cookie工作原理 当你访问一个网站时&#xff0c;该网…...

OpenBMC:BmcWeb 处理http请求

OpenBMC:BmcWeb 读取http请求头-CSDN博客 介绍了,在读取完http头后,将调用Connection::handle处理http请求 1.Connection::handle void handle() {...req = std::make_shared<crow::Request>(parser->release(), reqEc);...req->session = userSession;accept …...

【算法题解答·六】栈队列堆

【算法题解答六】栈队列堆 接上文【算法方法总结六】栈队列堆的一些技巧和注意事项 栈队列堆相关题目如下&#xff1a; 232.用栈实现队列 简单 准备两个栈&#xff0c;一个负责入队的栈A&#xff0c;一个负责出队的栈B出队和返回队列开头元素&#xff0c;都要先进行以下操作…...

计算机视觉算法实战——手势识别(主页有源码)

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​ ​​​ 1. 领域简介&#xff1a;手势识别的价值与挑战 手势识别是连接人类自然行为与数字世界的核心交互技术&#xff0c;在智能设备控制、…...

JobScheduler省电机制

1.前言 JobScheduler&#xff08;任务调度器&#xff09;是 Android 提供的一种任务调度机制&#xff0c;可以替代传统的 WakeLock 和 Alarm 来执行后台任务。那么&#xff0c;它们之间的区别是什么&#xff1f;JobScheduler 又有哪些特别之处呢&#xff1f; 1.1 WakeLock 和 …...

设计模式学习笔记——命令模式

2025年3月13日&#xff0c;周四下午 相同的保存逻辑在各个组件中重复出现。 且需要修改保存逻辑时&#xff0c;各个组件的保存逻辑都需要进行相应修改。 使用了命令模式把保存逻辑从三个组件中独立出来后&#xff0c;减少了代码冗余。 可以通过“保存命令”来使用保存逻辑&am…...

[TPCTF 2025] crypto 复现两题

周末很忙。比赛都没怎么看。晚上把密码复现两个。 randomized random 这题在小鸡块博客里见过&#xff0c;稍有区别。 # FROM python:3 import random with open("flag.txt","rb") as f:flagf.read() for i in range(2**64):print(random.getrandbits(3…...

电子元器件选型与实战应用—16 怎么选一个合适的MCU芯片?

文章目录 1. 选型要素1.1 价格1.2 技术支持1.3 厂家优势1.4 功耗1.5 特殊功能1.6 统计外设1.7 确定外设占用的内存和flash大小1.8 确定外设通信接口1.9 确定外设通信接口的电平1.10 确定外设的GPIO数量1.11 确定外设的供电和功耗1.12 确定外设GPIO的种类1.13 确定ADC的数量1.14…...

第6关:牛牛鱼缸-附加题

任务描述 本关任务&#xff1a;问题描述&#xff1a;牛牛有一个鱼缸&#xff0c;鱼缸里面已经有n条鱼&#xff0c;每条鱼的大小为fishSizei&#xff0c;牛牛现在想把新捕捉的鱼放入鱼缸。鱼缸里存在着大鱼吃小鱼的定律。经过观察&#xff0c;牛牛发现一条鱼A的大小为另外一条鱼…...

go中间件学习

本博文源于笔者正在学习go中间件&#xff0c;罗列了较为常用的中间件&#xff0c;例如日志记录、认证授权、跨域资源共享、请求体解析、静态文件处理、错误处理、性能分析、速率限制、session 1、日志记录中间件 可以追加打印用&#xff0c;例如&#xff0c;将请求进行打印 …...

若依RuoYi-Cloud-Plus微服务版(完整版)前后端部署

一.目标 在浏览器上成功登录进入 二.源码下载 后端源码&#xff1a;前往Gitee下载页面(https://gitee.com/dromara/RuoYi-Cloud-Plus)下载解压到工作目录。 前端源码&#xff1a; 前往Gitee下载页面(https://gitee.com/JavaLionLi/plus-ui)下载解压到工作目录。 文档地址&a…...

航空电动力系统适航标准要点手册

航空电动力系统适航标准要点手册 1.标准制定背景与必要性1.1 为什么需要制定和遵循标准&#xff1f;1.2 标准制定依据与发布机构 2.关键核心标准概述2.1 电动航空与电推进系统2.2 混合动力系统2.3 硬件与通用要求 3.标准详细解读与应用场景3.1 DO-160G&#xff1a;环境适应性测…...

深入理解JavaScript构造函数与原型链:从原理到最佳实践

一、开篇&#xff1a;为什么需要理解原型链&#xff1f; 在JavaScript开发中&#xff0c;90%以上的"诡异"bug都与原型链机制相关。理解构造函数与原型链的运行原理&#xff0c;不仅能帮助我们写出更优雅的代码&#xff0c;还能在框架源码阅读、性能优化等场景中游刃…...

java每日精进 3.12 【WebSocket进阶】

基于 SpringWebSocket 进行二次封装&#xff0c;实现了更加简单的使用方式。例如说&#xff0c;WebSocket 的认证、Session 的管理、WebSocket 集群的消息广播等等。 1. 用户认证与登录用户信息传递 1.1 Token 过滤器 (TokenAuthenticationFilter) ① 在 WebSocket 连接建立…...

国家网络安全事件应急预案

目 录 1 总则 1.1 编制目的 1.2 编制依据 1.3 适用范围 1.4 事件分级 1.5 工作原则 2 组织机构与职责 2.1 领导机构与职责 2.2 办事机构与职责 2.3 各部门职责 2.4 各省&#xff08;区、市&#xff09;职责 3 监测与预警 3.1 预警分级 3.2 预警监测 3.3 预警研判…...

Markdown:Mermaid 画图

目录 安装基本语法流程图时序图甘特图总结 Mermaid 是一款用于生成流程图、时序图、甘特图等图表的 JavaScript 库。它可以将简单的文本描述转化为美观的图表&#xff0c;方便开发者进行可视化展示。 安装 Mermaid 可以直接在浏览器中使用&#xff0c;也可以在 Node.js 环境中…...

【视频】ffmpeg、Nginx搭建RTMP、HLS服务器

1、源码安装Nginx 1)源码下载 因为要使用Nginx的模块nginx-rtmp-module,所以要下载 nginx 和 nginx-rtmp-module 的源码。 下载地址: http://nginx.org/en/download.html https://github.com/arut/nginx-rtmp-module/tags2)解压、配置 在同一个目录中解压 nginx 和 nginx…...

时间有限,如何精确设计测试用例?5种关键方法

精确设计测试用例能够迅速识别并修复主要缺陷&#xff0c;确保产品质量&#xff0c;降低后期维护成本&#xff0c;并通过专注于核心功能来提升用户体验&#xff0c;为项目的成功奠定坚实基础。若未能精确设计测试用例&#xff0c;可能会导致关键功能测试不充分&#xff0c;使得…...

【算法】图论

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 持续更新中...1、DFS2、BFSN 叉树的层序遍历二叉树的锯齿形层序遍历二叉树最大宽度 3、多源BFS腐烂的苹果 4、拓扑排序 持续更新中…...

ADQ32 5G采集卡

ADQ32是一款高端12位双通道数据采集板&#xff0c;针对高通量科学应用进行了优化。ADQ32具有以下特性: 一个和两个模拟输入通道包括每通道5和2.5 GSPS7GB/s的持续数据传输速率至GPU7GB/秒的持续数据传输速率两个外部触发器通用输入/输出&#xff08;GPIO&#xff09;开放式FPG…...

机器人领域专业名词汇总

1. 电机与驱动 电机类型 DC Motor&#xff08;直流电机&#xff09;&#xff1a;通过直流电源驱动的电机。Stepper Motor&#xff08;步进电机&#xff09;&#xff1a;通过脉冲信号控制旋转角度的电机。Servo Motor&#xff08;伺服电机&#xff09;&#xff1a;带有反馈控制的…...

拆解 “ES 已死“ 伪命题:Agentic RAG 时代搜索引擎的终极形态

作者&#xff1a;来自 Elastic 李捷 xxx&#xff1a;“ES已死&#xff0c;#%#……” 我&#xff1a;&#xff1f;&#xff1f;&#xff1f; 最近&#xff0c;某厂商发了一堆公关文章&#xff0c;翻来覆去地炒作 “ES 已死”&#xff0c;“放弃 ES”。这哪是什么正经的技术文章&…...

eNSP中路由器的CON/AUX接口、GE Combo接口、Mini USB接口、USB接口、WAN侧uplink接口、FE接口、GE接口介绍

路由器常见接口的详细介绍及其应用示例&#xff1a; 1. CON/AUX 接口 全称&#xff1a;Console/Auxiliary&#xff08;控制台/辅助接口&#xff09;作用&#xff1a; CON&#xff08;Console&#xff09;&#xff1a;通过命令行界面&#xff08;CLI&#xff09;直接配置路由器…...

平面的四种方程及一些应用

平面的四种方程及一些应用 点法式方程一般式方程三点式方程截距式方程一些应用已知平面方程&#xff0c;找出平面上不共线的三个点 点法式方程 平面经过点 ( x 0 , y 0 , z 0 ) (x_0,y_0,z_0) (x0​,y0​,z0​)且法向量为 ( a , b , c ) (a,b,c) (a,b,c)&#xff0c;则平面的点…...

记录一个SQL自动执行的html页面

在实际工作场景中&#xff0c;需要运用到大量SQL语句更新业务逻辑&#xff0c;对程序员本身&#xff0c;写好的sql语句执行没有多大问题&#xff08;图1&#xff09;&#xff0c;但是对于普通用户来说还是有操作难度的。因此我们需要构建一个HTML页面&#xff08;图2&#xff0…...

SpringBoot——Maven篇

Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的工具。它具有许多特性&#xff0c;其中一些重要的特性包括&#xff1a; 1. 自动配置&#xff1a;Spring Boot 提供了自动配置的机制&#xff0c;可以根据应用程序的依赖和环境自动配置应用程序的各种组件&#xff…...

数据批处理(队列方式)

数据批处理&#xff08;队列方式&#xff09; public class DataProcessor {private static final int THREAD_COUNT 4;private static final int QUEUE_SIZE 10;private LinkedBlockingQueue<Data> queue new LinkedBlockingQueue<>(QUEUE_SIZE);public DataP…...

从零开始搭建搜索推荐系统(五十四)多路召回之万剑归宗

聊的不止技术。跟着小帅写代码&#xff0c;还原和技术大牛一对一真实对话&#xff0c;剖析真实项目筑成的一砖一瓦&#xff0c;了解最新最及时的资讯信息&#xff0c;还可以学到日常撩妹小技巧哦&#xff0c;让我们开始探索主人公小帅的职场生涯吧&#xff01; &#xff08;PS…...

c++介绍函数指针 十

指针代表内存中地址标识符&#xff0c;变量&#xff0c;数组都是存储内存中的数据。所以可以获得它们的地址&#xff0c;用指针来表示这块内存。 如图输出内存中的地址。 对于一个函数来说&#xff0c;也是内存中存储这段数据&#xff0c;所以我们也可以获取函数的地址。 函数…...

redis数据库

一、redis数据库介绍 NoSQL Not Only SQL 非关系型数据库 1、关系型数据库与非关系型数据库的区别 非关系型数据库性能高、速度快、支持高并发连接 1、非关系型数据库基于内存存储数据 2、摒弃了关系型数据的约束限制 3、采用o1算法进行设计开发 2、作用 关系型数…...

关于 NoC 中数据安全传输的设计与实现的详细介绍

片上网络&#xff08;Network-on-Chip&#xff0c;NoC&#xff09;作为一种新兴的片上通信架构&#xff0c;解决了传统总线架构在大规模集成电路设计中面临的诸多问题。然而&#xff0c;随着芯片系统的复杂性和应用场景的多样化&#xff0c;NoC 中数据安全传输变得至关重要。以…...

OpenGL(4)着色器

文章目录 一、着色器1、什么是着色器&#xff1f;2、着色器类型2.1、顶点着色器&#xff08;Vertex Shader&#xff09;2.2、片段着色器&#xff08;Fragment Shader&#xff09; 3、着色器属性3.1、layout 属性3.2、in 属性3.3、out 属性3.4、总结 4、示例 前言&#xff1a; 在…...

PHP批量去除Bom头的方法

检查的代码&#xff1a; <?php$dir __DIR__; $files new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir));foreach ($files as $file) {if ($file->isFile() && pathinfo($file, PATHINFO_EXTENSION) php) {$content file_get_contents(…...

51单片机的keil c51软件安装教程

Keil&#xff08;C51&#xff09;介绍、下载、安装与注册_keil c51-CSDN博客 参考 安装 不一定是这个大小&#xff0c;也可以下载别的版本KEID C51 注册 加入芯片型号 …...

JavaScript基本知识

文章目录 一、JavaScript基础1.变量&#xff08;重点&#xff09;1-1 定义变量及赋值1-2 变量的命名规则和命名规范判断数据类型&#xff1a; 2.数据类型转换2-1 其他数据类型转成数值2-2 其他数据类型转成字符串2-3 其他数据类型转成布尔 3.函数3-1函数定义阶段3-2函数调用阶段…...

导数,积分及常用公式

导数定义&#xff1a; ​ 求导是数学计算中的一个计算方法&#xff0c;它的定义就是&#xff0c;当自变量的增量趋于零时&#xff0c;因变量的增量与自变量的增量之商的极限。在一个函数存在导数时&#xff0c;称这个函数可导或者可微分。可导的函数一定连续。不连续的函数一定…...

鸿蒙应用开发—ZDbUtil高效使用数据库

文章目录 介绍下载安装基本使用注解TableIdColumnOneToOne 使用方法定义实体类初始化数据库并根据被Table注解的类创建表创建表查数据插入数据删除数据清空数据 参考 介绍 ZDbUtil是一款基于SQLite的鸿蒙数据库框架&#xff0c;通过注解标注实体类与属性&#xff0c;让数据更能…...

强化学习(赵世钰版)-学习笔记(7.时序差分学习)

本章是课程算法与方法中的第四章&#xff0c;介绍的时序差分学习算法是基于随机近似方法设计的强化学习方法&#xff0c;也是model-free的方法。 时序差分算法是一种近似估计策略状态值的算法&#xff0c;具体的形式如下&#xff1a; 本质上是在当前t时刻&#xff0c;被访问到的…...

正则表达式入门及常用的正则表达式

正则表达式&#xff08;Regular Expression&#xff0c;简称 Regex&#xff09;是一种强大的文本处理工具&#xff0c;用于匹配、查找和替换字符串中的特定模式。以下是入门指南和常用正则表达式示例&#xff1a; 一、正则表达式入门 1. 基本语法 符号说明示例.匹配任意单个字…...