Sažetak | Podaci koji se pohranjuju u današnjim bazama podataka, prema svojemu obliku, mogu se podijeliti u tri skupine: strukturirani, nestrukturirani i polu-strukturirani. Premda ne postoji jasno definirana granica između strukturiranih i nestrukturiranih podataka, može se zaključiti da su strukturirani podaci oni podaci koji odgovaraju formalno definiranom podatkovnom modelu te koje obilježavaju jasno definirani tipovi podataka. Za usporedbu, nestrukturirani podaci nemaju prepoznatljivu strukturu, odnosno nisu raspoređeni prema unaprijed postavljenom podatkovnom modelu ili shemi. Najpoznatiji primjeri takvih podataka su fotografije, videozapisi, zvuk i sl. Danas se bilježi značajan porast uporabe i skladištenja nestrukturiranih podataka. Između 80 i 90 posto podataka koje velike firme i organizacije stvaraju je nestrukturirano. Međutim, prema anketi koju je provela Deloitte kompanija, samo 18% organizacija je spremno za obradu i skladištenje takvih podataka. Kroz povijest, nestrukturirani podaci bili su vrlo teški za analizirati te ih je vrlo nezgodno, gotovo nemoguće pohraniti i obrađivati kroz standardne sustave za upravljanje relacijskim bazama podataka (RDBMS). Nestrukturirani podaci mogu se pohranjivati u raznim oblicima noSQL baza podataka, data lake-ovima ili skladištima podataka. Strojno učenje (engl. Machine learning), kroz razne modele omogućuje pretvorbu kompleksnih nestrukturiranih podataka u numeričke reprezentacije zvane vektorske ugradnje (engl. vector embeddings). Drugim riječima, moguće je stvarne objekte poput slika, zvuka, tekstualnih datoteka ili videozapisa reprezentirati pomoću matematičkih vektora. Vektorske baze podataka su dizajnirane da rade s karakteristikama vektorskih ugradnji. One indeksiraju podatke na način koji olakšava pretraživanje i dohvaćanje objekata prema njihovim numeričkim vrijednostima. Glavna funkcionalnost koju pružaju vektorske baze podataka su jednostavno pretraživanje i dohvaćanje sličnih vektora. Semantička pretraga teksta, pretraživanje po sličnosti, rangiranje web stranica ili detekcija anomalija, najčešći su slučajevi upotrebe vektorskih baza podataka. U ovom radu objašnjeni su sljedeći koncepti: strukturirani i nestrukturirani podaci, neuronske mreže i „vektorizacija“ podataka pomoću modela dubokog učenja te vektorske baze podataka i njihova primjena. Kako bi se preciznije prikazao princip rada vektorskih baza podataka, za potrebe ovog završnog rada izrađena je aplikacija za pretraživanje slika po sličnosti (engl. Reverse image search). Aplikacija je implementirana pomoću Milvus.io vektorske baze podataka i Towhee.io – Python modula za kodiranje nestrukturiranih podataka. |
Sažetak (engleski) | The data stored in today's databases, according to its structure, can be divided into three groups: structured, unstructured, and semi-structured. Although a clearly defined boundary between structured and unstructured data doesn't exist, it can be concluded that structured data is data that corresponds to a formally defined data model and is characterized by clearly defined data types. In comparison, unstructured data has no recognizable structure, that is, it is not arranged according to a pre-set data model or schema. The best-known examples of such data are photos, videos, sound, etc. Today, there is a significant increase in the use and storage of unstructured data. Between 80 and 90 percent of the data that large companies and organizations create is unstructured. However, according to a survey conducted by Deloitte, only 18% of organizations are ready to process and store such data. Historically, unstructured data has been very difficult to analyze and very inconvenient, if not impossible, to store and process through standard relational database management systems (RDBMS). Unstructured data can be stored in various forms of noSQL databases, data lakes, or data warehouses. Machine learning, through various models, enables the conversion of complex unstructured data into numerical representations called vector embeddings. In other words, it is possible to represent real-world objects such as images, sounds, text files, or videos using mathematical vectors. Vector databases are designed to work with the characteristics of vector embeddings. They index data in a way that facilitates searching and retrieving objects by their numerical values. The main functionality provided by vector databases is simple search and retrieval of similar vectors. Semantic text search, similarity search, web page ranking, or anomaly detection are the most common use cases of vector databases. In this paper, the following concepts are explained: structured and unstructured data, neural networks, and "vectorization" of data using deep learning models and vector databases and their application. For this undergraduate thesis, and in order to more precisely show the working principle of vector databases, a simple image similarity search (Reverse image search) app was developed. The application is implemented using the Milvus.io vector database and Towhee.io Python module for encoding unstructured data. |