ვექტორული ბაზა (vector database) არის მონაცემთა ბაზა, რომელიც შექმნილია ე.წ. embedding-ების — რიცხვთა მიმდევრობების, რომლებითაც AI მოდელი გამოსახავს ტექსტის, სურათის თუ აუდიოს „მნიშვნელობას" — შესანახად და მოსაძებნად ისე, რომ აპლიკაციამ სწრაფად იპოვოს ის ჩანაწერები, რომელთა მნიშვნელობა ყველაზე ახლოსაა მოთხოვნასთან — და არა უბრალოდ ისინი, ვისაც იგივე საკვანძო სიტყვები აქვს.

რატომ არ არის ჩვეულებრივი ბაზა ამისთვის მორგებული

ჩვეულებრივი მონაცემთა ბაზა აგებულია ზუსტი ან ნაწილობრივი დამთხვევისთვის: იპოვე ჩანაწერი, სადაც email = 'x@y.com', ან სათაური შეიცავს კონკრეტულ სიტყვას. ეს კარგად მუშაობს სტრუქტურირებულ მონაცემებზე, მაგრამ ვერ პასუხობს სულ სხვა ტიპის კითხვას: „იპოვე აბზაცი, რომელიც დაახლოებით იმავეს ამბობს, რასაც ეს" ან „იპოვე პროდუქტის ფოტო, რომელიც ამ სურათს ჰგავს". მნიშვნელობა არ არის სტრიქონი, რომლის შედარებაც LIKE-ის მსგავსი ოპერატორით შეიძლება — მისი გამოსახვა სხვაგვარად უწევს.

სწორედ ეს გამოსახვა ხდება embedding-ის საშუალებით. Embedding-ის მოდელი კითხულობს ტექსტის ნაწყვეტს (ან სურათს, ან აუდიოჩანაწერს) და გამოსცემს ვექტორს — ჩვეულებრივ რამდენიმე ასეულიდან რამდენიმე ათას რიცხვამდე — რომელიც მას მაღალგანზომილებიან სივრცეში ერთ წერტილად აქცევს. მოდელი ისეა გაწვრთნილი, რომ მსგავსი მნიშვნელობის შემცველი ჩანაწერები ერთმანეთთან ახლოს აღმოჩნდნენ, ხოლო დაუკავშირებელი — შორს. ორი წინადადება, რომელიც ერთსა და იმავეს სხვადასხვა სიტყვებით გამოხატავს, თითქმის იდენტურ ვექტორს შეიძლება გამოსცემდეს, მიუხედავად იმისა, რომ არცერთი საერთო სიტყვა არ აქვთ.

როგორ მუშაობს ძებნა პრაქტიკაში

მას შემდეგ, რაც მონაცემები ვექტორებად არის გარდაქმნილი, ბაზის ამოცანაა სწრაფად უპასუხოს ერთ კითხვას, უამრავჯერ გამეორებით: მოცემული ახალი ვექტორისთვის, რომელი შენახული ვექტორებია მასთან ყველაზე ახლოს? „სიახლოვე" ჩვეულებრივ იზომება კოსინუსური მსგავსობით ან ევკლიდური მანძილით, ხოლო თავად გამოთვლით ამოცანას უახლოესი მეზობლის ძებნა ეწოდება.

მოთხოვნის შედარება ყოველ ცალკეულ შენახულ ვექტორთან (უხეში, სრული სკანირება) ზუსტ შედეგს იძლევა, მაგრამ მასშტაბს ვერ უძლებს — მილიონობით ჩანაწერზე ეს ნელი ხდება. ამის ნაცვლად, ვექტორული ბაზები ინდექსს აშენებენ მიახლოებითი უახლოესი მეზობლის (ANN) ალგორითმებით — ყველაზე ხშირად გრაფის სტრუქტურით სახელად HNSW (Hierarchical Navigable Small World) ან კლასტერიზაციის მეთოდით, როგორიცაა IVF (Inverted File Index). ეს მეთოდები სიზუსტის მცირე ნაწილს სანაცვლოდ იღებენ დიდი დაჩქარებისთვის და, ჩვეულებრივ, პასუხს ერთეულ ან ორნიშნა მილიწამებში აბრუნებენ, თუნდაც ათობით მილიონ ვექტორზე. მათი უმეტესობა ასევე უჭერს მხარს „ჰიბრიდულ ძებნას" — ვექტორული მსგავსობის შედეგს აერთიანებს ჩვეულებრივ საკვანძო-სიტყვიან ფილტრთან, რაც საშუალებას იძლევა მოთხოვნა ერთდროულად იყოს სემანტიკურად რელევანტური და შეზღუდული, ვთქვათ, კონკრეტული კატეგორიით ან თარიღით.

