前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Elasticsearch7.6学习笔记1 Getting start with Elasticsearch

Elasticsearch7.6学习笔记1 Getting start with Elasticsearch

作者头像
Ryan-Miao
发布于 2020-04-12 12:17:11
发布于 2020-04-12 12:17:11
1.6K00
代码可运行
举报
文章被收录于专栏:Ryan MiaoRyan Miao
运行总次数:0
代码可运行

Elasticsearch7.6学习笔记1 Getting start with Elasticsearch

前言

权威指南中文只有2.x, 但现在es已经到7.6. 就安装最新的来学下.

安装

这里是学习安装, 生产安装是另一套逻辑.

win

es下载地址:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-windows-x86_64.zip

kibana下载地址:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://artifacts.elastic.co/downloads/kibana/kibana-7.6.0-windows-x86_64.zip

官方目前最新是7.6.0, 但下载速度惨不忍睹. 使用迅雷下载速度可以到xM.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bin\elasticsearch.bat
bin\kibana.bat

双击bat启动.

docker安装

对于测试学习,直接使用官方提供的docker镜像更快更方便。

安装方法见: https://cloud.tencent.com/developer/article/1612794

以下内容来自:

https://www.elastic.co/guide/en/elasticsearch/reference/7.6/getting-started.html

Index some documents 索引一些文档

本次测试直接使用kibana, 当然也可以通过curl或者postman访问localhost:9200.

访问localhost:5601, 然后点击Dev Tools.

新建一个客户索引(index)

PUT /{index-name}/_doc/{id}

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PUT /customer/_doc/1
{
  "name": "John Doe"
}

