使用案例:使用擴增的患者資料建置醫療智慧應用程式 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用案例:使用擴增的患者資料建置醫療智慧應用程式

生成式 AI 可以透過增強臨床和管理功能,協助提高患者護理和員工生產力。AI 驅動的影像分析,例如解譯聲紋,可加速診斷程序並提高準確性。它可以提供關鍵洞見,以支援及時的醫療介入。

當您將生成式 AI 模型與知識圖表結合時,您可以自動化電子患者記錄的時間組織。這可協助您整合來自醫生與患者互動、症狀、診斷、實驗室結果和影像分析的即時資料。這會為醫生提供全面的患者資料。此資料可協助醫生做出更準確且及時的醫療決策,同時提高患者成果和醫療保健供應商的生產力。

解決方案概觀

AI 可以透過合成患者資料和醫學知識來為醫生和臨床醫生提供有價值的洞察。此擷取增強生成 (RAG) 解決方案是一種醫學智慧引擎,可從數百萬個臨床互動中取用一組全面的患者資料和知識。它利用生成式 AI 的力量來建立以證據為基礎的洞見,以改善患者護理。它旨在增強臨床工作流程、減少錯誤並改善患者結果。

解決方案包含由 LLMs 提供的自動化影像處理功能。此功能可減少醫務人員手動搜尋類似的診斷影像和分析診斷結果所花費的時間。

下圖顯示此解決方案的end-to-end-workflow。它使用 Amazon Neptune、Amazon SageMaker AI、Amazon OpenSearch Service 和 Amazon Bedrock 中的基礎模型。對於與 Neptune 中的醫學知識圖表互動的內容擷取代理程式,您可以在 Amazon Bedrock 代理程式和LangChain代理程式之間進行選擇。

使用 AWS 服務 和 LLM 產生醫療問題的答案。

在我們對範例醫療問題的實驗中,我們觀察到使用 Neptune、OpenSearch 向量資料庫存放臨床知識庫和 Amazon Bedrock LLMs 中維護的知識圖表的方法所產生的最終回應是基於事實,並透過減少誤報並提高真誤報來更加準確。此解決方案可以產生以證據為基礎的患者健康狀態洞察,並旨在增強臨床工作流程、減少錯誤並改善患者結果。

建置此解決方案包含下列步驟:

步驟 1:探索資料

您可以使用許多開放原始碼醫療資料集來支援開發醫療保健 AI 驅動的解決方案。這類資料集之一是 MIMIC-IV 資料集,這是公有可用的電子運作狀態記錄 (EHR) 資料集,廣泛用於醫療保健研究社群。MIMIC-IV 包含詳細的臨床資訊,包括來自病患記錄的任意文字放電備註。您可以使用這些記錄來實驗文字總和和和實體擷取技術。這些技術可協助您從非結構化文字中擷取醫療資訊 (例如患者症狀、受管藥物和規定的處理方式)。

您也可以使用資料集,該資料集提供已標註、去識別化的患者出院摘要,這些摘要專門為研究目的而策劃。放電摘要資料集可協助您實驗實體擷取,讓您從文字中識別關鍵醫療實體 (例如條件、程序和藥物)。步驟 2:建立醫學知識圖表本指南說明如何使用從 MIMIC-IV 擷取的結構化資料和放電摘要資料集來建立醫學知識圖表。此醫療知識圖表是醫療保健專業人員進階查詢和決策支援系統的骨幹。

除了文字型資料集之外,您還可以使用影像資料集。例如,Musculoskeletal Radiographs (MURA) 資料集,這是骨骼多檢視放射影像的完整資料庫。使用這類影像資料集,透過醫療影像解碼技術來實驗診斷評估。這些解碼技術對於早期診斷疾病至關重要,例如肌肉骨骼疾病、重大疾病和骨質疏鬆。透過微調醫療影像資料集上的視覺和語言基礎模型,您可以偵測診斷影像中的異常。這有助於系統為臨床醫生提供早期且準確的診斷洞察。透過使用影像和文字資料集,您可以建立 AI 驅動的醫療保健應用程式,能夠同時處理文字和影像資料,以改善患者護理。

