查找

InterSystems 官方
· 10 hr 前

Release Notes: InterSystems Cloud Services – Version 25.19.2 (August 2025)

Overview

This release focuses on performance optimization, improved security synchronization, and enhanced network management. The FHIR Server has been upgraded to a new version and migrated to ARM64, delivering significantly better efficiency and throughput. Additionally, several improvements enhance resiliency, subscription management, and network visibility.


New Features and Enhancements

Category

Feature / Improvement

Details

FHIR Server

ARM64 Migration with 40% Performance Gain

FHIR Server now runs on the ARM64 architecture, delivering up to 40% better performance and improved energy efficiency.

 

New FHIR Server Release

Includes the latest FHIR Server version, improving interoperability, scalability, and compatibility with modern FHIR workloads.

Database Resiliency

Mirror Configuration Enhancements

Refined mirror configuration ensures more reliable synchronization and faster recovery in failover scenarios.

Networking

Advanced Security TGW Route Alignment

Automatically adds the correct routes from the Advanced Security Transit Gateway endpoints to VPC endpoints, improving traffic flow and reducing configuration errors.

 

CIDR Conflict Detection in Network Connect

Network Connect now provides clear visual indicators when conflicting CIDR ranges are detected, simplifying troubleshooting and network design.

Security

Synchronization Between Advanced Security and Security Groups

Enhanced synchronization logic ensures Security Group configurations stay aligned with Advanced Security policies in real time.

Subscription Management

Improved Subscription Controls

Greater accuracy and consistency in tracking and enforcing subscription parameters for customer environments.

 


Recommended Actions

  • Review network CIDRs for any conflicts highlighted in Network Connect.
  • Evaluate FHIR Server performance improvements and ensure client integrations are aligned with the new release.

Support

For more information or assistance with this release, please contact InterSystems Cloud Services Support via iService or through the Cloud Service Portal.

讨论 (0)1
登录或注册以继续
文章
· 10 hr 前 阅读大约需 6 分钟

Vector Search with Embedded Python in InterSystems IRIS

One objective of vectorization is to render unstructured text more machine-usable. Vector embeddings accomplish this by encoding the semantics of text as high-dimensional numeric vectors, which can be employed by advanced search algorithms (normally an approximate nearest neighbor algorithm like Hierarchical Navigable Small World). This not only improves our ability to interact with unstructured text programmatically but makes it searchable by context and by meaning beyond what is captured literally by keyword.

In this article I will walk through a simple vector search implementation that Kwabena Ayim-Aboagye and I fleshed out using embedded python in InterSystems IRIS for Health. I'll also dive a bit into how to use embedded python and dynamic SQL generally, and how to take advantage of vector search features offered natively through IRIS.

Environment Details:

  • OS: Windows Server 2025
  • InterSystems IRIS for Health 2025.1
  • VS Code / InterSystems Server Manager
  • Python 3.13.7
  • Python Libraries: pandas, ollama, iris**
  • Ollama 0.12.3 and model all-minilm
  • Dynamic SQL
  • Sample database of unstructured text (classic poems)

