ამ პოსტში მე გაგიზიარებთ რჩევებს იმის შესახებ, თუ როგორ გადავიდეთ ნულიდან 100-მდე ახალი ბიბლიოთეკის დაუფლებისას, Sentence Transformers-ის (ST) მაგალითზე. ჩვენ დავიწყებთ იმის გაგებით, თუ რისი გაკეთება შეუძლია ST-ს, და ხაზს გავუსვამთ რამდენიმე ასპექტს, რაც მას შესანიშნავ ბიბლიოთეკად აქცევს სასწავლად. შემდეგ, მე გაგიზიარებთ ჩემს გამოცდილ სტრატეგიას თქვენი პირველი დამოუკიდებელი პროექტის განსახორციელებლად. ასევე ვისაუბრებთ იმაზე, თუ როგორ ავაშენე ჩემი პირველი ST-ზე დაფუძნებული პროექტი და რა ვისწავლე ამ გზაზე 🥳 წინადადების ვექტორები (Sentence embeddings)? სემანტიკური ძიება (Semantic search)? კოსინუსური მსგავსება (Cosine similarity)?!?! 😱 სულ რაღაც რამდენიმე კვირის წინ, ეს ტერმინები იმდენად დამაბნეველი იყო ჩემთვის, რომ თავბრუს მახვევდა. მსმენოდა, რომ Sentence Transformers იყო მძლავრი და მრავალმხრივი ბიბლიოთეკა ენისა და გამოსახულების მონაცემებთან სამუშაოდ და მოუთმენლად ველოდი მის გამოცდას, მაგრამ ვნერვიულობდი, რომ ვერ გავუმკლავდებოდი. როგორც გაირკვა, ძალიან ვცდებოდი! Sentence Transformers არის ერთ-ერთი ბიბლიოთეკა, რომელთანაც Hugging Face ინტეგრირებულია და ის აღწერილია შემდეგნაირად: „გამოთვლის მკვრივ ვექტორულ წარმოდგენებს წინადადებებისთვის, აბზაცებისთვის და გამოსახულებებისთვის.“ მოკლედ რომ ვთქვათ, Sentence Transformers პასუხობს ერთ კითხვას: რა მოხდებოდა, თუ წინადადებებს მრავალგანზომილებიან ვექტორულ სივრცეში წერტილებად განვიხილავდით? ეს ნიშნავს, რომ ST საშუალებას გაძლევთ მისცეთ მას თვითნებური ტექსტური სტრიქონი (მაგ., „ძალიან მიხარია, რომ Python-ით კოდირება ვისწავლე!“) და ის გარდაქმნის მას ვექტორად, როგორიცაა [0.2, 0.5, 1.3, 0.9]. სხვა წინადადება, მაგალითად, „Python შესანიშნავი პროგრამირების ენაა“, გარდაიქმნება განსხვავებულ ვექტორად. ამ ვექტორებს „ემბედინგები“ (embeddings) ეწოდება და ისინი არსებით როლს თამაშობენ მანქანურ სწავლებაში (Machine Learning). თუ ეს ორი წინადადება ერთი და იმავე მოდელით იქნებოდა „ჩაშენებული“ (embedded), მაშინ ორივე ერთსა და იმავე ვექტორულ სივრცეში იარსებებდა, რაც მრავალი საინტერესო შესაძლებლობის საშუალებას იძლეოდა. რაც ST-ს განსაკუთრებით სასარგებლოს ხდის, არის ის, რომ მას შემდეგ, რაც შექმნით ემბედინგებს, შეგიძლიათ გამოიყენოთ ჩაშენებული დამხმარე ფუნქციები, რათა შეადაროთ, რამდენად ჰგავს ერთი წინადადება მეორეს, სინონიმების ჩათვლით! 🤯 ამის ერთ-ერთი გზაა „კოსინუსური მსგავსების“ (Cosine Similarity) ფუნქციის გამოყენება. ST-ის მეშვეობით, თქვენ შეგიძლიათ გამოტოვოთ ყველა შემაწუხებელი მათემატიკა და გამოიყენოთ ძალიან მოსახერხებელი `util.cos_sim` ფუნქცია, რათა მიიღოთ ქულა -1-დან 1-მდე, რომელიც მიუთითებს იმაზე, თუ რამდენად „მსგავსია“ ჩაშენებული წინადადებები იმ ვექტორულ სივრცეში, რომელსაც ისინი იზიარებენ – რაც უფრო დიდია ქულა, მით უფრო მსგავსია წინადადებები! წინადადებების მსგავსების მიხედვით შედარება ნიშნავს, რომ თუ გვაქვს წინადადებების ან აბზაცების კოლექცია, შეგვიძლია სწრაფად ვიპოვოთ ისეთები, რომლებიც შეესაბამება კონკრეტულ საძიებო მოთხოვნას პროცესის მეშვეობით, რომელსაც სემანტიკური ძიება ეწოდება. ამის ზოგიერთი კონკრეტული გამოყენებისთვის იხილეთ ეს გაკვეთილი GitHub კოდის საძიებო სისტემის შესაქმნელად ან ეს სხვა გაკვეთილი FAQ ძრავის ასაშენებლად Sentence Transformers-ის გამოყენებით. პირველ რიგში, ის გთავაზობთ დაბალბარიერულ გზას, რათა მიიღოთ პრაქტიკული გამოცდილება უახლესი მოდელების გამოყენებით ემბედინგების შესაქმნელად. აღმოვაჩინე, რომ ჩემი საკუთარი წინადადების ემბედინგების შექმნა იყო მძლავრი სასწავლო ინსტრუმენტი, რომელმაც გამიძლიერა გაგება, თუ როგორ მუშაობს თანამედროვე მოდელები ტექსტთან, და ასევე ხელი შეუწყო შემოქმედებითი იდეების გაღვივებას! Jupyter ნოუთბუქში `msmarco-MiniLM-L-6-v3` მოდელის ჩატვირთვიდან რამდენიმე წუთში, უამრავი სახალისო პროექტის იდეა მომივიდა მხოლოდ რამდენიმე წინადადების ემბედირებით და ST-ის ზოგიერთი დამხმარე ფუნქციის გამოყენებით. მეორეც, Sentence Transformers არის ხელმისაწვდომი საწყისი წერტილი მრავალი მნიშვნელოვანი ML (მანქანური სწავლების) კონცეფციისთვის, რომლებშიც შეგიძლიათ განვითარდეთ. მაგალითად, მისი გამოყენება შეგიძლიათ კლასტერიზაციის (clustering), მოდელის დისტილაციის (model distillation) შესასწავლად და CLIP-ის მეშვეობით ტექსტიდან გამოსახულების შექმნის სამუშაოებშიც კი ჩასართავად. ფაქტობრივად, Sentence Transformers იმდენად მრავალმხრივია, რომ GitHub-ზე თითქმის 8,000 ვარსკვლავამდე აიწია, 3,000-ზე მეტი პროექტითა და პაკეტით, რომლებიც მასზეა დამოკიდებული. ოფიციალური დოკუმენტაციის გარდა, არსებობს უამრავი საზოგადოების მიერ შექმნილი კონტენტი (იხილეთ რამდენიმე ბმული ამ პოსტის ბოლოს 👀) და ბიბლიოთეკის გავრცელებამ ის პოპულარული გახადა კვლევებში. მესამე, ემბედინგები საკვანძოა რამდენიმე ინდუსტრიული გამოყენებისთვის. Google ძიება იყენებს ემბედინგებს ტექსტის ტექსტთან და ტექსტის გამოსახულებებთან შესატყვისებლად; Snapchat იყენებს მათ „სწორი რეკლამის სწორ მომხმარებელთან სწორ დროს მისაწოდებლად“; ხოლო Meta (Facebook) იყენებს მათ სოციალური ძიებისთვის. სხვა სიტყვებით რომ ვთქვათ, ემბედინგები საშუალებას გაძლევთ შექმნათ ისეთი რაღაცები, როგორიცაა ჩატბოტები, სარეკომენდაციო სისტემები, zero-shot კლასიფიკატორები, გამოსახულების ძიება, FAQ სისტემები და მრავალი სხვა. ყოველივე ამის გარდა, ის ასევე მხარდაჭერილია უამრავი Hugging Face ინტეგრაციით 🤗. ასე რომ, თქვენ გადაწყვიტეთ Sentence Transformers-ის გამოკვლევა და დოკუმენტაციაში მოცემული რამდენიმე მაგალითის გავლა… ახლა რა? თქვენი პირველი დამოუკიდებელი პროექტი (მე მათ Rocket Launch პროექტებს 🚀 ვუწოდებ) დიდი ნაბიჯია თქვენს სასწავლო მოგზაურობაში და თქვენ გინდათ მაქსიმალურად გამოიყენოთ ეს შესაძლებლობა! აქ არის პატარა „რეცეპტი“, რომელსაც ვიყენებ ახალი ხელსაწყოს გამოცდისას: ჩემი პირველი Sentence Transformers პროექტისთვის, გამახსენდა, რომ მქონდა პოპულარული სიმღერების ტექსტების მცირე მონაცემთა ნაკრები, რომელიც მივხვდი, რომ შემეძლო გამეერთიანებინა ST-ის სემანტიკური ძიების ფუნქციონალთან, რათა შემექმნა სახალისო ფლეილისტის გენერატორი. წარმოვიდგინე, რომ თუ მომხმარებელს ტექსტურ მინიშნებას ვთხოვდი (მაგ., „თავს ველურად და თავისუფლად ვგრძნობ!“), შესაძლოა მეპოვა სიმღერები, რომლებსაც ჰქონდათ ტექსტები, რომლებიც ემთხვეოდა...