合碳智能 × Milvus:探索化学合成新境界——逆合成路线设计


合碳智能(C12.ai)成立于2022年,致力于运用AI和具身智能技术,为药物研发实验室提供新一代智能化解决方案,推动实验室从自动化迈向智能化,突破传统实验模式与人员的依赖,解决效率和成本的瓶颈,实现药物研发行业的产业革命。
在药物研发和有机合成化学领域,逆合成分析是一种至关重要的工具。通过逆合成分析,化学家可以从目标分子出发,逐步拆解其结构,推导出合理的合成路线。然而,合成路线的设计往往需要借鉴历史上已知的相似反应,这些反应提供了宝贵的经验和指导,使得合成路线设计更具可行性和效率。
在我们开发的逆合成路线设计产品中,相似反应的检索是核心功能之一。为了在庞大的反应数据库中快速、准确地找到与每一步设计相关的相似反应,我们采用了 Milvus 向量数据库。Milvus 以其卓越的高维向量处理能力,成为了支撑这一关键功能的理想选择。
01.
需求与挑战
在逆合成路线设计中,相似反应检索面临的挑战更加复杂和严苛。以下是在开发过程中遇到的主要需求与挑战:
1、高效处理庞大的化学反应数据
在设计逆合成路线时,化学家需要从庞大的反应数据库中快速找到与当前步骤相似的反应。这些数据库往往包含数百万条甚至数亿条反应记录,这些记录涉及到各种复杂的化学结构和反应机制。因此,我们的系统需要在极短的时间内从如此庞大的数据集中筛选出最相关的反应。
2、高维向量相似度计算的复杂性
逆合成分析涉及大量高维度的化学结构和反应指纹,这些指纹通常以高维向量的形式存储和比较。传统的数据库难以高效处理这些高维向量间的相似性计算,而逆合成设计过程又要求在海量数据中快速定位到相关性最高的反应,这对系统的计算能力和算法提出了极高的要求。
3、系统的实时性与扩展性要求
逆合成路线设计通常需要支持实时的用户交互。化学家在设计过程中会不断调整和优化合成路径,每一次调整都需要系统迅速响应,提供相关的相似反应建议。因此,系统不仅需要在当前数据规模下保持高效,还需具备良好的扩展性,以应对未来可能的数据库扩展和查询请求的增长。
4、检索结果的质量与相关性
在逆合成过程中,检索出的相似反应不仅需要在结构上相似,还必须在化学性质和反应条件上具有较高的相关性。这意味着,检索系统不仅要考虑到简单的结构相似性,还需结合化学反应机理、反应条件以及其他领域特定的知识进行结果优化,以提供真正有价值的参考。
02.
解决方案
针对上述挑战,我们选择了 Milvus 作为核心的向量数据库来支撑相似反应检索功能。Milvus 在处理大规模、高维度向量数据的过程中表现卓越,特别是在逆合成路线设计中,这些特性显得尤为重要。我们的解决方案主要包括以下几个方面:
1、化学反应数据的向量化处理
逆合成路线设计依赖于对化学反应步骤的精确描述。这些描述通常通过化学指纹(如ECFP等)转换为高维向量。我们使用专业的化学信息学工具将每一个反应步骤的分子结构和反应条件转换为高维度的指纹向量。这些向量数据作为 Milvus 的输入,为后续的相似性检索打下基础。
在具体实施中,我们针对不同类型的化学反应设计了不同的向量化方案。通过对反应中各组分(如反应物、催化剂、溶剂等)的特征提取,我们生成了更符合化学家需求的多维向量表示,使得检索出的相似反应在结构上更加贴近实际应用场景。
2、高效的索引构建与优化
为了确保检索的速度和精度,我们在 Milvus 中为每一组反应数据构建了适合的索引结构。我们选择了 IVF (Inverted File Index) 索引结构,因为它在处理高维向量数据时,能够在确保精度的同时提供更快的检索速度。
IVF 索引通过将数据空间划分为多个簇,每个簇内的数据使用量化向量进行近似表示,从而大幅度减少搜索空间,提高检索效率。在我们的系统中,IVF 索引不仅缩短了检索时间,还显著提高了检索精度,确保了化学家在设计逆合成路线时能够快速获得高质量的相似反应建议。
3、分布式部署与性能扩展
为了应对数据规模的不断增长以及高并发的查询需求,我们将 Milvus 部署在分布式计算环境中。通过 Kubernetes 和 Docker 的结合使用,我们实现了系统的容器化部署,使得 Milvus 能够在多个节点上并行处理数据和查询请求。
这一分布式架构不仅提升了系统的可扩展性,还增强了系统的容错能力。在高负载或节点故障的情况下,系统能够自动扩展和恢复,从而保证了相似反应检索的高可用性和稳定性。与此同时,我们还引入了缓存机制和负载均衡策略,以进一步优化系统的性能和用户体验。
4、结果的筛选与优化
在检索到相似反应后,我们并不是直接将结果呈现给用户,而是进一步结合化学领域的专业规则进行筛选和排序。例如,我们会根据反应条件的相似性、反应产率以及反应的适用性等多个维度,对检索结果进行加权评分。最终,系统将最符合逆合成设计需求的相似反应优先展示给用户。
这一过程不仅提高了检索结果的相关性和实用性,还使得化学家在实际应用中能够更快地找到适用的反应步骤,进而优化整个合成路线设计。这种基于多维度条件筛选的结果优化策略,极大地增强了系统的智能化水平,使其能够更好地服务于逆合成路线设计的实际需求。
03.
实施效果
通过两个详细的流程图展示了逆合成路线设计中使用 Milvus 向量数据库进行相似反应检索的完整过程。

