ट्यूटोरियल

CLIP और ChromaDB का उपयोग करके ग्राउंड अप से एक कला अनुशंसाकर्ता बनाना

कला छवियों को CLIP embeddings में परिवर्तित करने और उन्हें अनुशंसा प्रणाली में सिमेंटिक समानता खोज के लिए क्रोमाडीबी में संग्रहीत करने का एक गाइड।

CLIP और ChromaDB का उपयोग करके ग्राउंड अप से एक कला अनुशंसाकर्ता बनाना

मुख्य बिंदु

  • ट्यूटोरियल CLIP का उपयोग करके एकत्रित कला छवियों और मेटाडेटा को वेक्टर embeddings में परिवर्तित करके एक कला अनुशंसाकर्ता बनाता है, जो सरल मेटाडाटा फ़िल्टरिंग के बजाय सिमेंटिक समानता खोज सक्षम करता है।
  • CLIP का उपयोग इसलिए किया जाता है क्योंकि यह एक multimodal मॉडल है जो छवियों और पाठ को उसी वेक्टर स्पेस में मैप करता है, जिससे कलाकृतियों को साझा दृश्य या वैचारिक अर्थ द्वारा पुनः प्राप्त करने की अनुमति मिलती है।
  • क्रोमाडीबी vector database परत के रूप में कार्य करता है, जो स्थानीय रूप से embeddings को संग्रहीत करता है और पाठ या वेक्टर प्रश्नों के माध्यम से लगातार पुनर्प्राप्ति का समर्थन करता है।
  • क्रियान्वयन क्रोमाडीबी को एक वर्ग में लपेटता है जो संग्रह निर्माण, स्थायी भंडारण, embedding फ़ंक्शंस, मेटाडेटा फिल्टरिंग और समानता विकल्प जैसे कि कॉसिनस समानता का प्रबंधन करता है।
  • कार्यप्रवाह मौजूदा उच्च-गुणवत्ता वाली छवि और JSON मेटाडेटा फ़ाइलों को मानता है और CLIP embeddings की स्थापना, क्रोमाडीबी दृढ़ता और बाद में कला सिफारिश प्रणाली के लिए सिमेंटिक पुनर्प्राप्ति पर ध्यान केंद्रित करता है।

मेटा विवरण: जानें कि कैसे एक ट्यूटोरियल कला छवियों को एम्बेड करने, वेक्टर स्टोर करने और कला अनुशंसा प्रणाली के लिए सिमेंटिक पुनर्प्राप्ति तैयार करने के लिए CLIP और ChromaDB का उपयोग करता है।

Creating an Art Recommender from the Ground Up Using CLIP and ChromaDB

टैगः CLIP, ChromaDB, vector database , कला अनुशंसक, शब्दार्थ खोज

विशेष रुप से प्रदर्शित छवि: फ्रेम किए गए कलाकृतियों का अमूर्त चित्रण चमकती रेखाओं द्वारा वेक्टर डॉट्स के ग्रिड, दोस्ताना रंगों से जुड़ा हुआ है, कोई लोग नहीं हैं, कोई लोगो नहीं हैं और न ही कोई पाठ।

एक परियोजना का एक नया ट्यूटोरियल, Part II डेवलपर्स को दिखाता है कि पहले से एकत्र किए गए उच्च-गुणवत्ता वाले कला डेटा को CLIP और ChromaDB का उपयोग करके vector database में कैसे परिवर्तित किया जाए। इसका लक्ष्य छवि embeddings को संग्रहीत करना है ताकि एक कला अनुशंसाकर्ता शब्दार्थ समानता द्वारा कार्यों को पुनः प्राप्त कर सके, न कि लेखक, वर्ष या रंग के आधार पर JUST । यह उन पाठकों के लिए लक्षित है जिनके पास पहले से ही छवियां और मेटाडेटा हैं और बाद की वेक्टर क्वेरीज़ के लिए स्थानीय, लगातार डेटा परत चाहते हैं। ट्यूटोरियल पोर्ट-गौल्फर में चट्टानों का उपयोग करता है, बेले आईल द्वारा Claude Monet, शिकागो (एआरटीआईसी) के API Art Institute से पुनर्प्राप्त, इसके दृश्य एंकर के रूप में।

एक कला अनुशंसक के लिए अर्थ embeddings क्यों मायने रखता है