步驟 2:建立醫學知識圖表

對於任何想要根據大量知識庫建置決策支援系統的醫療保健組織,關鍵挑戰是尋找和擷取臨床筆記、醫療日誌、放電摘要和其他資料來源中存在的醫療實體。您也需要從這些醫療記錄中擷取時間關係、主體和確定性評估,以有效地使用擷取的實體、屬性和關係。

第一步是使用幾個基礎模型的快照提示,例如 Amazon Bedrock 中的 Llama 3,從非結構化醫療文字中擷取醫療概念。少量的提示是當您向 LLM 提供少量範例,示範任務和所需輸出,然後再要求它執行類似的任務時。使用 LLM 型醫療實體擷取器,您可以剖析非結構化醫療文字,然後產生醫療知識實體的結構化資料表示。您也可以存放用於下游分析和自動化的患者屬性。實體擷取程序包含下列動作:

下圖顯示實體擷取和結構描述驗證步驟,以建立實體、屬性和關係的有效配對組合。您可以在 Amazon Simple Storage Service (Amazon S3) 中存放非結構化資料,例如放電摘要或病患備註。您可以在 Amazon Redshift 和 Amazon DynamoDB 中存放結構化資料,例如企業資源規劃 (ERP) 資料、電子患者記錄和實驗室資訊系統。您可以建置 Amazon Bedrock 實體建立代理程式。此代理程式可以整合 Amazon SageMaker AI 資料擷取管道、Amazon Textract 和 Amazon Comprehend Medical 等服務,從結構化和非結構化資料來源中擷取實體、關係和屬性。最後,您可以使用 Amazon Bedrock 結構描述驗證代理程式來確保擷取的實體和關係符合預先定義的圖形結構描述,並維護節點邊緣連線和相關聯屬性的完整性。

實體擷取和結構描述驗證的工作流程。

在擷取和驗證實體、關係和屬性之後,您可以連結它們來建立subject-object-predicate三元組。您可以將此資料擷取至 Amazon Neptune 圖形資料庫,如下圖所示。圖形資料庫經過最佳化,可存放和查詢資料項目之間的關係。

將實體映射至其屬性的醫學知識圖表。

您可以使用此資料建立全面的知識圖表。知識圖表可協助您組織和查詢各種連線資訊。例如,您可以建立具有下列主要節點的知識圖表:HospitalVisitPastMedicalHistorySymptomsMedicationMedicalProceduresTreatment

下表列出您可能從放電備註中擷取的實體及其屬性。

實體 Attributes

Patient

PatientID, Name, Age, Gender, Address, ContactInformation

HospitalVisit

VisitDate, Reason, Notes

HealthcareProvider

ProviderID, Name, Specialty, ContactInformation, Address, AffiliatedInstitution

Symptoms

Description, RiskFactors

Allergies

AllergyType, Duration

Medication

MedicationID, Name, Description, Dosage, SideEffects, Manufacturer

PastMedicalHistory

ContinuingMedicines

MedicalCondition

ConditionName, Severity, TreatmentReceived, DoctorinCharge, HospitalName, MedicinesFollowed

BodyVitals

HeartRate, BloodPressure, RespiratoryRate, BodyTemperature, BMI

LabResult

LabResultID, PatientID, TestName, Result, Date

ClinicalTrial

TrialID, Name, Description, Phase, Status, StartDate, EndDate

GenomicData

GenomicDataID, PatientID, SequenceData, VariantInformation

Treatment

TreatmentID, Name, Description, Type, SideEffects

MedicalProcedure

ProcedureID, Name, Description, Risks, Outcomes

MedicalConcepts

UMLSCodes, MedicalVocabularies

下表列出實體可能擁有的關係及其對應的屬性。例如,Patient實體可能會連線到具有 [UNDERGOES]關係的HospitalVisit實體。此關係的屬性為 VisitDate

主體實體 關係 物件實體 Attributes

Patient

