Medical-Graph-RAG(或稱 MedGraphRAG)是一種專為醫療領域設計的創新框架,它結合了知識圖譜(Knowledge Graph)檢索增強生成(Retrieval-Augmented Generation, RAG)技術,旨在提升大型語言模型(Large Language Models, LLMs)在醫療應用中的性能與可靠性。該框架通過構建一個分層圖譜結構,將醫療信息從多個來源(如用戶提供的文檔、可靠的醫學論文和基礎醫學詞典)進行組織和整合,提供基於證據透明可解釋的回答,特別適用於處理敏感的醫療數據和複雜的醫學查詢。


背景

大型語言模型在自然語言處理方面表現出色,但在醫療等專業領域中仍面臨挑戰,例如:

  • 上下文處理限制:難以有效處理大量醫療文檔中的全局信息。
  • 信息準確性問題:可能生成不準確或虛構的內容(即「幻覺」)。
  • 領域特定數據利用不足:無法充分利用醫療領域的私有或專業知識。

為了解決這些問題,傳統的 RAG 技術通過從外部知識源檢索相關信息來增強 LLMs 的回答。然而,標準 RAG 在處理全局性查詢或大量文檔的查詢焦點摘要(Query-Focused Summarization, QFS)時效果有限。Medical-Graph-RAG 在此基礎上引入了圖譜結構,進一步提升了醫療領域的應用效果。


Medical-Graph-RAG 的核心特點

Medical-Graph-RAG 通過以下幾個關鍵特點解決了上述挑戰:

1. 分層圖譜構建(Hierarchical Graph Construction)

  • 三層結構
  1. 第一層:從用戶提供的醫療文檔(例如電子病歷)中提取實體。
  2. 第二層:將這些實體與從可靠醫學書籍和論文中提取的基礎醫學知識相連。
  3. 第三層:進一步連接到基礎醫學詞典圖譜,提供詳細的醫學術語解釋和語義關係。
  • 元圖譜(Meta-Graphs):通過語義相似性將提取的實體組織成元圖譜,並最終合併成一個全面的全局圖譜,確保知識的連貫性和完整性。

2. 先進的文檔分塊(Advanced Document Chunking)

  • 混合靜態-語義方法:不同於傳統的基於令牌大小或固定字符的分塊,Medical-Graph-RAG 採用混合方法:
  1. 首先通過靜態字符分隔段落。
  2. 然後對每個段落進行語義分析,提取獨立語句(命題),保留上下文完整性。

3. 實體提取與連接(Entity Extraction and Linking)

  • 實體識別:利用 LLMs 提示從文檔中提取醫療實體(如疾病、治療方法)。
  • 跨層連接:將實體與不同層次的醫學知識連接,形成結構化的知識表示,提升信息檢索的準確性。

4. 高效的檢索方法(Efficient Retrieval)

  • U-Retrieval:結合自上而下的精確檢索和自下而上的響應優化,平衡全局上下文感知與精確索引,確保檢索結果既相關又準確。

5. 基於證據的響應(Evidence-Based Responses)

  • 引文支持:回答附帶原始來源的引文,增強可信度和透明度,便於醫學專業人員驗證。
  • 術語解釋:提供清晰的醫學術語解釋,幫助用戶理解複雜概念。

優勢與應用

Medical-Graph-RAG 通過整合圖譜結構和 RAG 技術,在醫療領域帶來顯著優勢:

  • 準確性提升:多層次知識連接和精確檢索確保回答基於最新、可靠的醫學信息。
  • 透明度和可解釋性:每個回答附帶來源引文,方便追蹤信息出處,這在醫療領域尤為重要。
  • 適應性強:無需對 LLMs 進行廣泛微調即可應用於多種模型,包括較小模型,降低實施成本。
  • 應用場景廣泛:已在醫療問答基準測試中展現優於現有模型的性能,適用於輔助診斷、治療建議和患者教育等場景。

總結

Medical-Graph-RAG 是一種創新的醫療領域框架,通過圖譜檢索增強生成技術提升了大型語言模型的可靠性和有效性。其分層圖譜結構、先進文檔處理和高效檢索方法確保了回答的準確性透明度可解釋性,特別適合醫療應用中對高精度和可信度的需求。隨著技術的發展,Medical-Graph-RAG 有望在提升醫療服務質量、診斷效率和患者安全方面發揮重要作用。


如何安裝 Medical-Graph-RAG

以下是安裝和設置 Medical-Graph-RAG 的完整步驟,幫助您順利開始使用這個工具:

1. 安裝 Python 套件

  • 首先,您需要安裝 knowledge_graph_rag 套件。請在終端機或命令行中輸入以下指令:
  pip install knowledge_graph_rag
  • 這將下載並安裝所需的 Python 套件。

2. 準備資料

  • Medical-Graph-RAG 需要醫療相關的資料才能運作。您可以準備醫療文件或研究論文作為輸入資料。
  • 例如,您可以使用來自 PubMed 的研究文章作為示例資料集。

3. 創建知識圖譜

  • 使用 KnowledgeGraph 類別來創建知識圖譜。以下是一個簡單的 Python 程式碼範例:
  documents = [
      "Cardiovascular disease ...",
      "Emerging therapeutic interventions ...",
      "The epidemiological burden ...",
      "Cardiovascular disease also ...",
      "Advanced imaging techniques ...",
      "Role of novel biomarkers ..."
  ]
  knowledge_graph = KnowledgeGraph(documents)
  knowledge_graph.create()
  knowledge_graph.plot()
  • 這段程式碼會根據提供的文件列表生成知識圖譜,並可視化結果。

