TL; DR: แอปพลิเคชันเว็บที่ถูกแฮ็กพร้อมกับแบ็กเอนด์ MongoDB Atlas โดยใช้คำค้นหาที่แตกต่างกัน
การเสนอประสบการณ์การค้นหาผู้ใช้ที่ยอดเยี่ยมในแอปพลิเคชันอาจเป็นเรื่องยาก แต่ไม่จำเป็นต้องเป็น
แอปพลิเคชันนี้รวมเทคนิคการค้นหาหลายอย่างที่มีอยู่ใน MongoDB ในชุดข้อมูลการดำเนินงานของภาพยนตร์ MongoDB เป็นฐานข้อมูลเอกสารยอดนิยมที่รู้จักกันดีในเรื่องความสามารถในการทำธุรกรรมและการวิเคราะห์ที่ทรงพลังสำหรับข้อมูลที่มีโครงสร้างและกึ่งโครงสร้างในโครงสร้างคล้าย JSON การเพิ่มการค้นหาที่เกี่ยวข้องและการค้นหาเวกเตอร์ความหมายในแพลตฟอร์มเดียวกันและภาษาคิวรีนั้นใช้งานง่ายและใช้งานง่ายโดยไม่มีความซับซ้อนมาก ในฐานะฐานข้อมูลเวกเตอร์ตอนนี้ยังเก็บข้อมูลที่ไม่มีโครงสร้างเช่นข้อความรูปภาพหรือเสียงในการฝังเวกเตอร์ (เวกเตอร์มิติสูง) เพื่อให้ง่ายต่อการค้นหาและดึงวัตถุที่คล้ายกันได้อย่างรวดเร็ว
MongoDB )Lucene )text-embedding-ada-002 ),clip-ViT-B-32 ) การค้นหา ATLAS ช่วยให้การค้นหาและการให้คะแนนที่เกี่ยวข้องตามดัชนี Lucene โอเพนซอร์ซ ที่นี่ฉันใช้มันเพื่อค้นหาภาพยนตร์ที่เกี่ยวข้องด้วยการสนับสนุนภาษาและการแก้ไขการพิมพ์ผิด 
พล็อตข้อความของภาพยนตร์แต่ละเรื่องถูกเรียกใช้ผ่าน API ฝังของ OpenAI และการฝังตัว text-embedding-ada-002 นั้นจะถูกเก็บไว้ใน MongoDB พรอมต์ของผู้ใช้ถูกฝังและใช้ในการสืบค้นในฐานข้อมูลเวกเตอร์สำหรับเนื้อหาที่คล้ายกัน คุณสามารถค้นหาได้ทั้งในอินพุตของคุณหรือทำการค้นหาความคล้ายคลึงกันตามพล็อตของภาพยนตร์ที่มีอยู่ 
ภาพโปสเตอร์ของภาพยนตร์แต่ละเรื่องถูกตีความโดย clip-ViT-B-32 ภาพฝังตัวเหล่านั้นจะถูกเก็บไว้ใน MongoDB ผู้ใช้สามารถค้นหาภาพยนตร์ที่มีภาพโปสเตอร์ที่คล้ายกับแบบสอบถามของพวกเขา 
โครงสร้างเอกสารมีลักษณะดังนี้ ในสีน้ำเงินคุณมีฟิลด์วัตถุซ้อนและอาร์เรย์ที่มีข้อมูลการดำเนินงาน สีน้ำเงินจะถูกสอบถามด้วยการค้นหาฐานข้อมูลและการค้นหาความเกี่ยวข้องการค้นหา ATLAS โครงการนี้เพิ่มฟิลด์เป็นสีเหลือง: การแสดงฐาน 64 ของโปสเตอร์ภาพยนตร์, ADA OpenAi Text Embeddings และการฝังภาพคลิป, สอบถามด้วยการค้นหา Atlas Vector

คุณต้องการ python3 และ pip
python3 --version
python3 -m ensurepip --upgrade
pip3 install -r requirements.txt
คุณต้องมีคลัสเตอร์ MongoDB Atlas นี่อาจเป็นคลัสเตอร์ฟรีที่สร้างขึ้นบน Cloud.mongodb.com ตรวจสอบให้แน่ใจว่าการเข้าถึงฐานข้อมูลและการเข้าถึงเครือข่ายช่วยให้คุณสามารถเชื่อมต่อกับฐานข้อมูล หมายเหตุกลุ่มฟรีมีขนาดและข้อ จำกัด ด้านประสิทธิภาพอย่าลังเลที่จะเรียกใช้สิ่งนี้บนคลัสเตอร์ขนาดเล็กที่มีข้อมูลมากขึ้น
คุณต้องตั้งค่าตัวแปรสภาพแวดล้อมในท้องถิ่น เทมเพลตคือ .env.example ซึ่งคุณสามารถคัดลอกไปยังไฟล์ .env ในเครื่องของคุณ
MDB_CONN=<YOUR MongoDB Atlas connection string>
DB="sample_mflix"
COLL="embedded_movies"
OPENAI_API_KEY=<YOUR OpenAI API key>
โคลน MDB-search-data repo
ในนั้นคุณจะได้รับ 2 ตัวเลือก: การกู้คืนจากการสำรองข้อมูลหรือสร้าง embeddings ด้วยตัวเองในพื้นที่ การกู้คืนจากการสำรองข้อมูลใช้เวลาน้อยกว่า 1 นาที
ใน Atlas ใน Search tab มุมมองคลัสเตอร์ให้ป้อนการกำหนดค่า JSON ต่อไปนี้ ใช้ชื่อดัชนี default และตรวจสอบให้แน่ใจว่าสร้างในคอลเลกชัน embedded_movies นี่คือเวทมนตร์ที่จะเปิดใช้งานการค้นหาข้อความแบบเต็มรูปแบบบนฟิลด์รวมถึงเปิดใช้งานดัชนีการค้นหาเวกเตอร์ ไม่จำเป็นต้องคัดลอกข้อมูล: O
{
"mappings": {
"dynamic": true,
"fields": {
"plot_embedding": {
"dimensions": 1536,
"similarity": "cosine",
"type": "knnVector"
},
"poster_embedding": {
"dimensions": 512,
"similarity": "cosine",
"type": "knnVector"
}
}
}
}
นี่คือ Flask Python3 Web-App
เริ่มแอพ Flask เช่นนี้
flask --app app run
หรือด้วยผู้ช่วยเพียงแค่ใช้งูหลามแบบนี้
python app.py
คุณสามารถเข้าถึงเว็บแอปได้ที่ http://localhost:8080
คุณทำได้แล้ว:
ไว้วางใจ ML และรูปแบบการฝัง คุณเดาได้ไหมว่าทำไมภาพเหล่านี้ถึงคล้ายกัน?