[UNDERGOES]

HospitalVisit

VisitDate

HospitalVisit

[VISIT_IN]

HealthcareProvider

ProviderName, Location, ProviderID, VisitDate

HospitalVisit

[OBSERVED_CONDITION]

Symptoms

Severity, CurrentStatus, VisitDate

HospitalVisit

[RECEIVED_TREATMENT]

Treatment

Duration, Dosage, VisitDate

HospitalVisit

[PRESCRIBED]

Medication

Duration, Dosage, Adherence, VisitDate

Patient

[HAS_HISTORY]

PastMedicalHistory

PastMedicalHistory

[HAD_CONDITION]

MedicalCondition

DiagnosisDate, CurrentStatus

HospitalVisit

[PARTICIPATES_IN]

ClinicalTrial

VisitDate, Status, Outcomes

Patient

[HAS_GENOMIC_DATA]

GenomicData

CollectionDate

HospitalVisit

[OBSERVED_ALLERGIES]

Allergies

VisitDate

HospitalVisit

[CONDUCTED_LAB_TEST]

LabResult

VisitDate, AnalysisDate, Interpretation

HospitalVisit

[UNDERGOES]

MedicalProcedure

VisitDate, Outcome

MedicalCondition

[HAS_TAGGED]

MedicalConcepts

LabResult

[HAS_TAGGED]

MedicalConcepts

Treatment

[HAS_TAGGED]

MedicalConcepts

Symptoms

[HAS_TAGGED]

MedicalConcepts

步驟 3:建置內容擷取代理程式來查詢醫學知識圖表

在您建置醫療圖形資料庫之後,下一步是建置圖形互動的代理程式。客服人員會擷取醫生或臨床醫生輸入的查詢正確且必要的內容。設定這些從知識圖表擷取內容的代理程式有幾個選項:

用於圖形互動的 Amazon Bedrock 代理程式

Amazon Bedrock 代理程式可與 Amazon Neptune 圖形資料庫無縫搭配使用。您可以透過 Amazon Bedrock 動作群組執行進階互動。動作群組會透過呼叫執行 Neptune openCypher 查詢的 AWS Lambda 函數來啟動程序。

若要查詢知識圖表,您可以使用兩種不同的方法:直接查詢執行或使用內容內嵌進行查詢。這些方法可以獨立套用或合併,視您的特定使用案例和排名條件而定。透過結合這兩種方法,您可以為 LLM 提供更全面的內容,從而改善結果。以下是兩種查詢執行方法:

  • 無內嵌的直接 Cypher 查詢執行 – Lambda 函數會直接針對 Neptune 執行查詢,無需任何內嵌型搜尋。以下是此方法的範例:

    MATCH (p:Patient)-[u:UNDERGOES]->(h:HospitalVisit) WHERE h.Reason = 'Acute Diabetes' AND date(u.VisitDate) > date('2024-01-01') RETURN p.PatientID, p.Name, p.Age, p.Gender, p.Address, p.ContactInformation
  • 使用內嵌搜尋直接執行 Cypher 查詢 – Lambda 函數使用內嵌搜尋來增強查詢結果。此方法透過整合內嵌來增強查詢執行,這是一種密集的資料向量表示法。當查詢需要語意相似性或超出完全相符範圍的理解時,內嵌特別有用。您可以使用預先訓練或自訂訓練的模型,為每個醫療條件產生內嵌。以下是此方法的範例:

    CALL { WITH "Acute Diabetes" AS query_term RETURN search_embedding(query_term) AS similar_reasons } MATCH (p:Patient)-[u:UNDERGOES]->(h:HospitalVisit) WHERE h.Reason IN similar reasons AND date(u.VisitDate) > date('2024-01-01') RETURN p.PatientID, p.Name, p.Age, p.Gender, p.Address, p.ContactInformation

    在此範例中, search_embedding("Acute Diabetes")函數會擷取語意上接近「急性糖尿病」的條件。這有助於查詢尋找具有糖尿病前期或新陳能綜合徵等條件的患者。