自从在我们的逆合成路线设计产品中引入 Milvus 进行相似反应检索后,我们在多个方面取得了显著的成效:
1、检索效率的大幅提升
通过使用 Milvus 的 IVF 索引和分布式架构,我们显著提高了相似反应检索的效率。在处理包含数百万条反应记录的大型数据库时,系统能够在秒级时间内返回相关的相似反应结果。相比传统方法,检索速度提升了10倍以上,大大缩短了逆合成设计的周期。
2、系统扩展性的增强
得益于 Milvus 的分布式设计,我们的系统能够轻松应对数据规模的增长和查询请求的增加。无论是数据节点的扩展还是计算资源的增加,系统都能够快速响应,保持高效稳定的性能。这为我们在未来扩展数据库规模以及应对更复杂的查询需求提供了坚实的基础。
3、检索结果的高质量与高相关性
通过结合 Milvus 的高效检索与化学领域特定的规则筛选,我们提供的相似反应不仅在结构上具有高度相似性,还在实际应用中具备较高的相关性。这种高质量的检索结果帮助化学家在设计逆合成路线时,更加自信和高效地做出决策,减少了实验的盲目性和失败率。
4、用户体验的显著改善
系统的高效性和结果的高质量使得用户的满意度显著提高。化学家们可以更快、更精准地找到所需的相似反应,优化他们的逆合成路线设计。这种体验的提升,不仅提高了他们的工作效率,还增强了对我们产品的信任和依赖,推动了系统在科研和工业领域的广泛应用。
04.
结语
通过利用 Milvus 的高效向量处理能力,我们成功应对了大规模数据处理和高维向量计算的挑战,为逆合成设计提供了强有力的技术支持。随着技术的不断进步和系统的持续优化,我们相信未来的逆合成路线设计将更加智能化、高效化,为化学研究和药物开发带来更大的创新和突破。
推荐阅读




