AI APPLICATION · GRADUATION PROJECT

2025

TravelAI
高信賴度台灣
旅遊規劃助理

結合 RAG、生成式 AI、向量資料庫與地理空間演算法, 降低 AI 推薦不存在景點、錯誤地點與不合理路線的問題。

TravelAI 智慧旅遊規劃系統首頁
ROLE 主要開發者
TEAM 2 人團隊
TYPE 大學畢業專題
PLATFORM Responsive Web App
01 · OVERVIEW

讓 AI 規劃行程,也能建立在真實資料上

一般生成式 AI 雖然能快速產生旅遊建議, 卻可能推薦不存在、已歇業或位於其他縣市的地點。 TravelAI 嘗試在生成速度與資訊可靠性之間取得平衡。

問題

規劃自由行需要同時處理地點、時間、交通與天氣, 而通用大型語言模型缺少即時且可驗證的在地資料。

1
推薦不存在或已經歇業的景點與店家
2
將其他縣市的地點錯誤安排進行程
3
多日行程缺乏合理的地理順序

目標

先從經過整理的景點資料中檢索真實候選項目, 再交由 Gemini 規劃行程,並透過演算法與即時 API 補足地理、交通、天氣與營業資訊。

02 · SOLUTION

檢索、生成、驗證,再最佳化

系統不是讓模型直接憑空回答,而是建立多層資料流程, 讓產生的旅遊行程更容易被驗證與實際執行。

01 · RAG

以真實景點作為生成基礎

使用 Supabase 與 pgvector 進行語意搜尋, Gemini 僅能從檢索結果中挑選景點,降低虛構內容。

02 · GEO

改善多日行程的地理順序

使用 K-Means 將景點依地理位置分群, 再以最近鄰演算法安排每日順序與午餐時段。

03 · LIVE DATA

整合即時天氣與地點資訊

串接中央氣象署與 Google Places, 補充天氣、評分、照片、營業狀態及交通資訊。

03 · ARCHITECTURE

從自然語言,到可操作的旅遊行程

前端使用 React 與 Vite,後端部署於 Vercel Serverless, 並將 Supabase、Gemini、Google Maps 與中央氣象署資料串成完整流程。

TravelAI 系統架構圖
系統架構:前端、後端、資料庫與外部服務 TRAVELAI · 2025
04 · PROCESS

行程生成流程

01

解析需求

從自然語言中取得縣市、天數與旅遊偏好。

02

平行查詢

同步取得天氣資料,並從向量資料庫檢索景點。

03

建立上下文

將真實景點與天氣資訊整理成結構化 Prompt。

04

生成行程

由 Gemini 產生可解析的行程 JSON。

05

路線最佳化

依座標分群、排序,並補充交通與地點資訊。

05 · EXPERIENCE

讓等待中的每一步,都能被看見

完整行程需要經過多個 AI 與資料查詢階段。 系統使用 SSE 回傳即時進度,避免使用者面對沒有回應的空白畫面。

06 · MY ROLE

兩人團隊,由我負責主要系統開發

我的角色

本專題為兩人團隊共同完成,我擔任主要開發者, 負責大部分系統設計與程式實作。 專題方向、測試與成果整理則由團隊共同討論完成。

架構 前後端、資料庫及外部服務流程設計
AI Gemini、RAG、Embedding 與召回策略
演算法 景點分群、路線排序與午餐時段最佳化
整合 Supabase、Google Maps、氣象署 API
部署 Vercel Serverless 與效能改善

技術使用

React 18 Vite Tailwind CSS Gemini 2.5 Flash RAG Supabase PostgreSQL pgvector Google Maps API CWA API Leaflet Vercel SSE

開發挑戰與
解決方式

Vercel Serverless 執行逾時

將照片、評分等非必要查詢移至前端, 並以 Promise.all 平行執行天氣與 RAG 檢索, 降低後端等待時間。

生成式 AI 幻覺

使用 RAG 候選資料作為白名單, 再以 Google Places 確認地點狀態, 減少虛構店家及地理錯置。

長時間生成造成使用者不安

改用 Server-Sent Events 分階段回傳處理狀態, 讓使用者知道系統正在解析需求、檢索與生成。

WHAT I LEARNED

好的 AI 應用,不只需要生成答案, 更需要能夠驗證答案

這個專題讓我從模型串接進一步理解完整 AI 產品的設計: 資料來源、檢索策略、系統效能、使用者等待體驗, 都會直接影響結果是否真正可靠且可用。

← 回到作品集