embedding एक तकनीकी कदम नहीं है। सबसे बुनियादी स्तर पर, machine learning मॉडल को संरचित संख्यात्मक प्रतिनिधित्व की आवश्यकता होती है, लेकिन छवियों का कई तरीकों से प्रतिनिधित्व किया जा सकता है। मेटाडेटा-संचालित embedding , लेखक, वर्ष और रंगों का उपयोग कर सकते हैं; कच्चे पिक्सेल embedding प्रत्येक पिक्सल के लिए तीव्रता मूल्यों का इस्तेमाल कर सकते थे। यदि परियोजना केवल मेटाडाटा का उपयोग करती थी, तो SQL डेटाबेस एक सरल और व्यापक रूप से अपनाया जाने वाला विकल्प हो सकता था।

Creating an Art Recommender from the Ground Up Using CLIP and ChromaDB

इस परियोजना के लिए, चुना गया लक्ष्य एक अनुशंसाकर्ता है, और एक बुनियादी अनुशंसक समानता पर निर्भर करता है, विशेष रूप से सिमेंटिक समानता। ट्यूटोरियल एक ठोस परीक्षण देता हैः यदि कोई उपयोगकर्ता प्रकृतिवादी कलाकृतियों को पसंद करता है तो मोनेट पेंटिंग्स की सिफारिश करना केवल इसलिए कि वे हरे रंग में होते हैं बहुत उथला होता है। विभिन्न युगों, क्षेत्रों और कलाकारों के दो चित्र अभी भी एक साथ हो सकते हैं अगर दोनों सुबह में जंगल दिखाते हैं, क्योंकि साझा विषय प्रकृति है।

इसीलिए परियोजना CLIP का उपयोग करती है, OpenAI द्वारा विकसित एक प्रसिद्ध foundation model । CLIP बहुआयामी हैः यह छवियों और पाठ को एक ही वेक्टर अंतरिक्ष में एन्कोड कर सकता है। ट्यूटोरियल विभिन्न चित्रों और अलग-अलग विवरणों को विभिन्न वैक्टरों के लिए मैप करते हुए छवि और उनके वर्णन को मानचित्रण करने के लिए मॉडल को प्रशिक्षित करने के रूप में अंतर्ज्ञान की व्याख्या करता है। इसमें यह भी ध्यान दिया गया है कि कोर गणित को मैट्रिक्स विकर्णकरण के रूप से वर्णित किया जा सकता है. उन पाठकों के लिए जो अधिक विस्तार चाहते हैं, ट्यूटोरील मीडियम लेख, मूल OpenAI ब्लॉग पोस्ट और रैडफोर्ड, ए., किम, जेडब्ल्यू, हेलेसी, सी., रमेश, ए, गोह, जी, अग्रवाल, एस, ... & Sutskever, I. (2021, July), Learning transferable visual models from natural language supervision, published in the International conference on machine learning , pages 8748[88763. ट्यूटोरियल में उस पेपर से एक आंकड़ा भी दिखाया गया है कि छवियों और कैप्शन को उसी वेक्टर स्पेस पर कैसे मैप किया जाता है। यह अलग-अलग embedding रिक्त स्थानों के बारे में पढ़ने की सिफारिश करता है, वेक्टर समानता, और दूरी उपाय करते हुए कहते हैं कि उन अवधारणाओं को चरणों का पालन करने की आवश्यकता नहीं है।

vector database को क्या करना चाहिए

ChromaDB एक open-source , वेक्टर डेटाबेस के निर्माण के लिए उपयोग में आसान लाइब्रेरी है। यह सहज ज्ञान युक्त वेक्टर भंडारण और पुनर्प्राप्ति के लिए डिज़ाइन किया गया है और बहु-मोडल उपयोग पर विचार करता है। ट्यूटोरियल क्रोमाडीबी API को एक वर्ग में लपेटता है जिसे क्रोमडीबीजेनेरेटर कहा जाता है। वह कक्षा छवि डेटा को वैक्टर के रूप में संग्रहीत करती है और पाठ या वेक्टर क्वेरीज़ के माध्यम से इसे पुनः प्राप्त करती है। रैपर क्रोमेडबी यूटिलिटीज, JSON और इमेज पाथ्स, embedding डेटा मॉडल और कॉसिनस समानता के लिए सहायक आयात करता है.

Creating an Art Recommender from the Ground Up Using CLIP and ChromaDB

वर्ग निरंतर भंडारण, संग्रह नामकरण, समानता सेटिंग्स, embedding फ़ंक्शंस और डेटा लोडिंग को नियंत्रित करता है। स्थायी क्लाइंट, क्रोमैडब.पर्सिस्टेंटक्लाइंट ((path=CHROMA_DATA_PATH), स्थानीय डिस्क पर डेटाबेस रखता है, इसलिए एक नया सत्र इसे फिर से उपयोग किए बिना डेटा का उपयोग कर सकता है। संग्रह client.get_or_create_collection... के साथ बनाया गया है, _functions.OpenCLIPEmbeddingFunction (), इमेजलोडर ()) और वेक्टर_समानता शब्दकोष से मेटाडेटा का उपयोग करके। शब्दकोश तीन समानता विकल्पों को परिभाषित करता हैः cosine_similarity as hnsw:space:cosine, l2_norm as hNSw: space:l2, and inner_product as hNsw: s. ट्यूटोरियल कहता है कि इस चरण में मास्टर पाठकों के लिए आवश्यक होने की आवश्यकता के बिना कॉस्नाइटिटी मूल अवधारणा है और HNSW को पुनर्प्राप्ति बिंदुओं के रूप में संदर्भित करती है।

ट्यूटोरियल नोट करता है कि इसका कोड वर्तमान क्रोमाडीबी सुविधाओं से पुराना हो सकता है और पाठकों को नवीनतम प्रलेखन की जांच करने के लिए प्रोत्साहित करता है। यह भी ध्यान देता है कि, लेखन के समय, OpenCLIPEmbeddingFunction केवल छवि embedding मॉडल ChromaDB के भीतर उपलब्ध है, और अन्य embedding विधियों को बाहरी रूप से उत्पन्न किया जा सकता है.

वर्ग मेटाडेटा को भी संभालता है. यह .jpg फ़ाइलों और मिलान . JSON फाइलों को पढ़ता है, फिर मेटाडाटा को मानों के लिए फ़िल्टर करता है जो क्रोमाडीबी स्वीकार करता हैः स्ट्रिंग्स, पूर्णांक, फ्लोट्स और बुलियन। मेटा डेटा जोड़ना वैकल्पिक है क्योंकि कोई मूल्य समस्या पैदा नहीं कर सकता है। यदि मेटा डाटा साफ है, तो ट्यूटोरियल कहता है कि इसे जोड़ने से पुनर्प्राप्ति अधिक बारीक हो सकती है। Because CLIP बहु-मोडल है, एक ही संग्रह केवल छवि फ़ाइलों के माध्यम से टेक्स्ट दस्तावेज़ों को स्वीकार कर सकते हैं add_text_data_to_collectionids, दस्तावेज), न कि केवल इमेज फ़ाइलें।

