医療の分野では、患者ケアを強化し、研究手法を改善するには、先進技術を取り入れることが不可欠です。検索拡張生成 (RAG) は、これらの先駆的なイノベーションの 1 つであり、大規模言語モデル (LLM) の力と外部知識の検索を融合させています。 RAG システムは、データベース、科学文献、患者記録から関連情報を引き出すことで、より正確で状況に応じて充実した対応基盤を提供し、純粋な LLM でよく見られる古い情報や幻覚などの制限に対処します。
この概要では、創薬や臨床試験などのアプリケーションを変革する可能性に焦点を当て、ヘルスケアにおける RAG の役割の拡大について探っていきます。また、NVIDIA の LangChain エンドポイントや Ragas フレームワークなどの医療 RAG システムの固有の要求を評価するために必要な方法とツールと、PubMed Central からの患者レポートのコレクションである MACCROBAT データセットについても詳しく説明します。
スケーラビリティ: 医療データは CAGR 35% 以上で拡大しているため、RAG システムは、特にタイムリーな洞察が患者ケアに影響を与える可能性があるシナリオでは、速度を犠牲にすることなく情報を効率的に管理し、取得する必要があります。
専門的な言語と知識の要件: 医療用語集や内容は、金融や法律などの他の分野とは大幅に異なるため、医療 RAG システムはドメイン固有の調整が必要です。
カスタマイズされた評価指標の欠如: 汎用 RAG アプリケーションとは異なり、医療用 RAG には適切なベンチマークがありません。従来の指標 (BLEU や ROUGE など) は、医療の文脈で重要な事実の正確さよりも、テキストの類似性を強調します。
コンポーネントごとの評価: 効果的な評価には、取得コンポーネントと生成コンポーネントの両方を独立して精査する必要があります。取得では、関連する現在のデータを取得する必要があり、生成コンポーネントでは、取得したコンテンツが忠実であることを確認する必要があります。
オープンソースの評価フレームワークである Ragas は、RAG パイプラインを評価するための自動化されたアプローチを提供します。そのツールキットは、コンテキストの関連性、再現性、忠実性、回答の関連性に焦点を当てています。 Ragas は、LLM-as-a-judge モデルを利用することで、データに手動で注釈を付ける必要性を最小限に抑え、プロセスを効率的かつコスト効率の高いものにしています。
堅牢な RAG 評価を行うには、次の手順を検討してください:
これがパイプラインの例です。「うっ血性心不全における典型的な血圧測定値は何ですか?」のような質問が与えられました。システムはまず関連するコンテキストを取得し、次に応答が質問に正確に対応しているかどうかを評価します。
手順を進めるには、NVIDIA アカウントを作成し、API キーを取得します。
を使用して必要なパッケージをインストールします。
pip install langchain pip install langchain_nvidia_ai_endpoints pip install ragas
LangChain 経由でロードして処理できる包括的な医療記録を提供する MACCROBAT データセットをダウンロードします。
from langchain_community.document_loaders import HuggingFaceDatasetLoader from datasets import load_dataset dataset_name = "singh-aditya/MACCROBAT_biomedical_ner" page_content_column = "full_text" loader = HuggingFaceDatasetLoader(dataset_name, page_content_column) dataset = loader.load()
NVIDIA エンドポイントと LangChain を使用して、堅牢なテスト セット ジェネレーターを構築し、データセットに基づいて合成データを作成できるようになりました。
from ragas.testset.generator import TestsetGenerator from langchain_nvidia_ai_endpoints import ChatNVIDIA, NVIDIAEmbeddings critic_llm = ChatNVIDIA(model="meta/llama3.1-8b-instruct") generator_llm = ChatNVIDIA(model="mistralai/mixtral-8x7b-instruct-v0.1") embeddings = NVIDIAEmbeddings(model="nv-embedqa-e5-v5", truncate="END") generator = TestsetGenerator.from_langchain( generator_llm, critic_llm, embeddings, chunk_size=512 ) testset = generator.generate_with_langchain_docs(dataset, test_size=10)
RAG システムをベクター ストアに展開し、実際の医療レポートからサンプル質問を生成します:
# Sample questions ["What are typical BP measurements in the case of congestive heart failure?", "What can scans reveal in patients with severe acute pain?", "Is surgical intervention necessary for liver metastasis?"]
各質問は、取得されたコンテキストと生成されたグラウンド トゥルースの回答にリンクされており、取得コンポーネントと生成コンポーネントの両方のパフォーマンスを評価するために使用できます。
医療用 RAG システムでは、検索精度を評価するためにカスタム メトリックが必要な場合があります。たとえば、メトリクスは、取得されたドキュメントが検索クエリに十分関連しているかどうかを判断できます:
from dataclasses import dataclass, field from ragas.evaluation.metrics import MetricWithLLM, Prompt RETRIEVAL_PRECISION = Prompt( name="retrieval_precision", instruction="Is this result relevant enough for the first page of search results? Answer '1' for yes and '0' for no.", input_keys=["question", "context"] ) @dataclass class RetrievalPrecision(MetricWithLLM): name: str = "retrieval_precision" evaluation_mode = EvaluationMode.qc context_relevancy_prompt: Prompt = field(default_factory=lambda: RETRIEVAL_PRECISION) # Use this custom metric in evaluation score = evaluate(dataset["eval"], metrics=[RetrievalPrecision()])
効率的で信頼性の高い評価を行うために、構造化された出力により処理が簡素化されます。 NVIDIA の LangChain エンドポイントを使用して、LLM 応答を事前定義されたカテゴリ (はい/いいえなど) に構造化します。
import enum class Choices(enum.Enum): Y = "Y" N = "N" structured_llm = nvidia_llm.with_structured_output(Choices) structured_llm.invoke("Is this search result relevant to the query?")
RAG は、LLM と高密度ベクトル検索の橋渡しを行い、医療、多言語、コード生成の各ドメインにわたる高効率でスケーラブルなアプリケーションを実現します。ヘルスケアでは、正確で状況を認識した応答をもたらす可能性は明らかですが、評価では精度、領域の特異性、コスト効率を優先する必要があります。
合成テスト データ、NVIDIA エンドポイント、および Ragas を使用する概説された評価パイプラインは、これらの要求を満たす堅牢な方法を提供します。さらに詳しく知りたい場合は、GitHub で Ragas と NVIDIA Generative AI のサンプルを探索してください。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3