Spaces:
Sleeping
Sleeping
| 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](#insuregpt) | |
| - [目錄](#目錄) | |
| - [專案介紹](#專案介紹) | |
| - [環境與安裝](#環境與安裝) | |
| - [資料準備](#資料準備) | |
| - [上傳資料到 Embedding Database](#上傳資料到-embedding-database) | |
| - [使用方式](#使用方式) | |
| - [使用 Streamlit 啟動應用程式](#使用-streamlit-啟動應用程式) | |
| - [使用方式](#使用方式-1) | |
| - [注意事項](#注意事項) | |
| ## 專案介紹 | |
| InsureGPT 結合了以下三個主要模組: | |
| 1. **資料準備**以 JSON 檔案格式整理保險相關資料,資料中包含文件 ID、詳細的 metadata(大分類、子類別、描述、適用對象、保障範圍、特色等)以及文件內容。 | |
| 2. **上傳資料**使用 `create_database.py` 腳本將 JSON 資料載入 ChromaDB,並利用 FlagEmbedding 模型生成文本的向量表示,確保資料可供後續檢索使用。 | |
| 3. **基於 Streamlit 的 GPT like 實作** | |
| 使用 `app.py` 搭配 Streamlit 建立一個互動式保險顧問應用。當使用者輸入問題時,系統會判斷是否需要透過 RAG 功能檢索資料庫,並整合檢索結果與使用者問題發送給 Google Gemini 模型產生回答。 | |
| ## 環境與安裝 | |
| ```bash | |
| git lfs install | |
| git clone https://huggingface.co/spaces/Kappa7077/InsurenceGPT | |
| cd InsurenceGPT | |
| pip install -r requirements.txt | |
| ``` | |
| ## 資料準備 | |
| 請先準備一份符合下列格式的 JSON 檔案,範例格式如下: | |
| ```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 的文件則進行更新,否則新增記錄 | |
| * 輸出載入或更新狀態,並顯示資料庫中總筆數 | |
| ### 使用方式 | |
| 在終端機中執行以下指令: | |
| ```bash | |
| python create_database.py <json_path> <chromadb_path> <collection_name> | |
| ``` | |
| 例如: | |
| ```bash | |
| 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 模型生成回答 | |
| ### 使用方式 | |
| 在終端機中執行以下指令啟動應用程式: | |
| ```bash | |
| streamlit run app.py | |
| ``` | |
| 啟動後,請依照網頁上的介面輸入問題,即可獲得 InsureGPT 提供的保險諮詢服務。 | |
| ## 注意事項 | |
| * **API 金鑰設定** :請確認 `app.py` 中的 Google Gemini API 金鑰(`GEMINI_API_KEY`)已正確設定,否則模型可能無法正常呼叫。 | |
| * **資料更新** :如需更新保險資料,請修改 JSON 檔案後,重新執行 `create_database.py` 將最新資料上傳至 ChromaDB。 | |
| * **專案用途** :本專案僅供學術及實驗用途,實際應用前請進行充分測試與驗證,以確保資訊準確性及安全性。 | |
| ``` | |
| ``` | |