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

重新认识Elasticsearch-一体化矢量搜索引擎

前言

2023 哪个网络词最热?我投“生成式人工智能”一票。过去一年大家都在拥抱大模型,所有的行业都在做自己的大模型。就像冬日里不来件美拉德色系的服饰就会跟不上时代一样。这不前段时间接入JES,用上好久为碰的RestHighLevelClient包。心血来潮再次访问Elasticsearch官网,发现风格又变了!很惊艳,不信你看

很久没有上Elasticsearch官网。以前的Elasticsearch是以全文搜索引擎为主打的。去年还在想RediSearch会不会撼动Elasticsearch的地位。现在来看它找到内卷焦虑的方子-换个战场去卷别人!所以我就很好奇看看他是如何卷的?决定一探究竟。那么今天就来看下生成式AI和Elasticsearch Relevance Engine(ESRE)最后学习下Elasticsearch作为向量数据如何使用。

一、什么是生成式AI

生成式 AI 是人工智能的一个分支,其核心是能够生成原创内容的计算机模型**。**通过利用大型语言模型、神经网络和机器学习的强大功能,生成式 AI 能够模仿人类创造力生成新颖的内容。这些模型使用大型数据集和深度学习算法进行训练,从而学习数据中存在的底层结构、关系和模式。根据用户的输入提示,生成新颖独特的输出结果,包括图像、视频、代码、音乐、设计、翻译、问题回答和文本。

流行的生成式AI有哪些

1.ChatGPT ChatGPT 是由 OpenAI 开发的一个大型语言模型,自 2022 年 11 月公开发布以来取得了巨大成功。它使用对话式聊天界面与用户互动,并对输出结果进行微调。它旨在理解文本提示,并生成类似于人的回复,而且它已展示出了参与对话交流、回答相关问题,甚至展现幽默感的能力。

据说,最初向用户免费提供的 ChatGPT-3 版本是根据互联网上超过 45 TB 的文本数据进行训练的。不久之后,Microsoft 将 GPT 的一个版本集成到了 Bing 搜索引擎中。OpenAI 的升级版、基于订阅的 ChatGPT-4 是于 2023 年 3 月推出的。

ChatGPT 采用最先进的转换器架构。GPT 是“Generative Pre-trained Transformer”(生成式预训练转换器)的缩写,转换器架构为自然语言处理 (NLP) 领域带来了革命性的变化。

2.DALL-E 同样来自 OpenAI 的 DALL-E 2 专注于生成图像。DALL-E 结合了 GAN 架构与变分自动编码器,可基于文本提示生成高度细腻和富有想象力的视觉结果。借助 DALL-E,用户可以描述自己心目中的图像和风格,模型就会生成它。与 MidJourney 和新晋加入的 Adobe Firefly 等竞争对手一样,DALL-E 和生成式 AI 正在彻底改变图像的创建和编辑方式。随着整个行业不断涌现的新兴能力,视频、动画和特效也将发生类似的转变。

3.Google Bard 最初是基于 Google LaMDA 系列大型语言模型的一个版本构建而成,后来升级到更先进的 PaLM 2,是 Google ChatGPT 的替代品。Bard 的功能与 ChatGPT 类似,可以编码、解决数学问题、回答问题、写作,以及提供 Google 搜索结果。

在电商行业的应用

电子商务和零售业领域中的 AI:生成式 AI 可以利用购物者的购买模式推荐新产品,并创建更顺畅的购物流程,从而帮助电子商务企业为购物者提供更具个性化的购买体验。对于零售商和电子商务企业来说,无论从更直观的浏览到使用聊天机器人支持的 AI 客户服务功能,以及 AI 常见问题解答板块,AI 都可以打造更好的用户体验。

金融服务领域中的 AI:生成式 AI 可用于市场趋势预测、市场模式研究、投资组合优化、欺诈保护、算法交易和个性化客户服务。模型还可以根据历史趋势生成合成数据,从而帮助进行风险分析和决策。

生成式 AI 模型的局限性

1.**领域知识/准确性:**模型可能没有足够的与特定域相关的内部知识_。_这要源于训练模型的数据集。为了定制 LLM 生成的数据和内容,企业需要一种方法来向模型馈送专有数据,以便模型能够学会提供更相关、特定于业务的信息。LLM 是基于大量通用数据集训练的,这些数据集通常缺乏特定领域知识或可能过时。这可能导致不准确的响应,包括“幻觉”,其中模型自信地生成错误信息。

2.**隐私和安全:**数据隐私是企业如何通过网络和在组件之间使用和安全地传递专有数据的核心,即使在构建创新的搜索体验时也是如此。这引发了隐私和敏感数据保护问题,尤其是在处理个人或机密信息时。

