წარმოიდგინეთ გაქვთ უზარმაზარი ციფრული ბიბლიოთეკა, რომელიც სავსეა ღირებული ცოდნით სტარტაპების, ტექნოლოგიების და ინოვაციების შესახებ, მაგრამ როგორ იპოვით ზუსტად იმას, რაც გჭირდებათ? სწორედ ეს გამოწვევა დადგა Founders.ge-ის მკითხველების წინაშე.
Founders.ge-ზე დაგროვილია ასობით სტატია ციფრული ტრანსფორმაციის, სტარტაპ ეკოსისტემის, ხელოვნური ინტელექტისა და Agile მეთოდოლოგიის შესახებ. თითოეული მათგანი წარმოადგენს მინი სახელმძღვანელოს თავის თემაზე. როცა გადავწყვიტეთ Founders.ge-ზე ჩატბოტის შექმნა, მთავარი მიზანი ერთი იყო: გაგვეხსნა პლატფორმის ცოდნის არქივი ისე, რომ მკითხველს სტატიების კითხვაში დრო არ დაეკარგა – მისთვის საჭირო ინფორმაცია უნდა მიეღო მყისიერად, კითხვით. ვიცოდით, რომ სტატიების დიდი ნაწილი მნიშვნელოვან ცოდნას შეიცავდა ციფრული ტრანსფორმაციის, სტარტაპების, AI-ის და Agile მეთოდოლოგიის შესახებ, მაგრამ მოძიება ყოველთვის მარტივი არ იყო. ამიტომ დავიწყეთ იდეის გაშლა: რა იქნებოდა, თუ მკითხველს შეეძლო ეთქვა: “მითხარი რა არის MVP?” ან “როგორ შევამოწმო ჩემი ბიზნეს იდეა?” და პასუხი პირდაპირ სტატიების შინაარსიდან მიეღო? ამისთვის საჭირო იყო არა უბრალოდ ჩატბოტი, არამედ ინტელექტუალური აგენტი, რომელსაც არა მარტო კითხვა ესმოდა, არამედ იცოდა, სად მოეძებნა სწორი პასუხი.
ტექნოლოგიური მოგზაურობა: როგორ ვასწავლეთ მანქანას “კითხვა”
პირველი ნაბიჯი იყო სტატიების დამუშავება. ყველა ტექსტი, რომელიც Founders.ge-ზე იდებოდა, უნდა გადაგვეცა სპეციალურ ფორმატში – დაგვეშალა title და content ცალკე და შეგვექმნა მათი მნიშვნელობით დატვირთული “ემბედინგები”. ამაში დაგვეხმარა მოდელი paraphrase-multilingual-mpnet-base-v2, რომელიც კონტექსტს არამარტო ქართულად, არამედ მრავალ ენაზე კარგად იგებს. სტატიები გადავაქციეთ რიცხვებად – ანუ ვექტორებად – და შევინახეთ FAISS ბაზაში, რომელიც მოგვცემდა საშუალებას კონკრეტულ კითხვაზე მიგვეღო ყველაზე შინაარსობრივად ახლოს მდგომი სტატია.
პროცესი ასე გამოიყურებოდა:
- ავიღეთ სტატია, დავყავით სათაურად და შინაარსად
- თითოეული ტექსტი გადავაქციეთ მათემატიკურ ვექტორად (წარმოიდგინეთ, როგორც კოორდინატები მრავალგანზომილებიან სივრცეში)
- ეს ვექტორები შევინახეთ FAISS ბაზაში – სპეციალურ სისტემაში, რომელიც მარტივად ახერხებს მსგავსი მნიშვნელობების პოვნას
დიალოგი, რომელიც გრძელდება
მაგრამ აქ არ გაჩერებულა საქმე. დავამატეთ ConversationalRetrievalChain, რაც იმას ნიშნავდა, რომ ჩატბოტი იმახსოვრებს წინა დიალოგს და მასზე დაყრდნობით აგრძელებს საუბარს. მაგალითად, მომხმარებელი თუ კითხავდა: “studenthunt ქართულია?” ჩატბოტი მისთვის ადრე გაცემულ პასუხსაც ითვალისწინებდა.
მაგალითად:
- მომხმარებელი: “რა არის StudentHunt?”
- ჩატბოტი: [დეტალური პასუხი StudentHunt-ის შესახებ]
- მომხმარებელი: “ის ქართულია?”
- ჩატბოტი: [პასუხი, რომელიც ითვალისწინებს, რომ საუბარი StudentHunt-ზეა]
ეს ქმნის ბუნებრივი საუბრის შეგრძნებას, სადაც არ გჭირდება ყოველ ჯერზე კონტექსტის ხელახლა აღწერა.
გამოწვევები, რომლებმაც გაგვაძლიერა
როგორც ყველა პროექტში, აქაც შევხვდით საინტერესო გამოწვევებს:
1. “ბრმა წერტილები” ზოგჯერ ჩატბოტი ამბობდა “ინფორმაცია ვერ მოიძებნა”, მიუხედავად იმისა, რომ შესაბამისი სტატია არსებობდა. თავდაპირველი ძიება სტატიებიდან აბრუნებდა 3 ყველაზე მსგავსს შედეგს, თუმცა ეს საკმარისი არ იყო, რადგან ზოგჯერ პასუხი რეალურად სტატიაში იყო, მაგრამ ჩატბოტი მაინც წერდა, რომ ინფორმაცია არ ჰქონდა გამოსავალი? დავამატეთ რე-რანკინგის სისტემა – მეორადი ფილტრი, რომელიც ხელახლა აფასებს შედეგებს და არჩევს ყველაზე რელევანტურს.
2. რე-რანკინგის სისტემა
ამ პრობლემის გადასაჭრელად შევქმენით დამატებითი ალგორითმი რომელიც იყენებს SentenceTransformer-ის მიერ გენერირებულ embedding-ებს და cosine similarity-ზე დაფუძნებული მანძილით ზომავს პასუხის ტექსტსა და ყველა სტატიას შორის მსგავსებას.
რე-რანკინგის ალგორითმი მუშაობს ასე:
- Embedding-ების შედარება – ყოველი პასუხის ტექსტი გადაიქცევა embedding-ად და ყველა სტატიის embedding-თან ერთად ითვლება მისი მსგავსება (
cosine similarity). - მინიმალური სკორის ფილტრი – მხოლოდ იმ შედეგებს ვტოვებთ, რომელთა ქულა აღემატება წინასწარ გაწერილ ზღვარს (მაგ. 0.45). ამ გზით მხოლოდ შინაარსობრივად ყველაზე ახლოს მდგომ სტატიებს ვაჩვენებთ.
- დუბლიკატების მოცილება – ერთსა და იმავე URL-ს ორჯერ არ ვაბრუნებთ.
- სათაურების გამოყენება – სტატიების სათაურებსაც ვრთავთ embedding-ში, რათა ალგორითმს მეტი შინაარსობრივი კონტექსტი ჰქონდეს.
2. როდესაც პასუხი ნამდვილად არ არსებობს რა ვქნათ, როცა მომხმარებელი ეკითხება რაღაცას, რაზეც ჯერ არ დაგვიწერია? ნაცვლად დუმილისა, ჩატბოტი ახლა მიმართავს GPT-4o მოდელს და იძლევა ზოგად, მაგრამ სასარგებლო პასუხს. ასეთ შემთხვევაში ემატება სპეციალური აღნიშვნა: “🤖 პასუხი გენერირებულია ზოგად ინფორმაციაზე დაყრდნობით.”
შედეგი: მეტი ვიდრე უბრალო ჩატბოტი
Founders.ge-ის ჩატბოტი არის მაგალითი იმისა, თუ როგორ შეიძლება ტექნოლოგიამ გააუმჯობესოს ცოდნის მიღების გამოცდილება. ნაცვლად იმისა, რომ ცოდნა იყოს ჩაკეტილი სტატიებში, ის ხდება ცოცხალი, ინტერაქტიული და ხელმისაწვდომი. საბოლოო ჯამში ტექნოლოგიების და ცოდნის დახმარებით შევძელით და მივიღეთ chatbot-ი, რომელიც არა მხოლოდ პასუხობს კითხვებს, არამედ ესმის კონტექსტი, აგებს დიალოგს, ხვდება ქართულ ენას და ზოგჯერ უკეთესადაც კი ახერხებს კონტენტზე მიყვანას, ვიდრე საძიებო სისტემა.
გამოყენებული ტექნოლოგიები და არქიტექტურა
| კომპონენტი | ტექნოლოგია |
|---|---|
| ჩატბოტის API | FastAPI |
| მოდელები | OpenAI GPT-4o + SentenceTransformer |
| Embedding-ები | paraphrase-multilingual-mpnet-base-v2 |
| ძიება / რეტრივალი | FAISS + cosine similarity |
| ქეშირება | Article embeddings caching (JSON ფაილი) |
მომავლის ხედვა
Founders.ge აქტიურად ეხმარება მკითხველს ცოდნის აღმოჩენაში, ეს პროცესი AI-ს დამხარებით ბევრად გავამარტივეთ თუმცა წინ კიდევ დიდი მოგზაურობა გველოდება. ჩვენი მიზანია, რომ Founders.ge გახდეს პერსონალური მენტორი თითოეული მეწარმისთვის და ცოდნის მიღება ისეთივა მარტივი იყოს როგორც მეგობართან საუბარი.
ჩვენი გამოცდილება — თქვენი შესაძლებლობა
ეს იყო ჩვენი მოგზაურობა ჩვეულებრივი საიტიდან ინტელექტუალურ პლატფორმამდე. ტექნოლოგია, შინაარსი და მომხმარებლის გამოცდილება გაერთიანდა ერთ პროდუქტში – ჭკვიან ასისტენტში, რომელიც მუდმივად ვითარდება და უმჯობესდება.
და რაც მთავარია – ჩვენ მზად ვართ, ეს გამოცდილება გავუზიაროთ სხვებსაც. თუ თქვენც გინდათ, რომ თქვენი კონტენტი გახდეს ცოცხალი და ინტერაქტიული, ჩვენ ვიცით როგორ.