Process:

      0. Setup the environment; complete installs

  1. Define an auxiliary table

  2. Define a RegisteredObject class for our vectorization methods, which will be written in embedded python. First let's focus on a VectorizeTable() method, which will contain a driver function (of the same name) and a few supporting process functions all written in Python.

    • The driver function walks through the process as follows:
      1. Load from IRIS into a Pandas Dataframe (via supporting function load_table())
      2. Generate an embedding column (via supporting class method GetEmbeddingString, which will later be used to generate embeddings for queries as well)
        • Convert the embedding column to a string that's compatible with IRIS vector type
      3. Write the dataframe into the auxiliary able
      4. Create an HNSW index on the auxiliary table
    • The VectorizeTable() class method then simply calls the driver function:
    • Let's examine it step-by-step:
    1. Load the table from IRIS into a Pandas Dataframe

      • def load_table(sample_size='*') -> pd.DataFrame:
            sql = f"SELECT * FROM SQLUser.SamplePoetry{f' LIMIT {sample_size}' if sample_size != '*' else ''}"
            result_set = iris.sql.exec(sql)
            df = result_set.dataframe()
        
            # Entries without text will not be vectorized nor searchable
            for index, row in df.iterrows():
                if row['poem'] == ' ' or row['poem'] is None:
                    df = df.drop(index)
        
            return df
      • This function leverages the dataframe() method of the embedded python SQLResultSet objects
      • load_table() accepts an optional sample_size argument for testing purposes. There's also a filter for entries without unstructured text. Though our sample database is curated and complete, some use cases may seek to vectorize datasets for which one cannot assume each row will have data for all columns (for example survey responses with skipped questions). As opposed to implementing a "null" or empty vector, we chose to exclude such rows from vector search by removing them at this step in the process.
      • *Note that iris is the InterSystems IRIS Python Module. It functions as an API to access IRIS classes, methods, and to interact with the database, etc.
      • *Note that SQLUser is the system-wide default schema which corresponds to the default package User.
    2. Generate an embedding column (support method)

      • ClassMethod GetEmbeddingString(aurg As %String) As %String [ Language = python ]
        {
          import iris
          import ollama
        
          response = ollama.embed(model='all-minilm',input=[ aurg ])
          embedding_str = str(response.embeddings[0])
        
          return embedding_str
        }
      • We installed Ollama on our VM, loaded the all-minilm embedding model, and generated embeddings using Ollama’s Python library. This allowed us to run the model locally and generate embeddings without an API key.
      • GetEmbeddingString returns the embedding as a string because TO_VECTOR by default expects the data argument to be a string, more on that to follow.
      • *Note that Embedded Python provides syntax for calling other ObjectScript methods defined within the current class (similar to self in Python). The earlier example uses iris.cls(__name__) syntax to get a reference to the current ObjectScript class and invoke GetEmbeddingString (ObjectScript method) from VectorizeTable (Embedded Python method inside ObjectScript method).
    3. Write the embeddings from the dataframe into the table in IRIS

      • # Write dataframe into new table
        print("Loading data into table...")
        for index, row in df.iterrows():
            sql = iris.sql.prepare("INSERT INTO SQLUser.SamplePoetryVectors (ID, EMBEDDING) VALUES (?, TO_VECTOR(?, decimal))")
            rs = sql.execute(row['id'], row['embedding'])
        
        print("Data loaded into table.")
      • Here, we use Dynamic SQL to populate SamplePoetryVectors row-by-row. Because earlier we declared the EMBEDDING property to be of type %Library.Vector we must use TO_VECTOR to convert the embeddings to IRIS' native VECTOR datatype upon insertion. We ensured compatibility with TO_VECTOR by converting the embeddings to strings earlier.
        • The iris python module again allows us to take advantage of Dynamic SQL from within our Embedded Python function.
    4. Create a HNSW Index

      • # Create Index
        iris.sql.exec("CREATE INDEX HNSWIndex ON TABLE SQLUser.SamplePoetryVectors (EMBEDDING) AS HNSW(Distance='Cosine')")
        print("Index created.")
      • IRIS will natively implement a HNSW graph for use in vector search methods when an HNSW index is created on a compatible column. The vector search methods available through IRIS are VECTOR_DOT_PRODUCT and VECTOR_COSINE. Once the index is created, IRIS will automatically use it to optimize the corresponding vector search method when called in subsequent queries. The parameter defaults for an HNSW index are Distance = CosineM = 16, and efConstruction = 200.
      • Note that VECTOR_COSINE implicitly normalizes its input vectors, so we did not need to perform normalization before inserting them into the table in order for our vector search queries to be scored correctly!
  3. Implement a VectorSearch() class method

    •    

    1. Generate an embedding for the query string

      • # Generate embedding of search parameter
        search_vector = iris.cls(__name__).GetEmbeddingString(aurg)
      • Reusing the class method GetEmbeddingString
    2. Prepare and execute a query that utilizes VECTOR_COSINE

      • # Prepare and execute SQL statement
        stmt = iris.sql.prepare(
                """SELECT top 5 p.poem, p.title, p.author 
                FROM SQLUser.SamplePoetry AS p 
                JOIN SQLUser.SamplePoetryVectors AS v 
                ON p.ID = v.ID 
                ORDER BY VECTOR_COSINE(v.embedding, TO_VECTOR(?)) DESC"""
        )
        results = stmt.execute(search_vector)
      • We use a JOIN here to combine the poetry text with its corresponding vector embedding so we can rank results by semantic similarity.
    3. Output the results

      • results_df = pd.DataFrame(results)
        
        pd.set_option('display.max_colwidth', 25)
        results_df.rename(columns={0: 'Poem', 1: 'Title', 2: 'Author'}, inplace=True)
        
        print(results_df)
      • Utilizes formatting options from pandas to tweak how it appears in the IRIS Terminal:
        •  