3.**规模和成本:**由于数据量以及所需的计算能力和内存,使用大型语言模型可能会让许多企业望而却步。然而,想要构建自己的生成式 AI 应用(如聊天机器人)的企业需要将 LLM 与他们的私有数据结合起来。

4.**过时:**模型在收集训练数据的时候就已被冻结在过去的某一时间点上。因此,生成式 AI 模型所创建内容和数据只有在基于它们进行训练时才是最新的。整合公司数据是让 LLM 能够提供及时结果的内在需求。例如,如果用户向 LLM 查询“今天天气怎么样”,那么传统搜索引擎可能在几毫秒内返回结果,而 LLM 可能需要几秒钟或更长时间。

5.**幻觉:**当回答问题或进行交互式对话时,LLM 模型可能会编造一些听起来可信和令人信服的事实,但实际上是一些不符合事实的预测。这也是为什么需要将 LLM 与具有上下文、定制的知识相结合的另一个原因,这对于让模型在商业环境中发挥作用至关重要。

二、Elasticsearch Relevance Engine

是的ChatGPT 和 LLM 面临很多挑战。如专业领域数据的质量准确性,相关性数据缺乏过滤,维护和训练成本,安全性和性能,可解释性等。那接下来看下Elastic的ESRE是如何帮助他们解决问题的。

ESRE 提供了多项用于创建高度相关的 AI 搜索应用程序的新功能。ESRE 站在 Elastic 这个搜索领域的巨人肩膀之上,并基于两年多的 Machine Learning 研发成就构建而成。Elasticsearch Relevance Engine 将 AI 的最佳实践与 Elastic 的文本搜索进行了结合。ESRE 为开发人员提供了一整套成熟的检索算法,并能够与大型语言模型 (LLM) 集成。不仅如此,ESRE 还可通过已经得到 Elastic 社区信任的简单、统一的 API 访问,因此世界各地的开发人员都可以立即开始使用它来提升搜索相关性。

Elasticsearch Relevance Engine 的可配置功能可用于通过以下方式帮助提高相关性:

•应用包括 BM25f(这是混合搜索的关键组成部分)在内的高级相关性排序功能

•使用 Elastic 的矢量数据库创建、存储和搜索密集嵌入

•使用各种自然语言处理 (NLP) 任务和模型处理文本

•让开发人员在 Elastic 中管理和使用自己的转换器模型,以适应业务特定的上下文

•通过 API 与第三方转换器模型(如 OpenAI 的 GPT-3 和 4)集成,以根据客户在 Elasticsearch 部署中整合的数据存储,检索直观的内容摘要

•使用 Elastic 开箱即用型的 Learned Sparse Encoder 模型,无需训练或维护模型,就能实现 ML 支持的搜索,从而在各种域提供高度相关的语义搜索

•使用倒数排序融合 (RRF) 轻松组合稀疏和密集检索;倒数排序融合是一种混合排名方法,让开发人员能够自行优化 AI 搜索引擎,以符合他们独特的自然语言和关键字查询类型的组合

•与 LangChain 等第三方工具集成,以帮助构建复杂的数据管道和生成式 AI 应用程序

三、Elasticsearch 向量库适合用在哪

Elasticsearch 支持的信息检索方法:

•词袋模型和 BM25 算法: 用于传统的文本检索。

•KNN(k-nearest neighbor k-近邻)和 ANN(近似最近邻)向量搜索: 用于基于相似度的向量检索。目前8.11版本中还是使用KNN检索。

Elasticsearch 如何缓解 LLM 问题:

•提供数据上下文并与 ChatGPT 或其他 LLM 集成: Elasticsearch 可以存储和管理大量数据,并提供丰富的上下文信息,帮助 LLM 理解查询意图,生成更准确的结果。

•支持自带模型(任何第三方模型): Elasticsearch 可以接入各种预训练语言模型,包括 ChatGPT 和其他 LLM,为用户提供更灵活的选择。

•内置 Elastic Learned Sparse Encoder 模型: 这个模型可以对文本进行高效的向量化表示,方便进行向量搜索和分析。

Elasticsearch 作为向量数据库的优势:

•高效的混合检索: Elasticsearch 可以同时进行文本检索和向量检索,满足多种应用场景。

•海量数据存储: Elasticsearch 可以存储和管理大量文本和向量数据,为 LLM 提供丰富的数据资源。

•高性能查询: Elasticsearch 的查询速度非常快,可以满足实时检索的需求。

