一個練習 RAG 的專案。根據使用者提出的問題,找出並簡短介紹三間店的餐點
從 Foodpanda 以下幾個分類各抓 5 間餐廳,取得菜單的 json:
- 飲料
- 甜點
- 便當
- 燒烤
- 咖啡
- 早餐
抓出需要的資料存入 OpenSearch
- 店家名稱
- 店家介紹
- 店家分類(有多個)
- 餐點名稱
- 餐點介紹
- 店家名稱、分類、餐點名稱、介紹 embedding vector
根據使用者提出的問題,抓出關鍵字
使用 requirement_parser 抓出關鍵字,然後組出關鍵字搜尋和語意搜尋的 DSL,RRF 重排後,指定結果筆數 K,再丟給 LLM 選出三間並介紹餐點
python query.py --query="下午茶喝什麼飲料好?仙草不錯,大概 50 元左右"
輸出
以下是符合您需求的3间店及推荐餐点:
1. **大茗本位製茶堂 (三重自強店)**
**仙草嫩奶**
添加3%奶精,甜而不腻,搭配無糖/微糖選項,總糖量90克,熱量362大卡,適合喜歡濃郁仙草味的下午茶。
2. **COMEBUY (台北中正南陽店)**
**仙草凍奶茶**
以滑Q仙草凍搭配紅茶甜潤與牛奶香醇的招牌奶茶,甜而不膩,總糖量36.9克,熱量487大卡,風味清爽。
3. **貳虎 OFF TEA (中山南西店)**
**老派雙料奶茶**
夏夜東紅調和奶精,加入粉角與菜燕,口感層次豐富,甜而不膩,適合喜歡傳統茶飲風格的下午茶選擇。
每店餐點均在50元內,並突出仙草特色,搭配不同風味與甜度選擇。
python query.py --query="想吃甜的"
cuisines='甜點' keywords=['蛋糕', '冰淇淋', '布丁', '馬卡龍', '甜點'] price_min=None price_max=None time_period=None
搜尋結果:
keyword hits:
1. BAC (站前凱撒門市) | score=11.4581
2. 橘村屋蛋糕 (三重正義門市) | score=11.2318
3. 迷上甜點 (中山店) | score=9.9641
4. 兩良紅茶 (新北三重店) | score=6.5653
5. 甘記燒仙草飲料店 | score=5.4310
6. 豆花莊 | score=5.2050
semantic hits:
1. 豆花莊 | score=0.8562
2. 早點嚐鮮 | score=0.8516
3. 甘記燒仙草飲料店 | score=0.8368
4. BAC (站前凱撒門市) | score=0.8360
5. COFFEE MOON | score=0.8310
6. 迷上甜點 (中山店) | score=0.8299
RRF 重排:
1. BAC (站前凱撒門市) | score=0.0320
2. 豆花莊 | score=0.0315
3. 甘記燒仙草飲料店 | score=0.0313
4. 迷上甜點 (中山店) | score=0.0310
5. 橘村屋蛋糕 (三重正義門市) | score=0.0161
6. 早點嚐鮮 | score=0.0161
加權重排,keyword 0.8,semantic 0.2:
1. BAC (站前凱撒門市) | score=0.8461
2. 橘村屋蛋糕 (三重正義門市) | score=0.7711
3. 迷上甜點 (中山店) | score=0.6089
4. 豆花莊 | score=0.2000
5. 兩良紅茶 (新北三重店) | score=0.1740
6. 早點嚐鮮 | score=0.1649
python query.py --query="下午茶喝什麼飲料好?仙草不錯,大概 50 元左右"
cuisines='飲料' keywords=['仙草'] price_min=50 price_max=None time_period='下午'
搜尋結果:
keyword hits:
1. 甘記燒仙草飲料店 | score=9.9061
2. 豆花莊 | score=5.1424
3. 兩良紅茶 (新北三重店) | score=5.1424
4. COMEBUY (台北中正南陽店) | score=5.1424
5. 大苑子 (三重五華店) | score=4.1821
6. 大茗本位製茶堂 (三重自強店) | score=3.7020
semantic hits:
1. 甘記燒仙草飲料店 | score=0.8052
2. 豆花莊 | score=0.7701
3. 兩良紅茶 (新北三重店) | score=0.7613
4. 蝦の窩 | score=0.7525
5. 嶌日咖啡 | score=0.7485
6. 大苑子 (三重五華店) | score=0.7420
RRF 重排:
1. 甘記燒仙草飲料店 | score=0.0328
2. 豆花莊 | score=0.0323
3. 兩良紅茶 (新北三重店) | score=0.0317
4. 大苑子 (三重五華店) | score=0.0305
5. COMEBUY (台北中正南陽店) | score=0.0156
6. 蝦の窩 | score=0.0156
加權重排,keyword 0.8,semantic 0.2:
1. 甘記燒仙草飲料店 | score=1.0000
2. 豆花莊 | score=0.2745
3. 兩良紅茶 (新北三重店) | score=0.2469
4. COMEBUY (台北中正南陽店) | score=0.1857
5. 大苑子 (三重五華店) | score=0.0619
6. 蝦の窩 | score=0.0330
python query.py --query="好吃便當"
cuisines='便當' keywords=['好吃', '便當', '美味', '香', '好'] price_min=None price_max=None time_period=None
搜尋結果:
keyword hits:
1. 大慶便當 | score=10.5156
2. 一級排骨 | score=8.4849
3. 牛小花韓食肉肉便當店 | score=8.0318
4. 京城燒臘舖 (台北民生店) | score=6.2627
5. Dao穗輕食 | score=5.5856
6. 劉家現烤玉米 (寧夏夜市) | score=4.5640
semantic hits:
1. 大慶便當 | score=0.8677
2. 一級排骨 | score=0.8304
3. 早點嚐鮮 | score=0.8275
4. Dao穗輕食 | score=0.8274
5. 艋舺人清粥小菜 | score=0.8190
6. Q炭炸烤屋 | score=0.8177
RRF 重排:
1. 大慶便當 | score=0.0328
2. 一級排骨 | score=0.0323
3. Dao穗輕食 | score=0.0310
4. 牛小花韓食肉肉便當店 | score=0.0159
5. 早點嚐鮮 | score=0.0159
6. 京城燒臘舖 (台北民生店) | score=0.0156
加權重排,keyword 0.8,semantic 0.2:
1. 大慶便當 | score=1.0000
2. 一級排骨 | score=0.5780
3. 牛小花韓食肉肉便當店 | score=0.4661
4. 京城燒臘舖 (台北民生店) | score=0.2283
5. Dao穗輕食 | score=0.1760
6. 早點嚐鮮 | score=0.0391