Spaces:
Sleeping
Sleeping
A newer version of the Streamlit SDK is available:
1.52.2
metadata
title: InsurenceGPT
emoji: 👀
colorFrom: green
colorTo: indigo
sdk: streamlit
sdk_version: 1.42.0
app_file: app.py
pinned: false
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
InsureGPT
InsureGPT 是一個基於 Retrieval Augmented Generation (RAG) 機制的免費專案,旨在提供保險專業諮詢服務。透過整合保險資料庫與 Google Gemini 生成模型,使用者可以藉由互動問答獲得專業的保險建議與方案推薦。此專案亦可透過修改資料庫內容及主程式碼中的背景設定,應用於其他領域。
目錄
專案介紹
InsureGPT 結合了以下三個主要模組:
- 資料準備以 JSON 檔案格式整理保險相關資料,資料中包含文件 ID、詳細的 metadata(大分類、子類別、描述、適用對象、保障範圍、特色等)以及文件內容。
- 上傳資料使用
create_database.py腳本將 JSON 資料載入 ChromaDB,並利用 FlagEmbedding 模型生成文本的向量表示,確保資料可供後續檢索使用。 - 基於 Streamlit 的 GPT like 實作
使用
app.py搭配 Streamlit 建立一個互動式保險顧問應用。當使用者輸入問題時,系統會判斷是否需要透過 RAG 功能檢索資料庫,並整合檢索結果與使用者問題發送給 Google Gemini 模型產生回答。
環境與安裝
git lfs install
git clone https://huggingface.co/spaces/Kappa7077/InsurenceGPT
cd InsurenceGPT
pip install -r requirements.txt
資料準備
請先準備一份符合下列格式的 JSON 檔案,範例格式如下:
[
{
"id": "doc_001",
"metadata": {
"大分類": "保險基本資訊",
"子類別": "第三責任險(含體傷、財損)",
"描述": "當騎車導致第三人(非自己)受傷、身故或財損時,提供賠償保障。",
"適用對象": "對方駕駛,對方乘客,對方車輛",
"保障範圍_體傷": "賠償第三人因事故造成的醫療費用、後續治療或死亡補償。",
"保障範圍_財損": "補償因事故導致的財物損失,例如對方車輛或財產毀損。",
"特色": "可涵蓋第三人的醫療與財務損失,推薦外送員與高頻騎士加保。"
},
"text": "{\n \"類別\": \"第三責任險(含體傷、財損)\",\n \"描述\": \"當騎車導致第三人(非自己)受傷、身故或財損時,提供賠償保障。\",\n \"適用對象\": [\n \"對方駕駛\",\n \"對方乘客\",\n \"對方車輛\"\n ],\n \"保障範圍\": {\n \"體傷\": \"賠償第三人因事故造成的醫療費用、後續治療或死亡補償。\",\n \"財損\": \"補償因事故導致的財物損失,例如對方車輛或財產毀損。\"\n },\n \"特色\": \"可涵蓋第三人的醫療與財務損失,推薦外送員與高頻騎士加保。\"\n}"
},
{
"id": "doc_002",
"metadata": {
"大分類": "保險基本資訊",
"子類別": "強制險",
"描述": "政府規定必須投保的基本保險,保障機車事故造成的駕駛人以外的受害者(行人、乘客、對方車輛駕駛)。",
"適用對象": "對方駕駛,對方乘客,我方乘客",
"保障範圍_體傷": "保障受害人(非駕駛)因事故造成的醫療與身故補償。",
"保障範圍_身故": "受害人死亡時提供家屬撫恤金。",
"特色": "法規強制要求,所有機車皆須投保,為最基本的保障方案。"
},
"text": "{\n \"類別\": \"強制險\",\n \"描述\": \"政府規定必須投保的基本保險,保障機車事故造成的駕駛人以外的受害者(行人、乘客、對方車輛駕駛)。\",\n \"適用對象\": [\n \"對方駕駛\",\n \"對方乘客\",\n \"我方乘客\"\n ],\n \"保障範圍\": {\n \"體傷\": \"保障受害人(非駕駛)因事故造成的醫療與身故補償。\",\n \"身故\": \"受害人死亡時提供家屬撫恤金。\"\n },\n \"特色\": \"法規強制要求,所有機車皆須投保,為最基本的保障方案。\"\n}"
}
]
請依照實際需求更新文件內容與結構。
上傳資料到 Embedding Database
使用 create_database.py 腳本將 JSON 資料載入至 ChromaDB,主要流程包括:
- 讀取 JSON 檔案中的保險資料
- 利用 FlagEmbedding 模型產生每筆資料的嵌入向量
- 若資料庫中已存在相同 ID 的文件則進行更新,否則新增記錄
- 輸出載入或更新狀態,並顯示資料庫中總筆數
使用方式
在終端機中執行以下指令:
python create_database.py <json_path> <chromadb_path> <collection_name>
例如:
python create_database.py data.json ./chroma_db insurance_database
其中:
<json_path>為 JSON 資料檔案路徑<chromadb_path>為向量資料庫的儲存路徑<collection_name>為資料庫中集合的名稱
使用 Streamlit 啟動應用程式
app.py 為基於 Streamlit 的互動式應用程式,主要功能包括:
- 提供使用者輸入保險相關問題的介面
- 根據使用者問題判斷是否需要進行資料庫檢索(RAG 功能)
- 使用 FlagEmbedding 模型產生使用者輸入的嵌入向量
- 從 ChromaDB 中查詢並檢索相關保險文件
- 整合檢索到的內容與問題,並發送給 Google Gemini 模型生成回答
使用方式
在終端機中執行以下指令啟動應用程式:
streamlit run app.py
啟動後,請依照網頁上的介面輸入問題,即可獲得 InsureGPT 提供的保險諮詢服務。
注意事項
- API 金鑰設定 :請確認
app.py中的 Google Gemini API 金鑰(GEMINI_API_KEY)已正確設定,否則模型可能無法正常呼叫。 - 資料更新 :如需更新保險資料,請修改 JSON 檔案後,重新執行
create_database.py將最新資料上傳至 ChromaDB。 - 專案用途 :本專案僅供學術及實驗用途,實際應用前請進行充分測試與驗證,以確保資訊準確性及安全性。