Elasticsearch和LLM结合有三种方式:

**方式一:**Elasticsearch和LLM

使用 Elasticsearch 作为向量存储并与 LLM 集成

方法1

用户将问题数据和生成的嵌入向量一起导入 Elasticsearch。Elasticsearch 会存储和索引这些数据(用户问题的上下文),以便进行高效的检索。当用户提出问题时,用户可以使用 Elasticsearch 的近似最近邻 (KNN) 搜索功能,根据用户的查询在数据集中找到最相似的嵌入向量。这一步骤可以快速找到与用户问题相关的潜在答案。最后Elasticsearch 将搜索结果(包含相关数据的上下文信息)传递给 ChatGPT 或其他 LLM。LLM 会利用这些上下文信息,生成更加准确、流畅和自然的自然语言回答,并返回给用户。

方式二:Elasticsearch Relevance Engine 和LLM

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Elasticsearch Relevance Engine (ESRE) 使 BYOLLM 成为现实。此功能以前只能通过机器学习访问,现在已经可以轻松使用。 从 8.8 版开始,可以使用熟悉的搜索 API 将 LLM 模型摄取和查询到 Elasticsearch 中,就像任何其他数据一样。重要的是他使用RRF进行混合检索,将检索结果提高了一个水平,同事降低了复杂性和运营成本。

方式三:使用内置的稀疏编码模型

方法3

Elastic Learned Sparse Encoder 是 Elastic 开箱即用的语言模型,其性能优于 SPLADE(SParse Lexical AnD Expansion Model),而 SPLADE 本身就是最先进的模型。Elastic Learned Sparse Encoder 解决了词汇不匹配。就像其他搜索端点一样,可以通过text_expansion查询访问 Elastic Learned Sparse Encoder。Elastic Learned Sparse Encoder 使我们的用户只需点击一下即可开始最先进的生成式 AI 搜索并立即产生结果。Elastic Learned Sparse Encoder 也是 Elastic 的一项商业功能。

四、Elasticsearch 向量检索

ES作为向量数据库提供三种能力:1.存储嵌入 2.高效搜索相邻数据 3.将文本嵌入到向量表示。

首先将待检索的数据转换成向量存储。其表现形式为128维的float数组。之后将数组索引到ES的dense_vector类型的字段中。最后基于ANN或KNN进行检索。如下图

single platform

五、Elasticsearch vector search

我们来看一个ES中创建和查询向量数据的示例

第一步我们创建一个向量索引image-index

PUT /image-index
{"mappings": {"properties": {"image-vector": {"type": "dense_vector","dims": 3,"index": true,"similarity": "l2_norm"},"title-vector": {"type": "dense_vector","dims": 5,"index": true,"similarity": "l2_norm"},"title": {"type": "text"},"file-type": {"type": "keyword"}}}
}

第二步向索引image-index中批量插入数据

POST /image-index/_bulk?refresh=true
{ "index": { "_id": "1" } }
{ "image-vector": [1, 5, -20], "title-vector": [12, 50, -10, 0, 1], "title": "moose family", "file-type": "jpg" }
{ "index": { "_id": "2" } }
{ "image-vector": [42, 8, -15], "title-vector": [25, 1, 4, -12, 2], "title": "alpine lake", "file-type": "png" }
{ "index": { "_id": "3" } }
{ "image-vector": [15, 11, 23], "title-vector": [1, 5, 25, 50, 20], "title": "full moon", "file-type": "jpg" }

最后通过KNN api检索数据

POST /image-index/_search
{"knn": {"field": "image-vector","query_vector": [-5, 9, -12],"k": 10,"num_candidates": 100},"fields": [ "title", "file-type" ]
}

查询结果如下

{"took": 1,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 3,"relation": "eq"},"max_score": 0.008547009,"hits": [{"_index": "image-index","_id": "1","_score": 0.008547009,"_source": {"image-vector": [1,5,-20],"title-vector": [12,50,-10,0,1],"title": "moose family","file-type": "jpg"},"fields": {"file-type": ["jpg"],"title": ["moose family"]}},{"_index": "image-index","_id": "3","_score": 0.00061349693,"_source": {"image-vector": [15,11,23],"title-vector": [1,5,25,50,20],"title": "full moon","file-type": "jpg"},"fields": {"file-type": ["jpg"],"title": ["full moon"]}},{"_index": "image-index","_id": "2","_score": 0.00045045046,"_source": {"image-vector": [42,8,-15],"title-vector": [25,1,4,-12,2],"title": "alpine lake","file-type": "png"},"fields": {"file-type": ["png"],"title": ["alpine lake"]}}]}
}

