學生租屋系統是一個專為學生設計的租屋平台,旨在幫助學生更高效地找到符合需求的租屋資訊。系統主要功能包括:
- 自動爬取 Facebook 租屋社團 的房屋資訊
- 自然語言處理技術 將用戶查詢轉換為結構化條件
- 智能搜尋 透過 ChromaDB 向量資料庫進行高效查詢
- Web 介面 提供用戶登入、搜尋房屋、管理收藏等功能
- 搜尋歷史記錄 保存用戶的查詢歷史
- Flask 作為 Web 框架
- HTML/CSS/JavaScript 提供用戶介面
- Session 管理 保持用戶登入狀態
- Selenium 爬取 Facebook 租屋社團資料
- ChromaDB 向量資料庫儲存和查詢房屋資訊
- MongoDB 儲存用戶資料和搜尋歷史
- LLM 服務 將自然語言查詢轉換為結構化查詢
-
Facebook 租屋爬蟲
- 使用 Selenium 自動化瀏覽器操作
- 從指定 Facebook 社團爬取租屋貼文
- 使用 SHA-256 雜湊值去重複貼文
-
查詢生成器
- 將用戶自然語言查詢轉換為結構化查詢條件
- 範例:
{ "search_text": "三房兩廳", "filters": { "$and": [ {"city": {"$eq": "台南市"}}, {"district": {"$eq": "東區"}}, {"layout_room": {"$gte": 3}}, {"layout_hall": {"$gte": 2}}, {"can_cook": {"$eq": 1}}, {"has_parking": {"$eq": 1}}, {"price_max": {"$lte": 15000}} ] } }
-
RAG 服務
- 使用 ChromaDB 進行向量搜尋
- 支援絕對過濾條件(如不可養寵物)
- 範例查詢:
result = rag_service.query( question="東區凱旋路", filters={"pet_allowed": False} )
-
用戶管理
- 使用 MongoDB 儲存用戶資料
- 記錄用戶搜尋歷史
- 管理用戶收藏的房屋
- Python 3.11+
- MongoDB
- ChromaDB
- LLM 服務(如 Ollama)
-
克隆專案:
git clone git@github.com:StudentRentalSystem/StudentRentalSystem-Python.git cd StudentRentalSystem-Python -
安裝依賴套件:
pip install -r requirements.txt
-
設定環境變數(
.env檔案):FACEBOOK_GROUP_URL=您的Facebook租屋社團URL DB_URL=您的MongoDB連接字串 LLM_CLIENT_TOKEN=您的LLM API金鑰 LLM_SERVER_ADDRESS=LLM服務地址 LLM_MODEL_TYPE=使用的LLM模型類型 CHROMA_TOKEN= CHROMA_TENANT= CHROMA_DATABASE= CHROMA_COLLECTION_NAME= -
啟動服務:
- Frontend
python src.frontend.app.py
- Crawler
python src.facebook_rental_crawler.main <scroll_count>
- Frontend
- 登入系統(輸入電子郵件和姓名)
- 在搜尋欄輸入自然語言查詢(如:"我要找台南東區,三房兩廳,可開伙,有車位,預算1萬5以內")
- 系統會顯示符合條件的房屋列表
- 可收藏感興趣的房屋
- 查看搜尋歷史
rental:切換到租屋搜尋模式others:切換到一般聊天模式exit:退出系統
src/
├── facebook_rental_crawler/ # Facebook 租屋爬蟲
│ ├── crawler.py # 爬蟲主程式
│ ├── crawler_config.py # 爬蟲設定
│ └── prompts.py # 資料處理提示
├── frontend/ # 前端介面
│ ├── app.py # Flask 應用
│ ├── embedding_database.py # 資料庫查詢
│ └── user_service.py # 用戶服務
├── query_generator/ # 查詢生成器
│ ├── main.py # 主程式
│ ├── prompts.py # 查詢提示
│ └── utils.py # 工具函式
├── rag_service/ # RAG 服務
│ ├── client.py # LLM 客戶端
│ ├── llm_config.py # LLM 設定
│ └── main.py # 主程式
└── utils.py # 通用工具函式
-
Facebook 爬蟲
- 需要正確設定 Facebook 登入憑證
- 爬取頻率需遵守社團規則
- 使用 SHA-256 雜湊值去重複貼文
-
查詢生成器
- 使用 LLM 將自然語言轉換為結構化查詢
- 範例查詢格式需符合 ChromaDB 的查詢語法
- 失敗時會回退到純文字搜尋
-
RAG 服務
- 使用 ChromaDB 進行向量搜尋
- 支援絕對過濾條件
- 範例查詢需包含
question和filters
-
錯誤處理
- 401/403 錯誤時會提示檢查 LLM_API_KEY
- 爬蟲錯誤會記錄到日誌
- 查詢生成失敗時會回退到純文字搜尋
歡迎提交問題和 Pull Requests。請遵循以下貢獻指南:
- Fork 專案
- 建立功能分支 (
git checkout -b feature/新功能) - 提交變更 (
git commit -am '新增某某功能') - 推送分支 (
git push origin feature/新功能) - 建立 Pull Request
本專案採用 MIT 授權。
如有任何問題或建議,請聯絡專案維護者。
