- ระบบการค้นหาเวกเตอร์
ระบบแนะนำภาพยนตร์ที่ซับซ้อนโดยใช้ความสามารถในการค้นหาเวกเตอร์และ RAG
- คุณสมบัติ
- Semantic Search : ใช้ประโยคฝังตัวสำหรับการค้นหาภาพยนตร์ที่มีความหมาย
- ฐานข้อมูลเวกเตอร์ : ใช้ประโยชน์จากความสามารถในการค้นหาเวกเตอร์ของ MongoDB Atlas
- การประมวลผลแบบเรียลไทม์ : สร้าง Embeddings on-the-fly โดยใช้ API ของ HuggingFace
- การดึงข้อมูลที่มีประสิทธิภาพ : คำแนะนำภาพยนตร์ที่รวดเร็วและแม่นยำตามคำอธิบายพล็อต
โครงสร้างโครงการ
Vector-Search-RaG/
├── apps/
│ └── semantic_search/
│ ├── __init__.py
│ ├── hf_connection.py # HuggingFace API connection
│ ├── mongo_connection.py # MongoDB connection handler
│ └── movie_recs.py # Movie recommendation logic
├── ragenv/ # Virtual environment
├── LICENSE
└── README.md
เริ่มต้น
ข้อกำหนดเบื้องต้น
- Python 3.8 หรือสูงกว่า
- บัญชี MongoDB Atlas
- HuggingFace API โทเค็น
- PIP (Python Package Manager)
การตั้งค่าสภาพแวดล้อม
- โคลนที่เก็บ:
git clone https://github.com/yourusername/Vector-Search-RaG.git
cd Vector-Search-RaG
- สร้างและเปิดใช้งานสภาพแวดล้อมเสมือนจริง:
python -m venv ragenv
source ragenv/bin/activate # On Windows: ragenvScriptsactivate
- ติดตั้งการพึ่งพา:
pip install pymongo requests python-decouple
- สร้างไฟล์
.env ในไดเรกทอรีรูทด้วยข้อมูลประจำตัวของคุณ:
MONGODB_URI = your_mongodb_connection_string
HUGGING_FACE_TOKEN = your_huggingface_token
ส่วนประกอบการกำหนดค่า
การเชื่อมต่อ huggingface ( hf_connection.py )
- จัดการการเชื่อมต่อกับ API ของ HuggingFace
- ใช้
sentence-transformers/all-MiniLM-L6-v2 สำหรับการสร้าง embeddings - จัดการการรับรองความถูกต้องของ API และการจัดการข้อผิดพลาด
การเชื่อมต่อ MongoDB ( mongo_connection.py )
- สร้างการเชื่อมต่อที่ปลอดภัยกับ MongoDB Atlas
- ใช้ความปลอดภัยของ TLS
- รวมถึงการตรวจสอบการเชื่อมต่อและการจัดการข้อผิดพลาด
คำแนะนำภาพยนตร์ ( movie_recs.py )
- ใช้ฟังก์ชั่นการค้นหาเวกเตอร์
- ประมวลผลการสอบถามภาพยนตร์และสร้างคำแนะนำ
- รวมถึงยูทิลิตี้สำหรับการดึงและอัปเดตข้อมูลภาพยนตร์
- การใช้งาน
ตัวอย่างการค้นหาพื้นฐาน
from apps . semantic_search . movie_recs import search_movies
# Search for movies with a specific plot description
query = "A group of bandits stage a brazen train hold-up"
search_movies ( query )
อัปเดตข้อมูลภาพยนตร์
from apps . semantic_search . movie_recs import fetch_and_update_movies
# Fetch and update movie information
fetch_and_update_movies ()
รายละเอียดการค้นหาเวกเตอร์
ระบบใช้การรวม $vectorSearch ของ MongoDB สำหรับการค้นหาความหมาย:
- สร้าง Embeddings โดยใช้หม้อแปลงประโยคของ HuggingFace
- ค้นหาพล็อตที่คำนวณไว้ล่วงหน้าที่เก็บไว้ใน MongoDB
- ส่งคืนภาพยนตร์ที่คล้ายกันมากที่สุดตามคำอธิบายพล็อต
คุณสมบัติด้านความปลอดภัย
- การเข้ารหัส TLS สำหรับการเชื่อมต่อ MongoDB
- การจัดการโทเค็น API ที่ปลอดภัยผ่านตัวแปรสภาพแวดล้อม
- การตรวจสอบใบรับรองสำหรับการเชื่อมต่อที่ปลอดภัย
บันทึกสำคัญ
- ตรวจสอบให้แน่ใจว่า MongoDB Atlas Cluster เปิดใช้ความสามารถในการค้นหาเวกเตอร์
- HuggingFace API มีขีด จำกัด อัตรา - พิจารณาการใช้แคชสำหรับการใช้งานการผลิต
- รักษาไฟล์
.env ของคุณให้ปลอดภัยและไม่เคยควบคุมเวอร์ชันควบคุม
- ข้อควรพิจารณาด้านประสิทธิภาพ
- ระบบใช้
numCandidates: 100 สำหรับการค้นหาในวงกว้าง - ผลลัพธ์ถูก จำกัด ไว้ที่ 4 ภาพยนตร์ต่อแบบสอบถามสำหรับเวลาตอบสนองที่ดีที่สุด
- ดัชนีการค้นหาเวกเตอร์ "plotsemanticsearch" ควรกำหนดค่าอย่างถูกต้องใน MongoDB
- การบริจาค
- แยกที่เก็บ
- สร้างสาขาคุณลักษณะของคุณ (
git checkout -b feature/AmazingFeature ) - กระทำการเปลี่ยนแปลงของคุณ (
git commit -m 'Add some AmazingFeature' ) - Push to the Branch (
git push origin feature/AmazingFeature ) - เปิดคำขอดึง
ใบอนุญาต
โครงการนี้ได้รับใบอนุญาตภายใต้เงื่อนไขของไฟล์ใบอนุญาตที่รวมอยู่ในที่เก็บ