რატომ აქვს მნიშვნელობა

ვექტორული ბაზები სწორედ ის ინფრასტრუქტურული რგოლია, რომელიც სემანტიკურ ძებნას აპლიკაციის მასშტაბზე პრაქტიკულს ხდის, და ისინი სტანდარტული საცავია RAG-ის (Retrieval-Augmented Generation) მიღმა — ტექნიკის, რომელიც ჩატბოტს საშუალებას აძლევს, უპასუხოს კითხვებს კომპანიის საკუთარი დოკუმენტების საფუძველზე და არა მხოლოდ იმის, რაც დიდმა ენობრივმა მოდელმა წვრთნისას დაიმახსოვრა. ტიპურ RAG სისტემაში შემომავალი დოკუმენტები იყოფა ნაწყვეტებად, თითოეული ნაწყვეტი embedding-ად გარდაიქმნება და ინახება ვექტორულ ბაზაში, ხოლო მოთხოვნის დროს მომხმარებლის კითხვაც embedding-ად იქცევა და შედარდება ამ შენახულ ნაწყვეტებს, რათა მოდელმა პასუხის დაწერამდე ყველაზე რელევანტური ნაწყვეტები მიიღოს.

იგივე მექანიზმი მუშაობს რეკომენდაციების სისტემებშიც (მოძებნე პროდუქტები, რომლებიც მომხმარებელს მოეწონა მსგავსების მსგავსად), სურათებისა და აუდიოს ძებნაში (მოძებნე ვიზუალურად ან აკუსტიკურად მსგავსი ფაილები), დუბლიკატებისა და თაღლითობის აღმოჩენაში და ანომალიების დეტექციაში — ყველგან, სადაც კითხვა „ამის მსგავსი" უფრო სასარგებლოა, ვიდრე „ამის იდენტური".

საიდან დავიწყოთ

დეველოპერებს, რომლებსაც უკვე აქვთ გაშვებული PostgreSQL, შეუძლიათ დაამატონ ვექტორული ძებნა pgvector-ის საშუალებით — უფასო, ღია კოდის გაფართოებით, რომელიც embedding-ებს ინახავს ჩვეულებრივ რელაციურ მონაცემებთან ერთად და ცალკე სისტემას არ საჭიროებს. ის კომფორტულად უმკლავდება რამდენიმე მილიონამდე ვექტორის კოლექციებს საშუალო სიმძლავრის აპარატურაზეც კი. უფრო დიდი ან მოთხოვნადი დატვირთვისთვის, გავრცელებული ალტერნატივებია სრულად მართული სერვისები, როგორიცაა Pinecone, ან სპეციალურად ვექტორული ძებნისთვის აგებული ღია კოდის სისტემები, როგორებიცაა Weaviate და Milvus — არჩევანი, ჩვეულებრივ, ოპერაციული სიმარტივესა (მართული სერვისი) და ხარჯების კონტროლს/საკუთარ ინფრასტრუქტურაზე მართვის მოქნილობას (ღია კოდი) შორის კომპრომისს ნიშნავს.

მართული ვექტორული ბაზები, ჩვეულებრივ, ფასდება საცავისა და მოთხოვნების მოცულობის მიხედვით და არა ფიქსირებული საფასურით ერთ მომხმარებელზე. მაგალითად, Pinecone გთავაზობთ უფასო „Starter" დონეს (2GB საცავამდე და წაკითხვა/ჩაწერის ოპერაციების ყოველთვიური ლიმიტი), ხოლო ფასიანი, მოხმარებაზე დაფუძნებული გეგმები იწყება 20$/თვეში ფიქსირებული „Builder" დონით და „Standard" დონით, რომელიც მინიმუმ 50$/თვეში ღირს — 2026 წლის ივლისის მდგომარეობით, Pinecone-ის ფასების გვერდის მიხედვით. pgvector-ის, Weaviate-ის ან Milvus-ის საკუთარ ინფრასტრუქტურაზე გაშვება ამ გადასახადს მთლიანად აშორებს სანაცვლოდ იმისა, რომ ბაზის მართვა და მასშტაბირება თავად გიწევთ.