put 是http method, 如果es中不存在索引(index) customer, 则创建一个, 并插入一个数据, id, name=John`.

如果存在则更新. 注意, 更新是覆盖更新, 即body json是什么, 最终结果就是什么.

返回如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 7,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 2,
    "failed" : 0
  },
  "_seq_no" : 6,
  "_primary_term" : 1
}
  • _index 是索引名称
  • _type 唯一为_doc
  • _id 是文档(document)的主键, 也就是一条记录的pk
  • _version 是该_id的更新次数, 我这里已经更新了7次
  • _shards 表示分片的结果. 我们这里一共部署了两个节点, 都写入成功了.

在kibana上设置-index manangement里可以查看index的状态. 比如我们这条记录有主副两个分片.

保存记录成功后可以立马读取出来:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET /customer/_doc/1

返回

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "_index" : "customer",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 15,
  "_seq_no" : 14,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "name" : "John Doe"
  }
}
  • _source 就是我们记录的内容

批量插入

当有多条数据需要插入的时候, 我们可以批量插入. 下载准备好的文档, 然后通过http请求导入es.

创建一个索引bank: 由于shards(分片)和replicas(副本)创建后就不能修改了,所以要先创建的时候配置shards. 这里配置了3个shards和2个replicas.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PUT /bank
{
  "settings": {
    "index": {
      "number_of_shards": "3",
      "number_of_replicas": "2"
    }
  }
}

文档地址: https://gitee.com/mirrors/elasticsearch/raw/master/docs/src/test/resources/accounts.json

下载下来之后, curl命令或者postman 发送文件请求过去

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -H "Content-Type: application/json" -XPOST "localhost:9200/bank/_bulk?pretty&refresh" --data-binary "@accounts.json"
curl "localhost:9200/_cat/indices?v"

每条记录格式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "_index": "bank",
  "_type": "_doc",
  "_id": "1",
  "_version": 1,
  "_score": 0,
  "_source": {
    "account_number": 1,
    "balance": 39225,
    "firstname": "Amber",
    "lastname": "Duke",
    "age": 32,
    "gender": "M",
    "address": "880 Holmes Lane",
    "employer": "Pyrami",
    "email": "amberduke@pyrami.com",
    "city": "Brogan",
    "state": "IL"
  }
}

在kibana monitor中选择self monitor. 然后再indices中找到索引bank。可以看到我们导入的数据分布情况。

可以看到, 有3个shards分在不同的node上, 并且都有2个replicas.

开始查询

批量插入了一些数据后, 我们就可以开始学习查询了. 上文知道, 数据是银行职员表, 我们查询所有用户,并根据账号排序.

类似 sql

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select * from bank order by  account_number asc limit 3

Query DSL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET /bank/_search
{
  "query": { "match_all": {} },
  "sort": [
    { "account_number": "asc" }
  ],
  "size": 3,
  "from": 2
}
  • _search 表示查询
  • query 是查询条件, 这里是所有
  • size 表示每次查询的条数, 分页的条数. 如果不传, 默认是10条. 在返回结果的hits中显示.
  • from表示从第几个开始

返回:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1000,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [
      {
        "_index" : "bank",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : null,
        "_source" : {
          "account_number" : 2,
          "balance" : 28838,
          "firstname" : "Roberta",
          "lastname" : "Bender",
          "age" : 22,
          "gender" : "F",
          "address" : "560 Kingsway Place",
          "employer" : "Chillium",
          "email" : "robertabender@chillium.com",
          "city" : "Bennett",
          "state" : "LA"
        },
        "sort" : [
          2
        ]
      },
      {
        "_index" : "bank",
        "_type" : "_doc",
        "_id" : "3",
        "_score" : null,
        "_source" : {
          "account_number" : 3,
          "balance" : 44947,
          "firstname" : "Levine",
          "lastname" : "Burks",
          "age" : 26,
          "gender" : "F",
          "address" : "328 Wilson Avenue",
          "employer" : "Amtap",
          "email" : "levineburks@amtap.com",
          "city" : "Cochranville",
          "state" : "HI"
        },
        "sort" : [
          3
        ]
      },
      {
        "_index" : "bank",
        "_type" : "_doc",
        "_id" : "4",
        "_score" : null,
        "_source" : {
          "account_number" : 4,
          "balance" : 27658,
          "firstname" : "Rodriquez",
          "lastname" : "Flores",
          "age" : 31,
          "gender" : "F",
          "address" : "986 Wyckoff Avenue",
          "employer" : "Tourmania",
          "email" : "rodriquezflores@tourmania.com",
          "city" : "Eastvale",
          "state" : "HI"
        },
        "sort" : [
          4
        ]
      }
    ]
  }
}

返回结果提供了如下信息

  • took es查询时间, 单位是毫秒(milliseconds)
  • timed_out search是否超时了
  • _shards 我们搜索了多少shards, 成功了多少, 失败了多少, 跳过了多少. 关于shard, 简单理解为数据分片, 即一个index里的数据分成了几片,可以理解为按id进行分表。
  • max_score 最相关的记录(document)的分数

接下来可可以尝试带条件的查询。

分词查询

查询address中带milllane的地址。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET /bank/_search
{
  "query": { "match": { "address": "mill lane" } },
  "size": 2
}

返回

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "took" : 3,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 19,
      "relation" : "eq"
    },
    "max_score" : 9.507477,
    "hits" : [
      {
        "_index" : "bank",
        "_type" : "_doc",
        "_id" : "136",
        "_score" : 9.507477,
        "_source" : {
          "account_number" : 136,
          "balance" : 45801,
          "firstname" : "Winnie",
          "lastname" : "Holland",
          "age" : 38,
          "gender" : "M",
          "address" : "198 Mill Lane",
          "employer" : "Neteria",
          "email" : "winnieholland@neteria.com",
          "city" : "Urie",
          "state" : "IL"
        }
      },
      {
        "_index" : "bank",
        "_type" : "_doc",
        "_id" : "970",
        "_score" : 5.4032025,
        "_source" : {
          "account_number" : 970,
          "balance" : 19648,
          "firstname" : "Forbes",
          "lastname" : "Wallace",
          "age" : 28,
          "gender" : "M",
          "address" : "990 Mill Road",
          "employer" : "Pheast",
          "email" : "forbeswallace@pheast.com",
          "city" : "Lopezo",
          "state" : "AK"
        }
      }
    ]
  }
}
  • 我设置了返回2个,但实际上命中的有19个

完全匹配查询

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET /bank/_search
{
  "query": { "match_phrase": { "address": "mill lane" } }
}

这时候查的完全符合的就一个了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 9.507477,
    "hits" : [
      {
        "_index" : "bank",
        "_type" : "_doc",
        "_id" : "136",
        "_score" : 9.507477,
        "_source" : {
          "account_number" : 136,
          "balance" : 45801,
          "firstname" : "Winnie",
          "lastname" : "Holland",
          "age" : 38,
          "gender" : "M",
          "address" : "198 Mill Lane",
          "employer" : "Neteria",
          "email" : "winnieholland@neteria.com",
          "city" : "Urie",
          "state" : "IL"
        }
      }
    ]
  }
}

多条件查询

实际查询中通常是多个条件一起查询的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET /bank/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "age": "40" } }
      ],
      "must_not": [
        { "match": { "state": "ID" } }
      ]
    }
  }
}
  • bool用来合并多个查询条件
  • must, should, must_not是boolean查询的子语句, must, should决定相关性的score,结果默认按照score排序
  • must not是作为一个filter,影响查询的结果,但不影响score,只是从结果中过滤。

还可以显式地指定任意过滤器,以包括或排除基于结构化数据的文档。

比如,查询balance在20000和30000之间的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET /bank/_search
{
  "query": {
    "bool": {
      "must": { "match_all": {} },
      "filter": {
        "range": {
          "balance": {
            "gte": 20000,
            "lte": 30000
          }
        }
      }
    }
  }
}

聚合运算group by

按照省份统计人数

按sql的写法可能是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select state AS group_by_state, count(*) from tbl_bank limit 3;

对应es的请求是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET /bank/_search
{
  "size": 0,
  "aggs": {
    "group_by_state": {
      "terms": {
        "field": "state.keyword",
        "size": 3
      }
    }
  }
}
  • size=0是限制返回内容, 因为es会返回查询的记录, 我们只想要聚合值
  • aggs是聚合的语法词
  • group_by_state 是一个聚合结果, 名称自定义
  • terms 查询的字段精确匹配, 这里是需要分组的字段
  • state.keyword state是text类型, 字符类型需要统计和分组的,类型必须是keyword
  • size=3 限制group by返回的数量,这里是top3, 默认top10, 系统最大10000,可以通过修改search.max_buckets实现, 注意多个shards会产生精度问题, 后面再深入学习

返回值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "took" : 5,
  "timed_out" : false,
  "_shards" : {
    "total" : 3,
    "successful" : 3,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1000,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "group_by_state" : {
      "doc_count_error_upper_bound" : 26,
      "sum_other_doc_count" : 928,
      "buckets" : [
        {
          "key" : "MD",
          "doc_count" : 28
        },
        {
          "key" : "ID",
          "doc_count" : 23
        },
        {
          "key" : "TX",
          "doc_count" : 21
        }
      ]
    }
  }
}
  • hits命中查询条件的记录,因为设置了size=0, 返回[]. total是本次查询命中了1000条记录
  • aggregations 是聚合指标结果
  • group_by_state 是我们查询中命名的变量名
  • doc_count_error_upper_bound 没有在这次聚合中返回、但是可能存在的潜在聚合结果.键名有「上界」的意思,也就是表示在预估的最坏情况下沒有被算进最终结果的值,当然doc_count_error_upper_bound的值越大,最终数据不准确的可能性越大,能确定的是,它的值为 0 表示数据完全正确,但是它不为 0,不代表这次聚合的数据是错误的.
  • sum_other_doc_count 聚合中没有统计到的文档数

值得注意的是, top3是否是准确的呢. 我们看到doc_count_error_upper_bound是有错误数量的, 即统计结果很可能不准确, 并且得到的top3分别是28,23,21. 我们再来添加另个查询参数来比较结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET /bank/_search
{
  "size": 0,
  "aggs": {
    "group_by_state": {
      "terms": {
        "field": "state.keyword",
        "size": 3,
        "shard_size":  60
      }
    }
  }
}
-----------------------------------------
  "aggregations" : {
    "group_by_state" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 915,
      "buckets" : [
        {
          "key" : "TX",
          "doc_count" : 30
        },
        {
          "key" : "MD",
          "doc_count" : 28
        },
        {
          "key" : "ID",
          "doc_count" : 27
        }
      ]
    }
  }
  • shard_size 表示每个分片计算的数量. 因为agg聚合运算是每个分片计算出一个结果,然后最后聚合计算最终结果. 数据在分片分布不均衡, 每个分片的topN并不是一样的, 就有可能最终聚合结果少算了一部分. 从而导致doc_count_error_upper_bound不为0. es默认shard_size的值是size*1.5+10, size=3对应就是14.5, 验证shar_size=14.5时返回值确实和不传一样. 而设置为60时, error终于为0了, 即, 可以保证这个3个绝对是最多的top3. 也就是说, 聚合运算要设置shard_size尽可能大, 比如size的20倍.
按省份统计人数并计算平均薪酬

我们想要查看每个省的平均薪酬, sql可能是

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 
  state, avg(balance) AS average_balance, count(*) AS group_by_state 
from tbl_bank
group by state
limit 3

在es可以这样查询:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET /bank/_search
{
  "size": 0,
  "aggs": {
    "group_by_state": {
      "terms": {
        "field": "state.keyword",
        "size": 3,
        "shard_size":  60
      },
      "aggs": {
        "average_balance": {
          "avg": {
            "field": "balance"
          }
        },
        "sum_balance": {
          "sum": {
            "field": "balance"
          }
        }
      }
    }
  }
}
  • 第二个aggs是计算每个state的聚合指标
  • average_balance 自定义的变量名称, 值为相同state的balance avg运算
  • sum_balance 自定义的变量名称, 值为相同state的balancesum运算

结果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "took" : 12,
  "timed_out" : false,
  "_shards" : {
    "total" : 3,
    "successful" : 3,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1000,
      "relation" : "eq"
    },
    "max_score" : null,
    "hits" : [ ]
  },
  "aggregations" : {
    "group_by_state" : {
      "doc_count_error_upper_bound" : 0,
      "sum_other_doc_count" : 915,
      "buckets" : [
        {
          "key" : "TX",
          "doc_count" : 30,
          "sum_balance" : {
            "value" : 782199.0
          },
          "average_balance" : {
            "value" : 26073.3
          }
        },
        {
          "key" : "MD",
          "doc_count" : 28,
          "sum_balance" : {
            "value" : 732523.0
          },
          "average_balance" : {
            "value" : 26161.535714285714
          }
        },
        {
          "key" : "ID",
          "doc_count" : 27,
          "sum_balance" : {
            "value" : 657957.0
          },
          "average_balance" : {
            "value" : 24368.777777777777
          }
        }
      ]
    }
  }
}
按省份统计人数并按照平均薪酬排序

agg terms默认排序是count降序, 如果我们想用其他方式, sql可能是这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 
  state, avg(balance) AS average_balance, count(*) AS group_by_state 
from tbl_bank
group by state
order by average_balance
limit 3

对应es可以这样查询:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
GET /bank/_search
{
  "size": 0,
  "aggs": {
    "group_by_state": {
      "terms": {
        "field": "state.keyword",
        "order": {
          "average_balance": "desc"
        },
        "size": 3
      },
      "aggs": {
        "average_balance": {
          "avg": {
            "field": "balance"
          }
        }
      }
    }
  }
}

返回结果的top3就不是之前的啦:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  "aggregations" : {
    "group_by_state" : {
      "doc_count_error_upper_bound" : -1,
      "sum_other_doc_count" : 983,
      "buckets" : [
        {
          "key" : "DE",
          "doc_count" : 2,
          "average_balance" : {
            "value" : 39040.5
          }
        },
        {
          "key" : "RI",
          "doc_count" : 5,
          "average_balance" : {
            "value" : 36035.4
          }
        },
        {
          "key" : "NE",
          "doc_count" : 10,
          "average_balance" : {
            "value" : 35648.8
          }
        }
      ]
    }
  }

参考

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
4分钟成功复现诺奖!CMU开发GPT-4化学家,自主编码操控机器人颠覆化学研究登Nature
先是谷歌DeepMind的AI工具GNoME成功预测出200万种晶体结构,随后微软推出的MatterGen,大大加速了设计所需材料特性的速度。
新智元
2023/12/21
5150
4分钟成功复现诺奖!CMU开发GPT-4化学家,自主编码操控机器人颠覆化学研究登Nature
不到4分钟,这个GPT驱动的“化学家”能制造药物,还能复现诺奖研究!研究登Nature
你有没有想过,可能就在你阅读这篇文章的几分钟内,获得诺贝尔奖的化学反应就能被完美复刻出来。
大数据文摘
2023/12/21
2120
不到4分钟,这个GPT驱动的“化学家”能制造药物,还能复现诺奖研究!研究登Nature
GPT-4搞科研登Nature!布洛芬配方轻松拿捏,诺奖得主提出的复杂反应也能完成
要知道,2010年诺贝尔化学奖获得者就因为对该反应的研究才获奖的,这类反应可以高效地构建碳-碳键,生成很多以往很难甚至无法合成的物质。
量子位
2023/12/21
1980
GPT-4搞科研登Nature!布洛芬配方轻松拿捏,诺奖得主提出的复杂反应也能完成
Nature | 有机合成的数字化
2019年7月,普林斯顿大学的Ian W. Davies学者在Nature上发表了一篇文章——有机合成的数字化。
DrugAI
2021/01/29
8110
入门综述:机器学习在“逆合成+反应预测+自动化合成”的应用
近年来,化学合成和数据科学的交叉导致了一些新兴工具的出现,包括用于逆合成和反应预测的算法,以及用于高通量、自动化合成的机器人。近日,来自美国密歇根大学安娜堡分校的Tim Cernak、普林斯顿大学的Abigail G. Doyle和加州大学伯克利分校的Richmond Sarpong合作在Nature Reviews Methods Primers 上发表Primer文章,总结当前计算机科学尤其是机器学习在逆合成(图1b)、反应预测(图1c)和自动化合成领域(图1d)的应用,旨在向非计算专家介绍化学信息学理论领域的现状,包括实验和理论方面,以及目前使用的自动化软件和硬件。
智药邦
2021/07/14
1.7K0
入门综述:机器学习在“逆合成+反应预测+自动化合成”的应用
Nat. Rev. Mater. | 大型语言模型驱动的网状化学创新
网状化学研究分子构筑单元的连接,形成金属-有机框架(MOFs)和共价有机框架(COFs)等晶态扩展结构。大型语言模型(LLMs)作为生成式人工智能,可助力研究者从文献中提取知识、设计材料、收集与解析实验数据,从而加速科学发现。本综述探讨LLMs在研究中的应用,包括提示工程、知识与工具增强及微调优化。我们讨论如何构建“化学感知”模型,使其适配特定任务,并融入网状化学实践,将传统的“合成-表征-应用”经验驱动流程转化为基于合成-结构-性质-性能关系的发现循环。此外,我们探讨模块化LLM智能体如何嵌入多智能体实验系统(如自驱动机器人实验室)以优化繁重任务、辅助化学家,并降低LLMs在晶体生长等复杂问题中的应用门槛。本研究为计算与实验化学家提供洞见,助力LLMs在网状化学及更广泛材料科学领域的材料发现。
DrugAI
2025/02/07
720
Nat. Rev. Mater. | 大型语言模型驱动的网状化学创新
J. Chem. Inf. Model. | 预测化学反应产率面临的挑战
今天为大家介绍的是来自Varvara Voinarovska团队的一篇论文。这篇论文讨论了器学习(ML)在预测化学领域的高级特性(如产率、化学合成的可行性和最佳反应条件)时面临的挑战。这些挑战来源于预测任务的高维性质以及涉及的众多关键变量,包括反应物、试剂、催化剂、温度和纯化过程等。成功开发出可靠的预测模型不仅有助于优化高通量实验,还可以提升现有的逆合成预测方法,并在该领域内的多种应用中发挥重要作用。
DrugAI
2024/02/23
5270
J. Chem. Inf. Model. | 预测化学反应产率面临的挑战
Angew. Chem. Int. Ed. | 麻省理工学院融合大语言模型推进电化学反应探索
今天为大家介绍的是来自麻省理工学院Klavs F. Jensen教授团队的一篇论文。电化学C-H氧化反应是对碳氢化合物进行官能化的一种可持续路径,但识别合适的底物和优化合成仍然具有挑战性。在这项研究中,作者报告了一种结合机器学习和大语言模型的综合方法,以简化电化学C-H氧化反应的探索过程。利用批量快速筛选电化学平台,作者评估了广泛的反应,最初根据底物的反应性对其进行分类,同时大语言模型从文献数据中进行文本挖掘以增强训练集。由此产生的反应性预测机器学习模型实现了高精度(>90%),并能够对大量商业化分子进行虚拟筛选。为了优化选定底物的反应条件,作者提示大语言模型生成代码以迭代改善产率。这种人工智能协作方法被证明是有效的,能够高效地确定8种类药物物质或中间体的高产率条件。基于化学家给出的自然语言提示,作者对12种不同的大语言模型(包括LLaMA系列、Claude系列、OpenAI o1和GPT-4)在与机器学习相关的代码生成和函数调用方面的准确性和可靠性进行了基准测试,以展示其在加速四个不同任务的研究方面的潜力。此外,作者还收集了一个实验基准数据集,包括1071个电化学C-H氧化反应的反应条件和产率。
DrugAI
2024/12/30
1180
Angew. Chem. Int. Ed. | 麻省理工学院融合大语言模型推进电化学反应探索
Nature|谷歌DeepMind团队基于AI与机器人打造新型材料
2023年11月29日,谷歌DeepMind团队在Nature杂志上发表文章Scaling deep learning for materials discovery,介绍了其在材料科学领域取得的重要突破。Nature同期文章Google AI and robots join forces to build new materials对此进行了评述。
智药邦
2024/03/05
6020
Nature|谷歌DeepMind团队基于AI与机器人打造新型材料
基于AI的连续流反馈系统加速化学反应开发
今天给大家介绍的是ASCOUNTS of chemical research上有关连续流的文章 "Feedback in Flow for Accelerated Reaction Development"
智药邦
2021/06/07
1.4K0
基于AI的连续流反馈系统加速化学反应开发
基于文本表示推断化学反应的实验步骤
今天给大家介绍的是nature communications上有关化学反应实验步骤预测的文章 "Inferring experimental procedures from text-based representations of chemical reactions"。
智药邦
2021/06/07
1.3K0
基于文本表示推断化学反应的实验步骤
JMC | 人工智能在药物合成中的当前和未来作用(1)
人工智能和机器学习已经证明了其在预测化学性质和小分子合成设计中的潜在作用。数据驱动的合成路线设计是由MLPDS(Machine Learning for Pharmaceutical Discovery and Synthesis)联盟开发和评估的一部分,该联盟包括MIT和13个化学和制药公司成员。他们一起写了“Current and Future Roles of Artificial Intelligence in Medicinal Chemistry Synthesis”刊登于2020年4月JMC,分享了如何将预测模型整合到药物合成工作流程中,如何在MLPDS成员公司中使用预测模型以及该领域的前景。
DrugAI
2021/02/02
7790
JMC | 人工智能在药物合成中的当前和未来作用(1)
Chem. Sci. | SynAsk:首个可公开访问的特定化学领域大语言模型
今天为大家介绍的是来自广州国家实验室廖矿标课题组的一篇论文。自然语言处理(NLP)领域随着大语言模型(LLMs)的出现经历了一场变革性的转变,在各种语言任务和应用中掀起了一场革命。将LLMs整合到特定领域可增强其在特定领域的应用能力。值得注意的是,NLP在有机化学领域取得了重大进展,尤其是在预测合成任务方面,为专门针对有机化学领域开发LLMs铺平了道路。本研究介绍了SynAsk,这是一个由AIChemEco公司开发的综合性有机化学特定领域LLM平台。通过使用特定领域数据对LLM进行微调,并将其与思维链方法相结合,SynAsk可以无缝访问我们的知识库和高级化学工具,以问答格式实现功能。这种新颖的方法将微调技术与外部资源整合相结合,形成了一个专门针对有机化学的模型,有助于推动该领域的研究和发现。SynAsk可在https://synask.aichemeco.com上访问,代表了在利用自然语言处理进行合成应用方面的重大进步。
DrugAI
2025/01/02
3690
Chem. Sci. | SynAsk:首个可公开访问的特定化学领域大语言模型
Nat. Mach. Intel. | 面向未来药物化学家的Transformers
化学反应可以被归为不同的类别,但在大规模的情况下,确定一个特定的反应属于什么类别并不是一件小事。一项新的研究展示了利用自然语言处理(NLP)的方法对化学反应进行数据驱动的自动分类。
智能生信
2021/03/03
5580
Nat. Mach. Intel. | 面向未来药物化学家的Transformers
Artif. Intell. Chem. | 人工智能推动化学发展的二十种方式
2024年诺贝尔物理学奖颁给了神经网络的发展,而化学奖的一半则颁给了利用人工智能 (AI) 预测蛋白质结构的人,显然这项技术已经在科学界掀起了波澜。人工智能也在深刻地重塑化学行业。从加速分子设计的算法到提高实验速度和准确性的自动化实验室,人工智能正在改变化学家解决复杂问题的方式。它的影响遍及材料发现、反应优化和可持续发展工作,使其成为现代化学中不可或缺的力量。
DrugAI
2024/11/23
7780
Artif. Intell. Chem. | 人工智能推动化学发展的二十种方式
NAT CHEM|人工智能的、增强智能的和自动化的化学
2021年8月16日,Nature Chemistry杂志发表了一篇南安普顿大学物理化学教授、AI3SD Network+首席研究员Jeremy Frey的专访文章。在这篇文章中,Jeremy Frey谈论了机器学习数据质量不确定性的危险以及人工智能与其他技术的协同作用。
智药邦
2021/09/06
5500
NAT CHEM|人工智能的、增强智能的和自动化的化学
机器学习模型以出色的精度进行有机反应机理分类
编辑 | 绿萝 化学反应的发现不仅受到获得实验数据的速度的影响,还受到化学家理解这些数据的难易程度的影响。揭示新的催化反应的机理基础是一个特别复杂的问题,通常需要计算和物理有机化学的专业知识。然而,研究催化反应很重要,因为它们代表了最有效的化学过程。 近日,来自英国曼彻斯特大学(UoM)化学系的 Burés 和 Larrosa 报告了一种机器学习模型,展示了可以训练深度神经网络模型来分析普通动力学数据并自动阐明相应的机理类别,而无需任何额外的用户输入。该模型以出色的精度识别各种类型的机理。 研究结果表明,人
机器之心
2023/03/29
4590
机器学习模型以出色的精度进行有机反应机理分类
Nature|GPT-4被吹爆,科学家担忧溢屏!
---- 新智元报道   编辑:Britta 【新智元导读】虽然GPT-4刚发布没多久,但科学家们对这项技术的担忧渐渐溢出。 GPT-4的横空出世,既让人兴奋,又让人沮丧。 尽管GPT-4拥有让人震惊的创造力,推理能力,但科学家们却对这项技术的安全性表示出担忧。 由于OpenAI违背初衷,并未开源GPT-4、公布模型的训练方法和数据,因此它的实际工作情况也无从得知。 科学界对此感到十分沮丧。 开源AI社区HuggingFace专门从事环境研究的科学家Sasha Luccioni表示,「OpenAI
新智元
2023/03/29
2290
Nature|GPT-4被吹爆,科学家担忧溢屏!
从信息时代到智力时代的药物发现
数据驱动着药物发现,但它仍然是该行业面临的最大挑战之一。实验通常是不可重复的,并且数据解释受人类的偏见和限制。
DrugAI
2021/01/29
3440
Nat Rev Drug Discov|深度学习与QSAR的融合
2023年12月8日,来自北卡罗来纳大学教堂山分校的Alexander Tropsha、卡内基梅隆大学的Olexandr Isayev等研究人员在Nature Reviews Drug Discovery发表综述文章Integrating QSAR modelling and deep learning in drug discovery: the emergence of deep QSAR。
智药邦
2024/03/05
4680
Nat Rev Drug Discov|深度学习与QSAR的融合
推荐阅读
相关推荐
4分钟成功复现诺奖!CMU开发GPT-4化学家,自主编码操控机器人颠覆化学研究登Nature
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档