讨论 (0)1
登录或注册以继续
公告
· 10 hr 前

Developer Community Recap, November 2025

Hello and welcome to the November 2025 Developer Community Recap.
General Stats
115 new posts published in November:
 32 new articles
 44 new announcements
 35 new questions
 4 new discussions
257 new members joined in November
15,777 posts published all time
18,369 members joined all time
Top posts
Top authors of the month
Articles
#InterSystems IRIS
Interoperability Naming Convention (IRIS Project Organization Guide)
By Andrew Sklyarov
JWT Authentication
By David Hockenbroch
Document Database Explorer
By Ashok Kumar T
About exporting mapped globals
By Tomoko Furuzono
Understanding SQL Window Functions (Part 1)
By José Pereira
How to run a process on an interval or schedule?
By Andrew Sklyarov
Consuming REST-APIs for dummies (beginner-friendly)
By Zion Amsalem
Customizing Message Routers
By Robert Barbiaux
Network Debugging for Beginners - 1
By Robert Cemper
Network Debugging for Beginners - 2
By Robert Cemper
Data Streaming with InterSystems IRIS Interoperability
By Yuri Marx
Connecting C# to InterSystems IRIS via ODBC
By Iryna Mykhailova
My experience with APIs and POS integration.
By Vachan C Rannore
Production Terminal Commands
By Padmaja Konduru
CCR: Block markMoveToXXXXComplete, markCANCELComplete with Undeployed ItemSets
By Haddon Baker
InterSystems IRIS Shells
By Julio Esquerdo
Graqphic view of DBsize with CSP
By Robert Cemper
Bringing Legacy Code Into Current Versions - Tips and Tricks
By David Hockenbroch
Understanding SQL Window Functions (Part 2)
By José Pereira
IRIS Light: Reducing the Footprint of the IRIS Community Edition
By Dmitry Maslennikov
Connecting Java to InterSystems IRIS using JDBC
By Iryna Mykhailova
 
#InterSystems Kubernetes Operator (IKO)
 
#Developer Community Official
 
#Open Exchange
 
#InterSystems IRIS for Health
 
Announcements
#InterSystems IRIS
Using InterSystems Embedded Analytics – Virtual December 1-5, 2025 - Registration space available
By Larry Finlayson
[Video] Analytics and AI with InterSystems IRIS - From Zero to Hero
By Anastasia Dyubaylo
Announcing Availability of Adaptive Analytics 2025.4.1
By Carmen Logue
[Video] Document Server: Improving Performance While Reducing Stored Data
By Liubov Zelenskaia
[Video] Operations & Scalability with InterSystems IRIS - From Zero to Hero
By Anastasia Dyubaylo
Release Notes: InterSystems Cloud Services – Version 25.22.2
By Dipak Bhujbal
[Video] Using SerenityGPT to Build Out an Application GenAI Middleware at InterSystems
By Anastasia Dyubaylo
[Video] Architecting for Success with Mirroring
By Derek Robinson
[Video] Foreign Tables In 2025.2
By Liubov Zelenskaia
NEW: "IntegratedML Custom Models" Early Access Program -- Deploy Your Python ML Models in SQL
By Thomas Dyar
Client SDKs available on external repositories
By Stefan Wittmann
InterSystems Announces General Availability of InterSystems IRIS, InterSystems IRIS for Health, and HealthShare Health Connect 2025.3
By Daniel Palevski
[Video] Optimizing Parallel Aggregation Using Shared Globals
By Liubov Zelenskaia
Free Hands-On Online Tutorials for New InterSystems IRIS Developers
By Anastasia Dyubaylo
2025.3 Modernizing Interoperability User Experience
By Aya Heshmat
[Video] Integrating AI Agents into InterSystems IRIS - Patterns and Techniques
By Anastasia Dyubaylo
[Video] Query Optimization in Hybrid Databases
By Liubov Zelenskaia
 