下圖顯示 Amazon Bedrock 代理程式如何與 Amazon Neptune 互動,以便對醫學知識圖表執行 Cypher 查詢。

Amazon Bedrock 代理程式與 Amazon Neptune 的整合。

該圖顯示以下工作流程:

  1. 使用者向 Amazon Bedrock 代理程式提交問題。

  2. Amazon Bedrock 代理程式會將問題和輸入篩選條件變數傳遞至 Amazon Bedrock 動作群組。這些動作群組包含與 Amazon SageMaker AI 文字內嵌端點和 Amazon Neptune 醫療知識圖表互動的 AWS Lambda 函數。

  3. Lambda 函數與 SageMaker AI 文字內嵌端點整合,以在 openCypher 查詢中執行語意搜尋。它會使用基礎LangChain代理程式,將自然語言查詢轉換為 openCypher 查詢。

  4. Lambda 函數會查詢 Neptune 醫療知識圖表以取得正確的資料集,並從 Neptune 醫療知識圖表接收輸出。

  5. Lambda 函數會將 Neptune 的結果傳回 Amazon Bedrock 動作群組。

  6. Amazon Bedrock 動作群組會將擷取的內容傳送至 Amazon Bedrock 代理程式。

  7. Amazon Bedrock 代理程式會使用原始使用者查詢和從知識圖表擷取的內容來產生回應。

LangChain 圖形互動的代理程式

您可以LangChain與 Neptune 整合,以啟用以圖形為基礎的查詢和擷取。這種方法可以透過使用 Neptune 中的圖形資料庫功能來增強 AI 驅動的工作流程。自訂LangChain擷取器可做為中介裝置。Amazon Bedrock 中的基礎模型可以使用直接 Cypher 查詢和更複雜的圖形演算法與 Neptune 互動。

您可以使用自訂擷取器來精簡LangChain代理程式與 Neptune 圖形演算法的互動方式。例如,您可以使用少量的提示,這可協助您根據特定模式或範例來量身打造基礎模型的回應。您也可以套用 LLM 識別篩選條件,以精簡內容並改善回應的精確度。這可以改善與複雜圖形資料互動時整體擷取程序的效率和準確性。

下圖顯示自訂LangChain代理程式如何協調 Amazon Bedrock 基礎模型與 Amazon Neptune 醫療知識圖表之間的互動。

LangChain 問題回答代理程式與 Amazon Neptune 的整合。

該圖顯示以下工作流程:

  1. 使用者向 Amazon Bedrock 和LangChain客服人員提交問題。

  2. Amazon Bedrock 基礎模型使用代理LangChain程式提供的 Neptune 結構描述來產生使用者問題的查詢。

  3. LangChain 代理程式會根據 Amazon Neptune 醫療知識圖表執行查詢。

  4. LangChain 代理程式會將擷取的內容傳送至 Amazon Bedrock 基礎模型。

  5. Amazon Bedrock 基礎模型使用擷取的內容來產生使用者問題的答案。

步驟 4:建立即時描述性資料的知識庫

接下來,您將建立即時、描述性醫生與患者互動備註、診斷影像評估和實驗室分析報告的知識庫。此知識庫是向量資料庫。透過使用向量資料庫,可將描述性醫學知識以索引化的向量化形式存放,醫療保健供應商可以有效率地從大量儲存庫查詢和存取相關資訊。這些向量化表示式可協助您擷取語意相似的資料。照護提供者可以快速瀏覽臨床備註、醫療影像和實驗室結果。這透過提供內容相關資訊的即時存取,提高診斷和治療計劃的準確性和速度,從而加速明智的決策。

使用 OpenSearch Service 醫療知識庫

Amazon OpenSearch Service 可以管理大量高維度醫療資料。它是一種受管服務,可促進高效能搜尋和即時分析。它非常適合做為 RAG 應用程式的向量資料庫。OpenSearch Service 可做為後端工具來管理大量非結構化或半結構化資料,例如醫療記錄、研究文章和臨床備註。其進階語意搜尋功能可協助您擷取內容相關資訊。這使得它在臨床決策支援系統、患者查詢解決工具和醫療保健知識管理系統等應用程式中特別有用。例如,臨床醫生可以快速找到符合特定症狀或治療協定的相關患者資料或研究。這有助於臨床醫生做出由up-to-date和相關資訊通知的決策。