以上是作为向量数据库的实例。ES是可以作为AI查询。支持AI查询的客户端包括JavaScript,Python,Go,PHP,Ruby(没有java)。有兴趣的可以直接去github上去试跑( elasticsearch-labs )

六、总结

Elasticsearch确实卷。它的架构已经不是以前,为了实现更快的查询而迭代。2024年Elasticsearch提出了无服务架构的理念。将存储和计算完全分离开。无服务器架构标志着 Elasticsearch 的重大重组。它的构建是为了利用最新的云原生服务,以轻松的管理提供优化的产品体验。它不仅具备数据湖的存储能力,还拥有与 Elasticsearch 相媲美的快速搜索性能,同时通过无需人工干预的集群管理和扩展,实现了操作的简便性。

七、名词解释

RRF:RRF 是 Elasticsearch 中新推出的一种混合搜索技术,可以将来自不同搜索方法的结果进行融合和排序,以提供更全面、更准确的搜索结果。

ANN:ANN 代表人工神经网络 (Artificial Neural Networks)。人工神经网络是一种计算机科学和人工智能领域的算法模型,它模仿人类大脑的神经网络。

KNN:代表 k 近邻。它是一种机器学习算法,用于在数据集中找到与给定查询最相似的 k 个点。KNN 算法可用于各种任务,包括分类、回归和聚类。

作者:京东保险 管顺利

来源:京东云开发者社区 转载请注明来源

相关文章:

重新认识Elasticsearch-一体化矢量搜索引擎

前言 2023 哪个网络词最热?我投“生成式人工智能”一票。过去一年大家都在拥抱大模型,所有的行业都在做自己的大模型。就像冬日里不来件美拉德色系的服饰就会跟不上时代一样。这不前段时间接入JES,用上好久为碰的RestHighLevelClient包。心血…...

【附源码】基于SSM框架的房屋租赁系统的设计与实现

基于SSM框架的房屋租赁系统的设计与实现 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX&…...

[SpringBoot]如何在一个普通类中获取一个Bean

最近在项目中出现了一个这种情况:我一顿操作猛如虎的写了好几个设计模式,然后在设计模式中的类中想将数据插入数据库,因此调用Mapper持久层,但是数据怎么都写不进去,在我一顿操作猛如虎的查找下,发现在普通…...

[ERROR] 不再支持目标选项 5。请使用 7 或更高版本

在编译spirng boot 3.x版本时,出现了以下错误. 出现这个错误: [ERROR] COMPILATION ERROR : [INFO] -------------------------------------------- [ERROR] 不再支持源选项 5。请使用 7 或更高版本。 [ERROR] 不再支持目标选项 5。请使用 7 或更高版本。 要指定版本: 解决办…...

EasyMR:为 AI 未来赋能,打造弹性大数据引擎的革命

如果要评一个2023科技圈的热搜榜,那么以人工智能聊天机器人 ChatGPT 为代表的 AI大模型 绝对会霸榜整个2023。 ChatGPT 于2022年11月30日发布。产品发布5日,注册用户数就超过100万。推出仅两个月后,它在2023年1月末的月活用户已经突破了1亿&…...

C //练习 4-10 另一种方法是通过getline函数读入整个输入行,这种情况下可以不使用getch与ungetch函数。请运用这一方法修改计算器程序。

C程序设计语言 (第二版) 练习 4-10 练习 4-10 另一种方法是通过getline函数读入整个输入行,这种情况下可以不使用getch与ungetch函数。请运用这一方法修改计算器程序。 注意:代码在win32控制台运行,在不同的IDE环境下…...

竞赛保研 基于深度学习的行人重识别(person reid)

文章目录 0 前言1 技术背景2 技术介绍3 重识别技术实现3.1 数据集3.2 Person REID3.2.1 算法原理3.2.2 算法流程图 4 实现效果5 部分代码6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的行人重识别 该项目较为新颖,适合…...

Ncast盈可视 高清智能录播系统 IPSetup.php信息泄露+RCE漏洞复现(CVE-2024-0305)

0x01 产品简介 Ncast盈可视 高清智能录播系统是广州盈可视电子科技有限公司一种先进的音视频录制和播放解决方案,旨在提供高质量、高清定制的录播体验。该系统采用先进的摄像和音频技术,结合强大的软件平台,可以实现高清视频录制、多路音频采集、实时切换和混音、定制视频分…...

GO语言Context的作用

文章目录 Context为什么需要Context多任务超时例子Context结构 Context各种使用方法创建contextvalueCtxvalueCtx结构体WithValue cancelCtxcancelCtx结构体withCancel timerCtxWithDeadlineWithTimeout 总结 Context 为什么需要Context Go语言需要Context主要是为了在并发环…...