#Developer Community Official
 
#Open Exchange
 
#Global Masters
 
#Other
 
#InterSystems IRIS for Health
 
#Learning Portal
 
#IRIS contest
 
#TrakCare
 
#InterSystems Ideas Portal
 
#HealthShare
 
#Summit
 
#InterSystems Official
 
Questions
#InterSystems IRIS
$ESTACK does not contain method/routine executed as "If Method..." or "set var = Method..."
By Michael Akselrod
Is there a way to log all child sub routine calls in cache?
By vijay Rumandla
actual versions on intersystemsdc ?
By Robert Cemper
Non ascii characters got considered as a question mark inside regex engine. Is this a bug ?
By Norman W. Freeman
EnsLib.RecordMap.Service.FileService row?
By Scott Roth
Foreign Table datatypes
By Attila Toth
HTTP post request rejected
By Touggourt
Business Services limit
By Touggourt
How can I code "IF Studio"?
By Anna Golitsyna
VS Code Find in Routines
By Matthias Thon
Create custom screen to show a production
By Touggourt
Resources for the InterSystems IRIS Development Professional certification exam
By Arber Limaj
RecordMap Data Validation
By Scott Roth
Unit Test System in the InterSystems iris
By Deák Tamás
Regarding best practices for integration between different datasets and namespaces.
By Matheus Augusto
Conditions quantity in $SELECT()
By Dmitrij Vladimirov
Punctually access specific nodes of an XML document
By Marco Bruni
 
#Caché
 
#InterSystems IRIS for Health
 
#InterSystems IRIS BI (DeepSee)
 
#Ensemble
What is MQTT Broker
By Touggourt
 
#HealthShare
 
#Health Connect
 
Discussions
November, 2025Month at a GlanceInterSystems Developer Community
讨论 (0)1
登录或注册以继续
摘要
· 11 hr 前
摘要
· 11 hr 前

Resumo do InterSystems Developer Community, Novembro 2025

Olá e bem-vindo ao boletim informativo da comunidade de desenvolvedores Novembro 2025.
Estatísticas gerais
17 novas postages publicadas em Novembro:
 7 novos artigos
 10 novos anúncios
1,500 postagens publicadas ao todo
655 membros ingressaram ao todo
Principais publicações
Principais autores do mês
Artigos
Anúncios
#InterSystems IRIS
Notas de Versão: InterSystems Cloud Services – Versão 25.22.2
Por Danusa Calixto
[Vídeo] Utilizando o SerenityGPT para desenvolver uma Aplicação Middleware GenAI com InterSystems
Por Danusa Calixto
[Video] Operações e escalabilidade com InterSystems IRIS - Do Zero ao Sucesso
Por Danusa Calixto
[Vídeo] Arquitetando para o Sucesso com Espelhamento (Mirroring)
Por Danusa Calixto
[Vídeo] Tabelas Estrangeiras na versão 2025.2
Por Danusa Calixto
Clientes SDKs disponíveis em repositórios externo
Por Danusa Calixto
A InterSystems anuncia a disponibilidade geral do InterSystems IRIS, InterSystems IRIS for Health e HealthShare Health Connect 2025.3.
Por Danusa Calixto
NOVO: Programa de Acesso Antecipado para "Modelos Personalizados do IntegratedML" -- Implante seus modelos de aprendizado de máquina em Python diretamente em SQL
Por Danusa Calixto
#Developer Community Oficial
#Summit
Novembro, 2025Month at a GlanceInterSystems Developer Community