d[IA]gnosis: 내장된 Python 및 LLM 모델을 사용하여 진단 벡터화

WBOY
풀어 주다: 2024-08-29 06:35:02
원래의
457명이 탐색했습니다.

이전 기사에서는 ICD-10의 진단 코딩을 지원하기 위해 개발된 d[IA]gnosis 애플리케이션을 소개했습니다. 이 기사에서는 InterSystems IRIS for Health가 사전 훈련된 언어 모델을 사용하여 ICD-10 코드 목록에서 벡터를 생성하는 데 필요한 도구를 제공하는 방법, 해당 언어 모델의 저장 및 생성된 모든 벡터에 대한 유사점에 대한 후속 검색을 살펴보겠습니다. .

d[IA]gnosis: Vectorizing Diagnostics with Embedded Python and LLM Models

소개

AI 모델 개발과 함께 등장한 주요 기능 중 하나는 컨텍스트를 모델에 통합하여 LLM 모델의 결과를 향상시킬 수 있는 RAG(Retrieval-Augmented Generation)입니다. 음, 우리 예에서 컨텍스트는 ICD-10 진단 세트로 제공되며 이를 사용하려면 먼저 벡터화해야 합니다.

진단 목록을 벡터화하는 방법은 무엇입니까?

SentenceTransformers 및 내장 Python

벡터 생성을 위해 우리는 사전 훈련된 모델에서 자유 텍스트의 벡터화를 크게 촉진하는 Python 라이브러리 SentenceTransformers를 사용했습니다. 자체 웹사이트에서:

Sentence Transformers(일명 SBERT)는 최첨단 텍스트 및 이미지 임베딩 모델에 액세스하고, 사용하고, 교육하기 위한 Python 모듈입니다. Sentence Transformer 모델(빠른 시작)을 사용하여 임베딩을 계산하거나 Cross-Encoder 모델(빠른 시작)을 사용하여 유사성 점수를 계산하는 데 사용할 수 있습니다. 이를 통해 의미 검색, 의미 텍스트 유사성, 의역 마이닝을 포함한 광범위한 애플리케이션을 활용할 수 있습니다.

SentenceTransformers 커뮤니티에서 개발한 모든 모델 중에서 우리는 786차원 벡터를 생성하는 사전 훈련된 모델인 BioLORD-2023-M을 발견했습니다.

이 모델은 임상 문장 및 생물 의학 개념에 대한 의미 있는 표현을 생성하기 위한 새로운 사전 훈련 전략인 BioLORD를 사용하여 훈련되었습니다.

동일 개념을 지칭하는 이름 표현의 유사성을 극대화하고, 대조 학습을 통해 붕괴를 방지하는 최첨단 방법론이 작동합니다. 그러나 생의학적 이름은 항상 자명한 것이 아니기 때문에 때로는 의미론적이지 않은 표현이 되는 경우도 있습니다.

BioLORD는 생물의학적 온톨로지로 구성된 다중 관계형 지식 그래프에서 파생된 간단한 설명과 정의를 사용하여 개념 표현을 기반으로 이 문제를 극복합니다. 이러한 기반 덕분에 우리 모델은 온톨로지의 계층 구조와 더 밀접하게 일치하는 더 의미론적인 개념 표현을 생성합니다. BioLORD-2023은 임상 문장(MedSTS)과 생물 의학 개념(EHR-Rel-B) 모두에서 텍스트 유사성에 대한 새로운 최첨단 기술을 확립했습니다.

정의에서 볼 수 있듯이 이 모델은 ICD-10 코드와 자유 텍스트를 모두 벡터화할 때 유용할 의학 개념으로 사전 훈련되었습니다.

우리 프로젝트에서는 벡터 생성 속도를 높이기 위해 이 모델을 다운로드할 것입니다.

if not os.path.isdir('/shared/model/'):
    model = sentence_transformers.SentenceTransformer('FremyCompany/BioLORD-2023-M')            
    model.save('/shared/model/')
로그인 후 복사

우리 팀에서는 목록에 벡터화할 텍스트를 입력하여 프로세스 속도를 높일 수 있습니다. 이전에 ENCODER.Object.Codes 수업.

st = iris.sql.prepare("SELECT TOP 50 CodeId, Description FROM ENCODER_Object.Codes WHERE VectorDescription is null ORDER BY ID ASC ")
resultSet = st.execute()
df = resultSet.dataframe()

if (df.size > 0):
    model = sentence_transformers.SentenceTransformer("/shared/model/")
    embeddings = model.encode(df['description'].tolist(), normalize_embeddings=True)

    df['vectordescription'] = embeddings.tolist()

    stmt = iris.sql.prepare("UPDATE ENCODER_Object.Codes SET VectorDescription = TO_VECTOR(?,DECIMAL) WHERE CodeId = ?")
    for index, row in df.iterrows():
        rs = stmt.execute(str(row['vectordescription']), row['codeid'])
else:
    flagLoop = False
로그인 후 복사
보시다시피, 아직 벡터화하지는 않았지만 CSV 파일에서 추출한 후 이전 단계에서 기록한 ICD-10 코드 테이블에 저장된 코드를 먼저 추출한 다음, 목록을 추출합니다. 설명을 벡터화하고 Python

sentence_transformers 라이브러리를 사용하여 모델을 복구하고 관련 임베딩을 생성합니다.

마지막으로 UPDATE를 실행하여 벡터화된 설명으로 ICD-10 코드를 업데이트하겠습니다. 보시다시피, 모델이 반환한 결과를 벡터화하는 명령은 IRIS의 SQL 명령

TO_VECTOR입니다.

IRIS에서 사용하기

자, Python 코드가 있으므로

Ens.BusinessProcess를 확장하는 클래스로 래핑하고 프로덕션에 포함시킨 다음 검색을 담당하는 비즈니스 서비스에 연결하면 됩니다. CSV 파일만 있으면 끝입니다!

우리 프로덕션에서 이 코드가 어떻게 보일지 살펴보겠습니다.

d[IA]gnosis: Vectorizing Diagnostics with Embedded Python and LLM Models

보시다시피 우리는

EnsLib.File.InboundAdapter 어댑터를 사용하여 코드 파일을 수집하고 모든 작업을 수행할 비즈니스 프로세스로 리디렉션할 수 있는 비즈니스 서비스를 보유하고 있습니다. 벡터화 및 저장 작업을 통해 다음과 같은 기록 세트를 제공합니다.

d[IA]gnosis: Vectorizing Diagnostics with Embedded Python and LLM Models

이제 애플리케이션은 우리가 보내는 텍스트와 일치하는 항목을 찾을 준비가 되었습니다!

다음 글에서...

다음 기사에서는 Angular 17에서 개발된 애플리케이션 프런트 엔드가 IRIS for Health의 프로덕션과 통합되는 방법과 IRIS가 분석할 텍스트를 수신하고 벡터화하며 ICD-10에서 유사점을 검색하는 방법을 보여 드리겠습니다. 코드 테이블.

놓치지 마세요!

위 내용은 d[IA]gnosis: 내장된 Python 및 LLM 모델을 사용하여 진단 벡터화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