OpenSearch Service 可以擴展和處理即時資料索引和查詢。這使得它非常適合動態醫療保健環境,這些環境需要及時存取準確的資訊。此外,它具有多模式搜尋功能,最適合需要多個輸入的搜尋,例如醫療影像和醫生備註。為醫療保健應用程式實作 OpenSearch Service 時,請務必定義精確的欄位和映射,以最佳化資料索引和擷取。欄位代表個別資料片段,例如病患記錄、醫療歷史記錄和診斷代碼。映射會定義存放和查詢這些欄位的方式 (內嵌形式或原始形式)。對於醫療保健應用程式,建立可適應各種資料類型的映射至關重要,包括結構化資料 (例如數值測試結果)、半結構化資料 (例如病患備註) 和非結構化資料 (例如醫療影像)

在 OpenSearch Service 中,您可以透過策劃的提示來執行全文神經搜尋查詢,以搜尋醫療記錄、臨床筆記或研究論文,以快速找到特定症狀、治療或病患歷史記錄的相關資訊。神經搜尋查詢會使用內建神經網路模型,自動處理輸入提示和映像的內嵌。這有助於其了解和擷取多模態資料中更深層的語意關係,相較於其他搜尋查詢演算法,可提供更了解內容和精確的搜尋結果,例如 k 近鄰 (k-NN) 搜尋。

建立 RAG 架構

您可以部署自訂 RAG 解決方案,該解決方案使用 Amazon Bedrock 代理程式在 OpenSearch Service 中查詢醫療知識庫。若要達成此目的,您可以建立可與 互動並查詢 OpenSearch Service 的 AWS Lambda 函數。Lambda 函數透過存取 SageMaker AI 文字內嵌端點來內嵌使用者的輸入問題。Amazon Bedrock 代理程式會將其他查詢參數做為輸入傳遞至 Lambda 函數。函數會查詢 OpenSearch Service 中的醫療知識庫,其會傳回相關的醫療內容。設定 Lambda 函數之後,請在 Amazon Bedrock 代理程式中將其新增為動作群組。Amazon Bedrock 代理程式會接受使用者的輸入、識別必要的變數、將變數和問題傳遞至 Lambda 函數,然後啟動函數。函數會傳回內容,以協助基礎模型為使用者的問題提供更準確的答案。

Amazon Bedrock 代理程式與 Amazon OpenSearch Service 上的醫療向量資料庫整合。

該圖顯示以下工作流程:

  1. 使用者向 Amazon Bedrock 代理程式提交問題。

  2. Amazon Bedrock 代理程式會選取要啟動的動作群組。

  3. Amazon Bedrock 代理程式會啟動 AWS Lambda 函數,並將參數傳遞給該函數。

  4. Lambda 函數會啟動 Amazon SageMaker AI 文字內嵌模型,以內嵌使用者問題。

  5. Lambda 函數會將內嵌文字和其他參數和篩選條件傳遞至 Amazon OpenSearch Service。Amazon OpenSearch Service 會查詢醫療知識庫,並將結果傳回 Lambda 函數。

  6. Lambda 函數會將結果傳回給 Amazon Bedrock 代理程式。

  7. Amazon Bedrock 代理程式中的基礎模型會根據結果產生回應,並將回應傳回給使用者。

對於涉及更複雜篩選的情況,您可以使用自訂LangChain擷取器。透過設定直接載入 的 OpenSearch Service 向量搜尋用戶端來建立此擷取器LangChain。此架構可讓您傳遞更多變數,以建立篩選條件參數。設定擷取器之後,請使用 Amazon Bedrock 模型和擷取器來設定擷取問答鏈。此鏈透過將使用者輸入和潛在篩選條件傳遞給擷取器,協調模型和擷取器之間的互動。擷取器會傳回相關內容,以協助基礎模型回答使用者的問題。