4. 構建文檔圖譜

  • 使用 DocumentsGraph 類別來構建文檔圖譜:
  documents_graph = DocumentsGraph(documents=documents)
  documents_graph.plot()
  • 這一步將文件組織成圖譜結構,便於後續查詢。

5. 執行查詢

  • 您可以使用知識圖譜來執行查詢。例如:
  knowledge_graph.search_document(user_query)
  • 這將返回與您的查詢相關的實體和關係。

6. 整合到應用程式

  • 若需將 Medical-Graph-RAG 整合到更大的 Python 應用程式中,您需要:
  • 設置語言模型。
  • 加載上下文資料。
  • 構建搜索功能。
  • 具體實現方式取決於您的應用程式需求。

7. 使用 Docker

  • 如果您想快速試用,Medical-Graph-RAG 提供 Docker 演示版本。請執行以下指令:
  docker run -it --rm --storage-opt size=10G -p 7860:7860 -e OPENAI_API_KEY=your_key -e NCBI_API_KEY=your_key medrag-post
  • 注意:請將 your_key 替換為您的 OpenAI API 密鑰NCBI API 密鑰

8. 運行腳本

  • 您也可以使用提供的 run.py 腳本來運行 Medical-Graph-RAG:
  python run.py -simple True
  • 這將使用預設的 RAG 文檔(例如 ./dataset_ex/report_0.txt)和提示來運行程式。

9. 自定義設置

  • 若需更高級的配置,您可以自定義運行參數,例如:
  python run.py -dataset mimic_ex -data_path ./dataset/mimic_ex -grained_chunk -ingraphmerge -construct_graph
  • 這些參數允許您指定資料集路徑、啟用圖譜合併或細分資料塊等功能。

10. 注意事項

  • 使用 Medical-Graph-RAG 時,請確保輸入資料的準確性和可靠性。
  • 該工具的優勢在於提供基於證據的響應,並確保結果的可信度和透明度。

總結

按照以上步驟,您可以成功安裝並開始使用 Medical-Graph-RAG。從安裝套件到準備資料、創建圖譜、執行查詢,甚至使用 Docker 或自定義設置,這些步驟涵蓋了從入門到進階的所有需求。希望這些說明對您有幫助!


本地安裝

您可以使用 Ollama + DeepSeek 來代替 OpenAI API。Ollama 是一個功能強大的工具,允許您在本地運行大型語言模型(LLMs),而 DeepSeek 是一個開源的語言模型,具備出色的自然語言處理能力,非常適合替代 OpenAI 的服務。以下是如何安裝和設置的詳細步驟:


步驟 1:安裝 Ollama

  1. 下載 Ollama
    前往 Ollama 官方網站,根據您的操作系統(Windows、macOS 或 Linux)下載對應的安裝包。
  2. 完成安裝
    下載後,按照提示完成安裝程序。
  3. 驗證安裝
    安裝完成後,打開終端機(或命令行),輸入以下命令確認是否成功:
   ollama --version

如果顯示版本號,代表安裝成功。


步驟 2:下載並運行 DeepSeek 模型

  1. 確認模型名稱
    Ollama 支援多種模型,包括 DeepSeek。您需要確認 Ollama 模型庫中是否有 DeepSeek 或其具體版本名稱(可在官方文檔或模型庫中查詢)。
  2. 下載 DeepSeek 模型
    在終端機中輸入以下命令以下載模型(假設模型名稱為 deepseek,請根據實際名稱調整):
   ollama pull deepseek
  1. 啟動模型
    下載完成後,使用以下命令啟動 DeepSeek 模型:
   ollama run deepseek

這將在本地運行模型,並提供一個類似 OpenAI 的 API 端點(預設為 http://localhost:11434)。


如何代替 OpenAI API

Ollama 的 API 與 OpenAI API 相似,您可以通過簡單修改代碼,將現有依賴 OpenAI 的項目切換到 Ollama + DeepSeek。以下是具體方法:

  • 修改代碼示例
    如果您原本使用 OpenAI API,例如:
  import openai
  openai.api_key = 'your_openai_key'
  response = openai.Completion.create(
      model="gpt-3.5-turbo",
      prompt="查詢",
      max_tokens=100
  )

修改後使用 Ollama API:

  import requests
  url = "http://localhost:11434/v1/completions"
  headers = {"Content-Type": "application/json"}
  data = {
      "model": "deepseek",  # 確認模型名稱正確
      "prompt": "查詢",
      "max_tokens": 100
  }
  response = requests.post(url, headers=headers, json=data)
  • 注意事項
    Ollama API 的參數可能與 OpenAI API 略有不同,請參考 Ollama 官方文檔 確認具體參數格式。

步驟 3:測試與確認

  1. 確保 Ollama 服務正在運行(執行 ollama run deepseek)。
  2. 運行修改後的代碼,檢查是否能正常收到回應。
  3. 如果出現問題,可查看終端機中的 Ollama 日誌或代碼錯誤訊息進行調試。

額外建議(可選)

  • 優化性能
    如果您的硬體資源有限,可以選擇較小的 DeepSeek 模型版本,以減少記憶體和計算需求。
  • GPU 加速
    如果您的設備支援 GPU,Ollama 提供 GPU 加速功能,可顯著提升模型運行效率。

總結

是的,Ollama + DeepSeek 可以很好地替代 OpenAI API,且安裝和使用都非常簡單:

  1. 從官網下載並安裝 Ollama。
  2. 下載並運行 DeepSeek 模型。
  3. 修改代碼,將 API 請求指向本地端點 http://localhost:11434

這樣,您就能在本地運行強大的語言模型,無需依賴 OpenAI 的雲端服務,同時享受開源模型的靈活性和優勢!