Medical-Graph-RAG 介紹
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)
- 三層結構:
- 第一層:從用戶提供的醫療文檔(例如電子病歷)中提取實體。
- 第二層:將這些實體與從可靠醫學書籍和論文中提取的基礎醫學知識相連。
- 第三層:進一步連接到基礎醫學詞典圖譜,提供詳細的醫學術語解釋和語義關係。
- 元圖譜(Meta-Graphs):通過語義相似性將提取的實體組織成元圖譜,並最終合併成一個全面的全局圖譜,確保知識的連貫性和完整性。
2. 先進的文檔分塊(Advanced Document Chunking)
- 混合靜態-語義方法:不同於傳統的基於令牌大小或固定字符的分塊,Medical-Graph-RAG 採用混合方法:
- 首先通過靜態字符分隔段落。
- 然後對每個段落進行語義分析,提取獨立語句(命題),保留上下文完整性。
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
- 下載 Ollama
前往 Ollama 官方網站,根據您的操作系統(Windows、macOS 或 Linux)下載對應的安裝包。 - 完成安裝
下載後,按照提示完成安裝程序。 - 驗證安裝
安裝完成後,打開終端機(或命令行),輸入以下命令確認是否成功:
ollama --version
如果顯示版本號,代表安裝成功。
步驟 2:下載並運行 DeepSeek 模型
- 確認模型名稱
Ollama 支援多種模型,包括 DeepSeek。您需要確認 Ollama 模型庫中是否有 DeepSeek 或其具體版本名稱(可在官方文檔或模型庫中查詢)。 - 下載 DeepSeek 模型
在終端機中輸入以下命令以下載模型(假設模型名稱為deepseek
,請根據實際名稱調整):
ollama pull deepseek
- 啟動模型
下載完成後,使用以下命令啟動 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:測試與確認
- 確保 Ollama 服務正在運行(執行
ollama run deepseek
)。 - 運行修改後的代碼,檢查是否能正常收到回應。
- 如果出現問題,可查看終端機中的 Ollama 日誌或代碼錯誤訊息進行調試。
額外建議(可選)
- 優化性能
如果您的硬體資源有限,可以選擇較小的 DeepSeek 模型版本,以減少記憶體和計算需求。 - GPU 加速
如果您的設備支援 GPU,Ollama 提供 GPU 加速功能,可顯著提升模型運行效率。
總結
是的,Ollama + DeepSeek 可以很好地替代 OpenAI API,且安裝和使用都非常簡單:
- 從官網下載並安裝 Ollama。
- 下載並運行 DeepSeek 模型。
- 修改代碼,將 API 請求指向本地端點
http://localhost:11434
。
這樣,您就能在本地運行強大的語言模型,無需依賴 OpenAI 的雲端服務,同時享受開源模型的靈活性和優勢!