CLIP और ChromaDB के साथ चरण-दर-चरण सेटअप

  1. एकत्रित कला डेटा से शुरू करें. पिछले ट्यूटोरियल भाग उच्च गुणवत्ता वाली छवियों और संबंधित JSON फ़ाइलों को इकट्ठा किया। यह चरण मानता है कि वे फाइलें पहले से मौजूद हैं.
  1. मेटाडेटा-केवल embedding के बजाय सिमेंटिक embedding चुनें. अनुशंसक के लिए, परियोजना CLIP का चयन करती है ताकि छवि और पाठ क्वेरी एक ही वेक्टर स्पेस में रह सकें।
  1. ChromaDB का स्थायी संग्रहण कॉन्फ़िगर करें. CHROMA_DATA_PATH के साथ एक पथ बनाएँ और संग्रह को स्थिर collection_name दें, क्योंकि एकाधिक संग्रहों को एक उदाहरण द्वारा संभाला जा सकता है.
  1. समानता विधि सेट करें. डिफ़ॉल्ट रूप से similarity_measure="cosine_similarity" का उपयोग करें, या वेक्टर_समानता शब्दकोश के माध्यम से l2_norm या आंतरिक_उत्पाद चुनें।
  1. क्लाइंट और embedding फ़ंक्शन का उदाहरण बनाएं. chromadb.PersistentClient और OpenCLIPEmbeddingFunction का उपयोग करें. ट्यूटोरियल नोट करता है कि, लेखन के समय, यह क्रोमाडीबी के भीतर एकमात्र उपलब्ध छवि multimodal मॉडल है, और अन्य embeddings विधियों को बाहरी रूप से उत्पन्न किया जा सकता है और फिर संग्रहीत किया जा सकेगा.
  1. एक छवि लोडर शामिल करें. Use ImageLoader) जब include_data_loader सही है, तो embedding से पहले चित्रों को लगातार पूर्व-प्रसंस्करण किया जाता है।
  1. संग्रह बनाएँ या लाएँ. संग्रह नाम, embedding फ़ंक्शन, डेटा लोडर और समानता मेटाडेटा के साथ get_or_create_collection को कॉल करें.
  1. छवि नाम और मेटाडेटा लोड करें. retrieve_images_and_jsons .jpg फ़ाइलों के लिए स्कैन करता है, प्रत्येक चित्र के लिए मिलान करने वाली . JSON फाइल खोलता है, मान हटा देता है जो क्रोमाडीबी आवश्यकताओं का अनुपालन नहीं करते हैं, और self.jsons में साफ किए गए मेटाडाटा को संग्रहीत करता है.
  1. वेक्टर संग्रह में चित्र जोड़ें. add_image_data_to_collection बिना .jpg के छवि नामों से आईडी बनाता है, images_path से यूरिस और JSON फ़ाइलों से वैकल्पिक मेटाडेटा।
  1. यदि आवश्यक हो तो पाठ डेटा जोड़ें. add_text_data_to_collection दस्तावेज़ों को उनकी आईडी के साथ सम्मिलित करता है, जिससे CLIP के साझा वेक्टर स्थान के माध्यम से text-to-image पुनर्प्राप्ति सक्षम होती है।
  1. embedding पुनर्प्राप्ति के लिए तैयार करें. ट्यूटोरियल चयनित छवियों से संबंधित embeddings को पुनः प्राप्त करने के रूप में अगली सुविधा की पहचान करता है, जो बाद में समानता प्रश्नों का समर्थन करता है।

