“一根筷子易折断,十根筷子抱成团”,这句话在青岛大学附属医院(以下简称“青大附院”)的医院信息系统升级换代中得到了淋漓尽致的体现。
这篇文章介绍了使用由支持 langchain 框架的IRIS来实现问答聊天机器人,其重点介绍了检索增强生成(RAG)。
文章探讨了IRIS中的向量搜索如何在langchain-iris中完成数据的存储、检索和语义搜索,从而实现对用户查询的精确、快速的响应。通过无缝集成以及索引和检索/生成等流程,由IRIS驱动的RAG应用程序使InterSystems开发者能够利用GenAI系统的能力。
为了帮助读者巩固这些概念,文章提供了Jupyter notebook和一个完整的问答聊天机器人应用程序,以供参考。
什么是RAG以及它在问答聊天机器人中的角色
RAG,即检索增强生成,是一种通过整合超出初始训练集的补充数据来丰富语言模型(LLM)知识库的技术。尽管LLM在跨不同主题进行推理方面具有能力,但它们仅限于在特定截止日期之前训练的公共数据。为了使AI应用程序能够有效处理私有或更近期的数据,RAG通过按需补充特定信息来增强模型的知识。这是一种替代微调LLM的方法,微调可能会很昂贵。
在问答聊天机器人领域,RAG在处理非结构化数据查询中发挥着关键作用,包括两个主要组成部分:索引和检索/生成。
索引从数据源摄取数据开始,然后将其分割成更小、更易于管理的块以进行高效处理。这些分割的块随后被存储和索引,通常使用嵌入模型和向量数据库,确保在运行时能够快速准确地检索。
列式存储是 InterSystems IRIS 提供的一项较新的技术。与传统的基于行的存储不同,它通过将数据存储在列而不是行中来优化查询处理,从而实现更快的访问和检索相关信息。
下面是使用SQL创建此类表的例子
CREATETABLEtable (column1 type1, column2 type2, column3 type3) WITH STORAGETYPE = COLUMNAR -- ex 1CREATETABLEtable (column1 type1, column2 type2, column3 type3 WITH STORAGETYPE = COLUMNAR) -- ex 2我们知道InterSystems IRIS 是支持多模型的DMBS, 它可以无缝的通过关系型或对象的方式访问通一数据,
我们使用下面的方式在使用Object Script类定义的时候定义列存储:
1. 如果你想对类中的所有属性都定义为列存储,则直接通过在类中添加parameter 的方式实现:
Parameter STORAGEDEFAULT = "columnar"如前面的例子,我们使用object script定义就会是这样:
InterSystems 2024 SUTA培训现已启动,欢迎参加!
- 如果您是首次参加SUTA培训,请点击此处 或 扫描下图左侧的二维码注册报名。报名信息需经过审核,请您耐心等待。审核通过的用户,点击此处 或 扫描下图右侧的二维码,使用报名时填写的手机号码登录查看课程。
- 如果您曾报名参加过2022年、2023年的SUTA培训,无需重复注册报名。点击此处 或 扫描下图右侧的二维码,使用报名时填写的手机号码登录查看课程。
建议通过电脑端参加培训,点击进入直播间。
.png)
– 8个新公告
– 2个新问题
✓ 五月有 42 位新成员加入
✓ 截至目前共发布了 2,110 篇帖子
✓ 截至目前共有 1,840 位成员加入
VIP:192.168.30.111,故障转移节点一(192.168.30.10),故障转移节点二(192.168.30.11),ECP地址192.168.30.100
在配置时ECP里增加数据服务器IP为【主】故障转移节点一(192.168.30.10)【文档说不能使用VIP地址】后,
如果主从切换。ECP里的数据服务器IP,会自动变换成故障转移节点二(192.168.30.11)【此时为主】吗?
如果不能,需要手动变更吗?还是不需要?
从发布InterSystems IRIS®数据平台2022.3开始,InterSystems修改了许可证强制执行机制,以包括REST和SOAP请求。由于这种变化,在升级后,使用REST或SOAP的非处理器核数的许可证环境下,用户可能会遇到更高的许可证消耗。要确定此警报是否适用于您的InterSystems许可证,请按照下面链接的FAQ中的说明进行操作。
下表总结了强制执行变更情况:
|
产品 |
许可证强制执行中是否包含REST & SOAP 请求? |
|
InterSystems Caché® |
是 |
|
InterSystems Ensemble® |
否 |
|
InterSystems IRIS, InterSystems IRIS® for Health, and Health Connect prior to 2022.3 |
否 |
|
InterSystems IRIS, InterSystems IRIS for Health, and Health Connect 2022.3 and later |
是 |
嗨,开发者们!
我们非常高兴地邀请开发者社区的所有成员(包括InterSystems员工)我们的最新竞赛!
我们正在寻求您的创新想法,以增强InterSystems的产品和服务。我们鼓励基于现实生活用例的建议,凸显您的创意将给其他用户带来的切实好处,以及它将如何增强开发人员使用InterSystems技术的体验。
📅 参赛时间:2024年6月10日-7月7日
🏆 我们为最佳创意准备了丰富的奖品!
🎁 我们也为每一位参赛者准备了礼物:只要您的创意被大赛接受,就会收到一份特别的礼品。
>> 从6月10日起,即可提交您的创意! <<
为推动《“十四五”全民健康信息化规划》全面实施,充分发挥国家医疗健康信息互联互通标准化成熟度评测工作对区域医疗信息交换促进作用,为医疗数据合规高效流通使用奠定坚实基础。《中国卫生信息管理杂志》社主办、深圳市卫生健康信息协会协办、InterSystems中国承办的区域信息互联互通新发展研讨会于5月11日在深圳举办。
国家卫生健康委统计信息中心胡建平副主任线上参会并致辞、广东省卫生健康委员会事务中心傅承主副主任、深圳市卫生健康信息协会林德南会长参加会议并致辞。胡建平副主任在视频致辞中强调了医疗健康信息互联互通标准化成熟度测评对区域全民健康信息化和智慧医院建设起到的重要作用,总结了互联互通标准化成熟度测评主要开展的四方面工作,指出下一步工作要从网络通、应用通、数据通等三个维度持续发力,通过叠加区块链等信息技术,实现互联互通从1.0阶段向2.0阶段跃迁,赋能卫生健康事业高质量发展。
查看精彩内容回放:欢迎扫描下图中的二维码或点击此处(如果您已报名过此次会议,使用报名时的手机号码即可登录查看,如首次登录,需填写报名信息后查看)
Hi 开发者们,
近期我们举办的有奖调研得到了大家的踊跃支持,现将结果分享如下——
调研奖励
以下参与者获得此次调研奖励,请于5月31日前通过后台与我联系,或将您的快递地址发送到邮箱claire.zheng@intersystems.com,我们将于近期陆续寄出奖品。
AirTag
@liu bo (https://cn.community.intersystems.com/user/liu-bo)
充气颈枕
@water huang (https://community.intersystems.com/user/water-huang)
@he hf (https://cn.community.intersystems.com/user/he-hf)
桌面吸尘器
@YuHao Wan (https://cn.community.intersystems.com/user/yuhao-wan)
@Yongfeng Hou (https://cn.community.intersystems.com/user/yongfeng-hou)
@zhu liang (https://cn.community.intersystems.com/user/zhu-liang)
最近有某国内三甲医院为满足评级和飞行检查要求,希望提升HIS和IRIS的SQL查询效率,客户和实施工程师整理了一个慢查询的SQL列表, 有一些查询比较慢, 查询时间在甚至大于60分钟。
在我们和厂商共同努力下,对整个库的SQL查询做了优化。 下表是记录了我们在进行了大部分优化工作后的结果,您可以看到大多查询从几十分钟减少到了几十秒甚至1秒以内。其中有几个慢到几分钟的查询,最后经过细调, 也把查询耗时减少到了一分钟以内。 优化的效果还是很明显的。
这里我分享一下操作的要点,以便给其他有同样问题的客户一个思路。
其实如果您看过我前面的帖子,应该已经有了基本的概念。我就把工作流程总结一下,其实就这么几个步骤:
步骤一:
检查硬件配置。 配置中和SQL性能相关的有这么几个: 1. 数据缓存大小,应该至少为物理内存的一半以上。 2. BBSIZE, 也就是单个进程最大的内存占用,对应不同的Caché/IRIS版本和不同的应用,这个配置有区别,但当然是越大越好,询问您的实施工程师配置是否正确。 3. 是否使用了大页内存,这个能从messages.log里看到。
步骤二
执行Tunetable。 在上面说的这个客户的系统上从来没人执行过Tunetable, 因此SQL引擎其实是没法正确工作的。执行后基本可以解决80%的慢SQL问题。时间短风险小见效快, 找个半夜业务小的时候直接在生产环境执行。
InterSystems 很高兴地宣布现已推出:
- InterSystems IRIS Data Platform 2024.1.0.267.2
- InterSystems IRIS for Health 2024.1.0.267.2
- HealthShare Health Connect 2024.1.0.267.2
该版本新增了对 Ubuntu 24.04 操作系统的支持。Ubuntu 24.04 包括 Linux 内核 6.8、安全性改进以及安装程序和用户界面改进。 InterSystems IRIS IntegratedML 在 Ubuntu 24.04 上尚不可用。
此外,该版本还解决了所有平台的两个缺陷:
- 修复了某些使用 "NOT %INLIST "的 SQL 查询返回错误结果的问题。我们以前曾就此错误发出过警告。
- 修正了某些特定情况下堆栈跟踪不完整的问题。
如何获取软件
与往常一样,Extended Maintenance (EM) 版本附带适用于所有支持平台的经典安装包,以及 Docker 容器格式的容器镜像。有关完整列表,请参阅 "受支持的平台 "页面。
经典安装包
安装包可从 WRC 的 "Extended Maintenance Releases"页面获取。此外,还可在Evaluation Services上找到安装包。
容器
SQL查询优化器一般情况下能给出最好的查询计划,但不是所有情况都这样,所以InterSystems SQL还提供了一个方式, 也就是在查询语句里加入optimize-option keyword(优化关键字), 用来人工的修改查询计划。
比如下面的查询:
SELECT AVG(SaleAmt) FROM %PARALLEL User.AllSales GROUP BY Region
其中的%PARALLEL, 就是最常用的优化关键字, 它强制SQL优化器使用多进程并行处理这个SQL。
您可以这样理解: 如果查询优化器足够聪明,那么绝大多数情况下,根本就不需要优化关键字来人工干预。因此,您也一定不奇怪在不同的IRIS/Caché版本中, 关键字的表现可能不一样。越新的版本,应该是越少用到。比如上面的%PARALLEL, 在Caché的大多数版本中, 在查询中加上它一般都能提高查询速度,而在IRIS中,尤其是2023版本以后, 同样的SQL查询语句,很大的可能查询优化器已经自动使用多进程并行查询了,不再需要用户人工干预了。
因此,先总结有关优化关键字的要点:
我新建了命名空间,然后新加了用户,新加了角色,给角色授权了%DB_%DEFAULT资源和%Ens_Portal(因为新加的命名空间默认应用就是这个必要资源),然后访问这个空间下的webservice,报错为权限不足,如果再加上%EnsRole_WebDeveloper就可以成功访问,但是加上它后,用户就能登录portal里面的
,我不想让它访问这个 ensemble,请问我应该怎么配置权限资源
我在使用PHP 链接 Cache时 超长字段有一半乱码,其他字段正常,这是为什么
我使用Call 来访问的视图 unixODBC 链接 windows ODBC链接 均出现乱码 请求帮助
Hi 开发者们,
为了更好地优化开发者社区服务,我们希望了解中国的开发者们最常用的代码托管平台是什么,即日起我们发起一项有奖调研。详情如下。
– 5个新公告
– 2个新问题
✓ 四月有 45 位新成员加入
✓ 截至目前共发布了 2,098 篇帖子
✓ 截至目前共有 1,797 位成员加入
%SYS.Journal.Record 类有一个查询(query), List, 可以列出Journal文件中记录的数据修改历史。例如,要查询谁对global节点^QP(1,2)做过修改,可以使用如下代码。它查询Journal文件(输入参数pFilePath)中的global节点(输入参数pSearchGlobal)的操作:
大家好:我编写一个简单的连接rabbitmq的测试代码;代码如下:
InterSystems IRIS、IRIS for Health和HealthShare HealthConnect的维护版本2022.1.5 & 2023.1.4现已发布
InterSystems IRIS, InterSystems IRIS for Health 和 HealthShare Health Connect 的两个扩展维护版本现已发布。
✅ 2022.1.5
2022.1.5 版提供此前发布的任一 2022.1.x 版中的Bug修复。
您可以在以下页面找到详细的变更列表和升级清单:
✅ 2023.1.4
2023.1.4 版提供此前发布的任一2023.1.x 版中的Bug修复。
您可以在以下页面找到详细的变更列表和升级清单:
如何获得该软件
该软件以经典安装包和容器映像两种形式提供。有关可用安装程序和容器映像的完整列表,请参阅 Supported Platforms webpage.
在InterSystems,我们致力于为您提供最优质的服务,包括我们的Global Master项目。
Global Master项目平台的供应商已经被另一家公司收购,不幸的是,我们无法继续在这个平台上托管我们Global Master项目。我们目前正在评估新的平台供应商,以推动Global Masters Advocate Hub的平稳过渡。
自2024年4月26日起,我们将暂停Global Master项目,以期平稳过度到新平台上。
FAQ:
当我们在设计一个需要重复使用的BP时候,往往需要开发一个可配置<call>的对象的组件,我们将call的target 设置为
@process.TargetConfigName即可实现。
下面是完整代码:
Hi 开发者们,
我们非常高兴地邀请大家参加新的 InterSystems 在线编程竞赛,此次编程大赛关注生成式AI(GenAI), 向量搜索(Vector Search )与机器学习(Machine Learning)!
🏆 InterSystems 编程大赛:Vector Search, GenAI 与 ML 🏆
时间:2024年4月22日 - 5月19日 (美国东部时间)
奖金池: $14,000
.jpg)
SQL性能监控是DBA最重要的日常工作。经常被问起:"Caché/IRIS怎么发现慢SQL"? 答案很简单: 到管理门户的SQL页面,点开如下的“SQL语句“子页, 您能看到这个命名空间的所有执行过的SQL语句,知道每个SQL语句执行了多少次,平均执行时间是多少, 被那个客户端编译的,第一次执行是那一天等等。
请看下面的截图
图中的各个栏目基本都不需要解释,有个别的内容在这里总结一些:
表/视图/存储过程名称:列出这个查询使用的所有的表/视图/存储过程的名字。如果你想看某个表有关的查询,可以使用上面的过滤器。
位置(Location) : 对于动态查询, 列出所使用的缓存的查询的类名,对于嵌入SQL(Embedded SQL)查询,列出使用的routine名字。
每个字段的标题栏可以用于排序,比如上图是按执行次数倒序显示的,所以前几位都是执行了很多的INSERT。 如果是日常维护查找慢SQL, 您可以按平均时间倒序显示。
计划状态: 通常是"Unfrozn"或者“Unfrozen/Parallel"。除非您需要升级或者有“Frozen Qeury Plan“的需要,您可以不关心这个栏目。
用鼠标单击上图的最左列或者最右列“SQL声明文本”, 会显示这个SQL语句的详细执行数据。 注意这个页面上的两个按钮: “导出” 和**”查询测试“**, 您可以试试它们。
Hey Community,
Play the new video on InterSystems Developers Bilibili官方频道:
各位开发者好
欢迎观看InterSystems Bilibili官方频道的最新视频 InterSystems Developers Bilibili:
⏯ Understanding the Structure of HL7 FHIR Resources
<iframe allowfullscreen="true" border="0" frameborder="no" framespacing="0" scrolling="no" src="//player.bilibili.com/player.html?aid=1953056184&bvid=BV1iC411G74J&cid=1506782787&p=1"></iframe>
索引分析器工具用来分析索引的使用情况,对DBA和开发者非常有用。 他们需要知道那些查询进行了全表扫描,那些查询缺失了索引, 而那些索引从来又从来没有被用过。多余的索引降低系统性能,浪费了磁盘空间。
索引使用情况
到“管理门户”的" 系统 > SQL 性能工具 > SQL 索引分析器", 点击**“索引使用情况”**, 您将看到这样的图
执行SQL语句查询会带来更多的灵活性。上面的查询可以写成下面这个SQL,
SELECT TableName, indexname, UsageCount
FROM %SYS_PTools.UtilSQLAnalysisDB order by usagecount desc
2016年以后的Caché版本就已经有了'索引使用情况'的查询。使用管理门户没有区别, 但SQL语句不同,使用的是比较老的类和表名,各位请参考文档。
注意上图中另外几个按钮,它们的介绍在文档的这个链接, 简单的做个翻译:
全表扫描的查询:
可识别当前命名空间中进行全表扫描的所有查询。应尽可能避免全表扫描。全表扫描并非总能避免,但如果某个表有大量全表扫描,则应检查为该表定义的索引。通常情况下,表扫描列表和临时索引列表会重叠;修复一个会移除另一个。结果集列出了从最大块计数到最小块计数的表。显示计划链接可显示语句文本和查询计划。
使用临时索引的查询:
%20(3)(2).jpg)