相关文章:
合碳智能 × Milvus:探索化学合成新境界——逆合成路线设计
合碳智能(C12.ai)成立于2022年,致力于运用AI和具身智能技术,为药物研发实验室提供新一代智能化解决方案,推动实验室从自动化迈向智能化,突破传统实验模式与人员的依赖,解决效率和成本的瓶颈&…...
二分查找 | 二分模板 | 二分题目解析
1.二分查找 二分查找的一个前提就是要保证数组是有序的(不准确)!利用二段性! 1.朴素二分模板 朴素二分法的查找中间的值和目标值比较 while(left < right) // 注意是要: < {int mid left (right -left) / 2;…...
uni-app应用更新(Android端)
关于app更新,uni-app官方推荐的是 uni-upgrade-center,看了下比较繁琐,因此这里自己实现检查更新并下载安装的逻辑。 1.界面效果 界面中的弹框和 进度条采用了uView 提供的组件 2.检查更新并下载安装 一、版本信息配置在服务端,…...
JavaEE(2):前后端项目之间的交互
现在,在网页中通过超链接,表单就可以向后端发送请求,后端也可以正常响应内容。 以前通过表单访问后端的请求方式称为同步请求 同步请求 当网页与后端交互时,前端不能再进行其他操作 服务器端响应回来的内容,会把整个浏…...
(已开源-CVPR 2024)YOLO-World: Real-Time Open-Vocabulary Object Detection
169期《YOLO-World Real-Time Open-Vocabulary Object Detection》 You Only Look Once (YOLO) 系列检测模型是目前最常用的检测模型之一。然而,它们通常是在预先定义好的目标类别上进行训练,很大程度上限制了它们在开放场景中的可用性。为了解决这一限制…...
Spring6梳理4——SpringIoC容器
以上笔记来源: 尚硅谷Spring零基础入门到进阶,一套搞定spring6全套视频教程(源码级讲解)https://www.bilibili.com/video/BV1kR4y1b7Qc 目录 4.1 前言 4.2 IoC容器 4.2.1 控制反转(IoC) 4.2.2 依赖注入 4.2.3 IoC容器在Spri…...
SpringBoot2:请求处理原理分析-FORM表单请求接口
一、RESTFUL简介 Rest风格支持(使用HTTP请求方式,动词来表示对资源的操作) 以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户 现在: /user GET-获取用户 DELETE-删除用户 PUT-修改…...
Monkey日志ANR、CRASH、空指针异常及其他异常数据分析
引言 在Android开发过程中,monkey测试是一种常用的随机测试手段,用于模拟用户的各种操作来发现应用中的稳定性问题。通过monkey测试生成的日志文件包含了丰富的信息,包括应用程序崩溃(Crash)、无响应(ANR&…...
Vue 3结合Element Plus中,实现一个级联选择器(Cascader)来展示省市区
在Vue 3结合Element Plus中,实现一个级联选择器(Cascader)来展示省市区(甚至到更细分的级别,如街道、小区等)的联动选择是一个常见的需求。Element Plus的Cascader组件非常适合这样的场景,因为它…...
使用卫星仿真软件STK的一些应用和思考(星地链路、星间链路)
目录 任务描述利用STK建模星地协同系统3个GEO高轨卫星240/20/1 Walker-Star Constellation 低轨卫星星座地面站或者地面设备 链路建模与数据提取处理星地链路星间链路数据读取的几种方法最麻烦的方法使用Matlab与STK互联接口使用大规模使用Chain 总结 任务描述 在一个星地协同…...
pytorch对不同的可调参数,分配不同的学习率
在 PyTorch 中,你可以通过为优化器传递不同的学习率来针对不同的可调参数分配不同的学习率。这通常通过向优化器传递一个字典列表来实现,其中每个字典指定特定参数组的学习率。下面是一个示例代码,展示了如何实现这一点: import …...
零基础学习Python(八)—— time模块、request模块、数据分析和自动化办公相关模块、jieba模块、文件操作和os相关模块的简单介绍
1. time模块 time():获取当前时间戳,是一个数字 localtime():返回一个time.struct_time对象,里面有年月日时分秒,还有星期几(0表示星期一)和今年的第几天 import timeprint(time.time()) pri…...
快速回顾-HTML5
HTML5-常用的标签:https://blog.csdn.net/TKOP_/article/details/111395865 <!-- HTML5:声明文档类型的标签 --> <!DOCTYPE html><!-- 用于声明网页的主要语言为简体中文 --> <!-- 帮助搜索引擎、浏览器等理解网页的语言内容,以便…...
视频技术未来展望:EasyCVR如何引领汇聚融合平台新趋势
随着科技的飞速发展,视频技术已成为现代社会不可或缺的一部分,广泛应用于安防监控、娱乐传播、在线教育、电商直播等多个领域。本文将探讨视频技术的未来发展趋势,并深入分析TSINGSEE青犀EasyCVR视频汇聚融合平台的技术优势,展现其…...
7个流行的开源数据治理工具
数字化时代,数据是已经成为最宝贵的资产之一。数据支撑着我们的政府、企业以及各类组织的所有流程,并为决策以及智能化服务提供支撑。大数据有大用途,但是也可能隐藏着巨大的风险,特别是如果我们对数据的情况不是很了解的时候&…...
js | XMLHttpRequest
是什么? 和serve交互数据的对象;能够达到页面部分刷新的效果,也就是获取数据之后,不会使得整个页面都刷新;虽然名字是XML,但不限于XML数据。 怎么用? function reqListener() {console.log(thi…...
2024国赛数学建模A题思路模型代码
2024国赛数学建模思路资料,思路获取见文末名片 数学建模感想 纪念逝去的大学数学建模:两次校赛,两次国赛,两次美赛,一次电工杯。从大一下学期组队到现在,大三下学期,时间飞逝,我的…...
使用SVD(奇异值分解)进行降维的奇妙之旅
在数据分析和机器学习的广阔天地中,降维技术占据着举足轻重的地位。当我们面对高维数据时,不仅计算成本高昂,而且容易遭遇“维度灾难”,即随着维度的增加,数据的稀疏性和距离度量失效等问题愈发严重。为了克服这些挑战…...
【C++ 第二十一章】特殊类的设计(学习思路)
1.请设计一个类,不能被拷贝 设计思路 拷贝只会使用在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝,只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 C98 的做法 将拷贝构造函数与赋值运算符…...
Java设计模式【命令模式】-行为型
1. 介绍 命令模式(Command Pattern) 是一种行为型设计模式,它将一个请求封装为一个对象,从而使我们可以用不同的请求对客户端进行参数化,并且支持请求的排队、记录日志以及撤销、重做等功能。命令模式将请求的发送者与…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
AI语音助手的Python实现
引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...