金和OA C6 upload_json 任意文件上传漏洞

产品介绍 金和网络是专业信息化服务商,为城市监管部门提供了互联网监管解决方案,为企事业单位提供组织协同OA系统开发平台,电子政务一体化平台,智慧电商平台等服务。 漏洞概述 金和 OA C6 upload_json接口处存在任意文件上传漏洞,攻击者可以通过构造特殊请求包上…...

大模型学习第四课

学习目标: XTuner 大模型单卡低成本微调实战 学习内容: Finetune简介XTuner介绍8GB显卡玩转LLM动手实战环节 学习时间: 20240110 学习产出: Finetune简介 增量预训练微调指令跟随微调LoRA,QLoRAXTuner 简介:适配多…...

Code Runner使用外部控制台,运行结束后等待用户输入

问题描述 网上让程序运行结束暂停的方法大多数只有两种: 1.末尾加上system(“pause”) 2.start /k cmd 第一种方法每一个程序都需要在最后加上这条命令很烦; 第二章方法cmd窗口在程序运行结束后不会自动关闭,需要用户手动关闭 我想找到一种…...

IC设计的前端和后端是如何区分的?

一、工作着重点不同 **1、IC前端:**根据芯片规格书完成SOC的设计和集成, 使用仿真验证工具完成SOC的设计验证。 **2、IC后端:**将前端设计产生的门级网表通过EDA设计工具进行布局布线和进行物理验证并最终产生供制造用的GDSII数据 二、工作…...

Unity WebView 中文输入支持

使用版本:Vuplex 3D WebView for Windows v4.4; 测试环境:unity editor 2020.3.40f1c1、Windows; 1、打开脚本CanvasWebVie!wPrefab 2、找到_initCanvasPrefab方法,约略在459行附近 3、添加一行代码: …...

x-cmd pkg | trdsql - 能对 CSV、LTSV、JSON 和 TBLN 执行 SQL 查询的工具

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 trdsql 是一个使用 sql 作为 DSL 的强大工具: 采用 SQL 对 CSV、LTSV、JSON 和 TBLN 文件执行查询与 MySQL,Postgresql,Sqlite 的 Driver 协同,可以实现对应数据库的表与文件的 JO…...

Camunda Spin

Spin 常用于在脚本中解析json或者xml使用,S(variable) 表示构造成Spin对象,通过prop(“属性名”)获取属性值,通过stringValue()、numberValue()、boolValue() 等对类型转换。 repositoryService.createDeployment().name("消息事件流程&…...

strlen/Memcpy_s/strncasecmp

strlen 声明&#xff1a;size_t strlen(const char *str) 举例&#xff1a; #include <stdio.h> #include <string.h>int main () {char str[50];int len;strcpy(str, "This is runoob.com");len strlen(str);printf("|%s| 的长度是 |%d|\n"…...

水经微图安卓版APP正式上线!

在水经微图APP&#xff08;简称“微图APP”&#xff09;安卓版已正式上线&#xff01; 在随着IOS版上线约一周之后&#xff0c;安卓版终于紧随其后发布了。 微图安卓版APP下载安装 自从IOS版发布之后&#xff0c;就有用户一直在问安卓版什么时候发布&#xff0c;这里非常感谢…...

数据结构第十二弹---堆的应用

堆的应用 1、堆排序2、TopK问题3、堆的相关习题总结 1、堆排序 要学习堆排序&#xff0c;首先要学习堆的向下调整算法&#xff0c;因为要用堆排序&#xff0c;你首先得建堆&#xff0c;而建堆需要执行多次堆的向下调整算法。 但是&#xff0c;使用向下调整算法需要满足一个前提…...

[NSSRound#3 Team]This1sMysql

[NSSRound#3 Team]This1sMysql 源码 <?php show_source(__FILE__); include("class.php"); $conn new mysqli();if(isset($_POST[config]) && is_array($_POST[config])){foreach($_POST[config] as $key > $val){$value is_numeric($var)?(int)$…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

Windows安装Miniconda

一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

华为OD机试-最短木板长度-二分法(A卷,100分)

此题是一个最大化最小值的典型例题&#xff0c; 因为搜索范围是有界的&#xff0c;上界最大木板长度补充的全部木料长度&#xff0c;下界最小木板长度&#xff1b; 即left0,right10^6; 我们可以设置一个候选值x(mid)&#xff0c;将木板的长度全部都补充到x&#xff0c;如果成功…...

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...