यह आगे क्या सक्षम बनाता है

यह सेटअप कला अनुशंसक को एक स्थानीय वेक्टर परत देता है जो दृश्य अर्थ द्वारा छवियों को पुनः प्राप्त कर सकता है, छवियां पाठ के साथ तुलना करता है और सत्रों में संग्रहीत embeddings का पुनः उपयोग करता है। यह परियोजना को अगली वर्णित सुविधा के लिए भी तैयार करता हैः चयनित चित्रों के लिए embeddings लाना। ट्यूटोरियल नोट्स कि वास्तविक डेटाबेस डिज़ाइन पुनरावर्ती है, क्योंकि APP का परीक्षण करने के बाद अधिक विशेषताएं वांछनीय हो सकती हैं। यह पाठकों के लिए महत्वपूर्ण है क्योंकि सिमेंटिक पुनर्प्राप्ति विभिन्न कलाकारों, युगों और क्षेत्रों में सिफारिशों का समर्थन कर सकती है जब काम विषय-वस्तु साझा करते हैं, जैसे प्रकृति पर सुबह, उथले रंग या लेखक फ़िल्टर पर भरोसा किए बिना। स्रोत अधिक उन्नत embedding -स्पेस पृष्ठभूमि सिद्धांत को वैकल्पिक रूप से छोड़ता है, इसलिए व्यावहारिक मार्ग स्पष्ट हैः CLIP क्रोमाडीबी में वेक्टर स्टोर करें, मेटाडेटा साफ़ रखें, और वहां से क्वेरी बनाएं।

आम गलतियाँ

  • embeddings को केवल एक तकनीकी विवरण के रूप में व्यवहार करना। परियोजना को अर्थ संबंधी समानता की आवश्यकता है, इसलिए मेटाडेटा या कच्चे पिक्सेल मान अकेले उपयोगकर्ता इरादे से मेल नहीं खा सकते हैं.
  • संग्रह नामों को असंगत रूप से स्विच करना. एक स्थायी क्रोमाडीबी संग्रह में स्थिर नाम होना चाहिए जब कई संग्रह का उपयोग उसी उदाहरण के माध्यम से किया जाता है.
  • मानों की जाँच किए बिना गन्दा मेटाडेटा जोड़ना. कोई मूल्य और असमर्थित प्रकार पुनर्प्राप्ति या भंडारण समस्याओं का कारण बन सकते हैं.
  • Assuming CLIP केवल छवियों के लिए है. इसका मल्टी-मोडल डिज़ाइन पाठ और चित्रों को एक ही वेक्टर स्पेस में क्वेरी करने की अनुमति देता है।
  • समानता विकल्प को अनदेखा करना. स्रोत डिफ़ॉल्ट रूप से कॉसिनस समानता के लिए है, लेकिन l2_norm और inner_product hnsw:space सेटिंग्स के माध्यम से उपलब्ध हैं।
  • अनावश्यक रूप से पुनः embedding डेटा. एक स्थायी क्लाइंट स्थानीय भंडारण रखता है ताकि नया सत्र वेक्टरों का पुनः उपयोग कर सके.

Comments (0)

  1. No comments yet. Be the first to share what worked for you.

Leave a comment

Comments are reviewed before they appear. Your email address is not published.