將LangChain擷取器代理程式與 OpenSearch Service 上的醫療向量資料庫整合。

該圖顯示以下工作流程:

  1. 使用者向LangChain擷取程式代理程式提交問題。

  2. LangChain 擷取器代理程式會將問題傳送至 Amazon SageMaker AI 文字內嵌端點,以內嵌問題。

  3. LangChain 擷取程式代理程式會將內嵌文字傳遞給 Amazon OpenSearch Service。

  4. Amazon OpenSearch Service 會將擷取的文件傳回給LangChain擷取器代理程式。

  5. LangChain 擷取器代理程式會將使用者問題和擷取的內容傳遞至 Amazon Bedrock 基礎模型。

  6. 基礎模型會產生回應並將其傳送給使用者。

步驟 5:使用 LLMs回答醫療問題

上述步驟可協助您建置醫療智慧應用程式,以擷取病患的醫療記錄,並摘要相關藥物和潛在診斷。現在,您可以建置產生層。此層使用 Amazon Bedrock 中 LLM 的生成功能,例如 Llama 3,來擴增應用程式的輸出。

當臨床醫生輸入查詢時,應用程式的內容擷取層會從知識圖表執行擷取程序,並傳回與病患歷史記錄、人口統計特性、症狀、診斷和結果相關的最高記錄。從向量資料庫中,它還從醫學研究和學術書籍的龐大組合中擷取即時、描述性的醫生與患者互動備註、診斷影像評估洞察、實驗室分析報告摘要和洞察。這些最常擷取的結果、臨床醫生的查詢和提示 (根據查詢的性質量身打造來策劃答案),接著會傳遞到 Amazon Bedrock 中的基礎模型。這是回應產生層。LLM 使用擷取的內容來產生對臨床醫生查詢的回應。下圖顯示此解決方案中步驟的end-to-end工作流程。

使用 AWS 服務 和 LLM 產生醫療問題的答案。

您可以針對醫療智慧應用程式必須處理的一系列使用案例,在 Amazon Bedrock 中使用預先訓練的基礎模型,例如 Llama 3。指定任務最有效的 LLM 會根據使用案例而有所不同。例如,預先訓練的模型可能足以總結病患醫生對話、搜尋藥物和病患歷史記錄,以及從內部醫療資料集和科學知識內文中擷取洞見。不過,其他複雜的使用案例可能需要微調 LLM,例如即時實驗室評估、醫療程序建議,以及患者結果的預測。您可以在醫療網域資料集上進行訓練,以微調 LLM。特定或複雜的醫療保健和生命科學需求可推動這些微調模型的開發。

如需微調 LLM 或選擇已針對醫療網域資料進行訓練之現有 LLM 的詳細資訊,請參閱使用大型語言模型進行醫療保健和生命科學使用案例

符合 AWS Well-Architected 架構

解決方案符合 AWS Well-Architected Framework 的所有六個支柱,如下所示:

  • 卓越營運 – 架構會分離,以實現高效的監控和更新。Amazon Bedrock 代理程式和 AWS Lambda 可協助您快速部署和復原工具。

  • 安全性 – 此解決方案的設計符合醫療保健法規,例如 HIPAA。您也可以實作加密、精細存取控制和 Amazon Bedrock 護欄,以協助保護病患資料。

  • 可靠性 – AWS 受管服務,例如 Amazon OpenSearch Service 和 Amazon Bedrock,提供持續模型互動的基礎設施。

  • 效能效率 – RAG 解決方案會使用最佳化語意搜尋和 Cypher 查詢快速擷取相關資料,同時代理程式路由器會識別使用者查詢的最佳路由。

  • 成本最佳化 – Amazon Bedrock 和 RAG 架構中的pay-per-token模型可降低推論和預先訓練成本。

  • 永續性 – 使用無伺服器基礎設施和pay-per-token運算可將資源使用量降至最低,並增強永續性。