कोडलैब - Neo4j और Vertex AI का इस्तेमाल करके, मूवी के सुझाव देने वाला चैटबॉट बनाना

1. खास जानकारी

इस कोडलैब में, Neo4j, Google Vertex AI, और Gemini की सुविधाओं को मिलाकर, फ़िल्मों के सुझाव देने वाला एक स्मार्ट चैटबॉट बनाया जाएगा. इस सिस्टम के केंद्र में Neo4j नॉलेज ग्राफ़ है. यह इंटरकनेक्टेड नोड और संबंधों के नेटवर्क के ज़रिए, फ़िल्मों, कलाकारों, निर्देशकों, शैलियों वगैरह को मॉडल करता है.

सिमेंटिक अंडरस्टैंडिंग की मदद से उपयोगकर्ता अनुभव को बेहतर बनाने के लिए, Vertex AI के text-embedding-004 मॉडल (या नए मॉडल) का इस्तेमाल करके, मूवी के प्लॉट की खास जानकारी से वेक्टर एम्बेडिंग जनरेट करें. इन एम्बेडिंग को Neo4j में इंडेक्स किया जाता है, ताकि मिलते-जुलते कॉन्टेंट को तेज़ी से खोजा जा सके.

आखिर में, Gemini को बातचीत वाले इंटरफ़ेस के साथ इंटिग्रेट किया जाएगा. इससे उपयोगकर्ता, आम बोलचाल की भाषा में सवाल पूछ सकेंगे. जैसे, "अगर मुझे इंटरस्टेलर पसंद आई, तो मुझे कौनसी फ़िल्म देखनी चाहिए?" इसके बाद, उन्हें सिमैंटिक समानता और ग्राफ़ पर आधारित कॉन्टेक्स्ट के आधार पर, फ़िल्मों के सुझाव मिलेंगे.

कोडलैब के ज़रिए, आपको यहां दिया गया तरीका अपनाना होगा:

  1. फ़िल्म से जुड़ी इकाइयों और उनके बीच के संबंधों के साथ Neo4j नॉलेज ग्राफ़ बनाना
  2. Vertex AI का इस्तेमाल करके, मूवी की खास जानकारी के लिए टेक्स्ट एम्बेडिंग जनरेट/लोड करना
  3. Gemini की मदद से काम करने वाले Gradio चैटबॉट इंटरफ़ेस को लागू करना. यह इंटरफ़ेस, वेक्टर सर्च को ग्राफ़ पर आधारित साइफ़र एक्ज़ीक्यूशन के साथ जोड़ता है
  4. (ज़रूरी नहीं) ऐप्लिकेशन को Cloud Run पर स्टैंडअलोन वेब ऐप्लिकेशन के तौर पर डिप्लॉय करना

आपको क्या सीखने को मिलेगा

  • Cypher और Neo4j का इस्तेमाल करके, मूवी का नॉलेज ग्राफ़ बनाने और उसे पॉप्युलेट करने का तरीका
  • सिमैंटिक टेक्स्ट एम्बेडिंग जनरेट करने और उनके साथ काम करने के लिए, Vertex AI का इस्तेमाल कैसे करें
  • GraphRAG का इस्तेमाल करके, बेहतर तरीके से जानकारी पाने के लिए एलएलएम और नॉलेज ग्राफ़ को एक साथ इस्तेमाल करने का तरीका
  • Gradio का इस्तेमाल करके, इस्तेमाल में आसान चैट इंटरफ़ेस बनाने का तरीका
  • Google Cloud Run पर डिप्लॉय करने का तरीका

आपको इन चीज़ों की ज़रूरत होगी

  • Chrome वेब ब्राउज़र
  • Gmail खाता
  • बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट
  • Neo4j Aura DB का बिना शुल्क वाला खाता
  • टर्मिनल कमांड और Python की बुनियादी जानकारी (ज़रूरी नहीं, लेकिन मददगार)

यह कोडलैब, सभी लेवल के डेवलपर (शुरुआती डेवलपर भी शामिल हैं) के लिए बनाया गया है. इसमें सैंपल ऐप्लिकेशन में Python और Neo4j का इस्तेमाल किया गया है. Python और ग्राफ़ डेटाबेस के बारे में बुनियादी जानकारी होना मददगार हो सकता है. हालांकि, कॉन्सेप्ट को समझने या साथ-साथ काम करने के लिए, पहले से कोई अनुभव होना ज़रूरी नहीं है.

a194b635f913211b.png

2. Neo4j AuraDB को सेटअप करना

Neo4j, एक लोकप्रिय नेटिव ग्राफ़ डेटाबेस है. यह डेटा को नोड (इकाइयां) और रिलेशनशिप (इकाइयों के बीच कनेक्शन) के नेटवर्क के तौर पर सेव करता है. इसलिए, यह उन मामलों में इस्तेमाल करने के लिए सबसे सही है जहां कनेक्शन को समझना ज़रूरी है. जैसे, सुझाव देना, धोखाधड़ी का पता लगाना, नॉलेज ग्राफ़ वगैरह. रिलेशनल या दस्तावेज़ पर आधारित डेटाबेस, टेबल या क्रमबद्ध स्ट्रक्चर पर निर्भर करते हैं. हालांकि, Neo4j का फ़्लेक्सिबल ग्राफ़ मॉडल, जटिल और आपस में जुड़े डेटा को आसानी से और असरदार तरीके से दिखाने की सुविधा देता है.

रिलेशनल डेटाबेस की तरह, Neo4j डेटा को लाइनों और टेबल में व्यवस्थित करने के बजाय, ग्राफ़ मॉडल का इस्तेमाल करता है. इसमें जानकारी को नोड (इकाइयां) और संबंधों (उन इकाइयों के बीच कनेक्शन) के तौर पर दिखाया जाता है. यह मॉडल, ऐसे डेटा के साथ काम करने के लिए बहुत आसान है जो स्वाभाविक रूप से एक-दूसरे से जुड़ा होता है. जैसे, लोग, जगहें, प्रॉडक्ट या हमारे मामले में, फ़िल्में, कलाकार, और शैलियां.

उदाहरण के लिए, किसी फ़िल्म के डेटासेट में:

  • कोई नोड, Movie, Actor या Director को दिखा सकता है
  • संबंध ACTED_IN या DIRECTED हो सकता है

9bdf75fa306c2e84.jpeg

इस स्ट्रक्चर की मदद से, आसानी से इस तरह के सवाल पूछे जा सकते हैं:

  • इस अभिनेता ने किन फ़िल्मों में काम किया है?
  • क्रिस्टोफ़र नोलन के साथ किन लोगों ने काम किया है?
  • शेयर किए गए कलाकारों या शैलियों के आधार पर, मिलती-जुलती फ़िल्में कौनसी हैं?

Neo4j में एक पावरफ़ुल क्वेरी लैंग्वेज होती है, जिसे Cypher कहा जाता है. इसे खास तौर पर ग्राफ़ से क्वेरी करने के लिए डिज़ाइन किया गया है. Cypher की मदद से, मुश्किल पैटर्न और कनेक्शन को कम शब्दों में और आसानी से समझा जा सकता है. उदाहरण के लिए: यह Cypher क्वेरी, अभिनेता, फ़िल्म, और भूमिका की जानकारी के साथ उनके संबंध को यूनीक तरीके से बनाने के लिए MERGE का इस्तेमाल करती है. इससे डुप्लीकेट जानकारी से बचा जा सकता है.

MERGE (a:Actor {name: "Tom Hanks"})
MERGE (m:Movie {title: "Toy Story", released: 1995})
MERGE (a)-[:ACTED_IN {roles: ["Woody"]}]->(m);

Neo4j, आपकी ज़रूरतों के हिसाब से डिप्लॉयमेंट के कई विकल्प देता है:

  • खुद मैनेज किया गया: Neo4j Desktop का इस्तेमाल करके, अपने इन्फ़्रास्ट्रक्चर पर Neo4j चलाएं. इसके अलावा, इसे Docker इमेज के तौर पर भी इस्तेमाल किया जा सकता है. यह सुविधा, कंपनी की इमारत में या आपके क्लाउड में उपलब्ध है.
  • क्लाउड-मैनेज किया गया: मार्केटप्लेस ऑफ़र का इस्तेमाल करके, लोकप्रिय क्लाउड सेवा देने वाली कंपनियों पर Neo4j को डिप्लॉय करें.
  • पूरी तरह से मैनेज किया गया: Neo4j AuraDB का इस्तेमाल करें. यह Neo4j का पूरी तरह से मैनेज किया गया क्लाउड डेटाबेस-एज़-ए-सर्विस है. यह आपके लिए प्रोविज़निंग, स्केलिंग, बैकअप, और सुरक्षा को मैनेज करता है.

इस कोडलैब में, हम Neo4j AuraDB Free का इस्तेमाल करेंगे. यह AuraDB का बिना किसी शुल्क वाला टियर है. यह पूरी तरह से मैनेज किया गया ग्राफ़ डेटाबेस इंस्टेंस उपलब्ध कराता है. इसमें प्रोटोटाइपिंग, सीखने, और छोटे ऐप्लिकेशन बनाने के लिए ज़रूरी स्टोरेज और सुविधाएँ होती हैं. यह फ़िल्मों के सुझाव देने वाले GenAI की मदद से काम करने वाले चैटबॉट को बनाने के हमारे लक्ष्य के लिए सबसे सही है.

आपको एक मुफ़्त AuraDB इंस्टेंस बनाना होगा. इसके बाद, कनेक्शन क्रेडेंशियल का इस्तेमाल करके इसे अपने ऐप्लिकेशन से कनेक्ट करना होगा. साथ ही, इस पूरे लैब में इसका इस्तेमाल करके, अपनी मूवी के नॉलेज ग्राफ़ को सेव और क्वेरी करना होगा.

ग्राफ़ क्यों?

पारंपरिक रिलेशनल डेटाबेस में, "कलाकारों या शैली के आधार पर, इनसेप्शन जैसी कौनसी फ़िल्में हैं?" जैसे सवालों के जवाब देने के लिए, कई टेबल में JOIN ऑपरेशन करना पड़ता है. रिश्तों की जटिलता बढ़ने पर, परफ़ॉर्मेंस और पढ़ने में आसानी कम हो जाती है.

हालांकि, Neo4j जैसे ग्राफ़ डेटाबेस को रिश्तों को आसानी से समझने के लिए बनाया गया है. इसलिए, ये सुझाव देने वाले सिस्टम, सिमैंटिक सर्च, और स्मार्ट असिस्टेंट के लिए सबसे सही विकल्प हैं. ये डेटा मॉडल, असल दुनिया से जुड़े कॉन्टेक्स्ट को कैप्चर करने में मदद करते हैं. जैसे, सहयोग करने वाले नेटवर्क, स्टोरीलाइन या दर्शकों की प्राथमिकताएं. इन्हें पारंपरिक डेटा मॉडल का इस्तेमाल करके दिखाना मुश्किल हो सकता है.

कनेक्ट किए गए इस डेटा को Gemini जैसे एलएलएम और Vertex AI से वेक्टर एम्बेडिंग के साथ मिलाकर, हम चैटबॉट के अनुभव को बेहतर बना सकते हैं. इससे चैटबॉट, ज़्यादा मनमुताबिक और काम के तरीके से जवाब दे पाता है. साथ ही, जानकारी को खोज पाता है और तर्क दे पाता है.

Neo4j AuraDB Free Creation

  1. https://console.neo4j.io पर जाएं
  2. अपने Google खाते या ईमेल से लॉग इन करें.
  3. "मुफ़्त इंस्टेंस बनाएं" पर क्लिक करें.
  4. इंस्टेंस चालू होने के दौरान, आपको एक पॉप-अप विंडो दिखेगी. इसमें आपके डेटाबेस के कनेक्शन क्रेडेंशियल दिखेंगे.

पक्का करें कि आपने पॉप-अप से यह जानकारी डाउनलोड करके सुरक्षित तरीके से सेव कर ली हो. अपने ऐप्लिकेशन को Neo4j से कनेक्ट करने के लिए, यह जानकारी ज़रूरी है:

NEO4J_URI=neo4j+s://<your-instance-id>.databases.neo4j.io
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=<your-generated-password>
AURA_INSTANCEID=<your-instance-id>
AURA_INSTANCENAME=<your-instance-name>

इन वैल्यू का इस्तेमाल, अगले चरण में Neo4j से पुष्टि करने के लिए, अपने प्रोजेक्ट में .env फ़ाइल को कॉन्फ़िगर करने के लिए किया जाएगा.

a1e29e56e6c412fc.png

Neo4j AuraDB Free, डेवलपमेंट, एक्सपेरिमेंट, और छोटे पैमाने पर ऐप्लिकेशन बनाने के लिए सबसे सही है. जैसे, यह कोडलैब. इसमें इस्तेमाल की सीमाएं काफ़ी ज़्यादा हैं. यह 2,00,000 नोड और 4,00,000 संबंधों के साथ काम करता है. इसमें नॉलेज ग्राफ़ बनाने और क्वेरी करने के लिए ज़रूरी सभी सुविधाएं मिलती हैं. हालांकि, इसमें कस्टम प्लगिन या ज़्यादा स्टोरेज जैसे ऐडवांस कॉन्फ़िगरेशन की सुविधा नहीं मिलती. प्रोडक्शन वर्कलोड या बड़े डेटासेट के लिए, AuraDB के अपग्रेड किए गए प्लान पर स्विच किया जा सकता है. इसमें ज़्यादा क्षमता, बेहतर परफ़ॉर्मेंस, और एंटरप्राइज़-ग्रेड की सुविधाएं मिलती हैं.

इस सेक्शन में, Neo4j AuraDB बैकएंड को सेट अप करने के बारे में बताया गया है. अगले चरण में, हम एक Google Cloud प्रोजेक्ट बनाएंगे, रिपॉज़िटरी को क्लोन करेंगे, और ज़रूरी एनवायरमेंट वैरिएबल कॉन्फ़िगर करेंगे. इससे, हम कोडलैब शुरू करने से पहले, डेवलपमेंट एनवायरमेंट को तैयार कर पाएंगे.

3. शुरू करने से पहले

प्रोजेक्ट बनाना

  1. Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर, Google Cloud प्रोजेक्ट चुनें या बनाएं.
  2. पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग चालू हो. किसी प्रोजेक्ट के लिए बिलिंग चालू है या नहीं, यह देखने का तरीका जानें .
  3. आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है. इसमें bq पहले से लोड होता है. Google Cloud Console में सबसे ऊपर मौजूद, Cloud Shell चालू करें पर क्लिक करें.

Cloud Shell बटन की इमेज चालू करें

  1. Cloud Shell से कनेक्ट होने के बाद, यह देखने के लिए कि आपकी पुष्टि हो चुकी है और प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर सेट किया गया है, इस कमांड का इस्तेमाल करें:
gcloud auth list
  1. यह पुष्टि करने के लिए कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है, Cloud Shell में यह कमांड चलाएं.
gcloud config list project
  1. अगर आपका प्रोजेक्ट सेट नहीं है, तो इसे सेट करने के लिए इस निर्देश का इस्तेमाल करें:
gcloud config set project <YOUR_PROJECT_ID>
  1. नीचे दिए गए निर्देश का इस्तेमाल करके, ज़रूरी एपीआई चालू करें. इसमें कुछ मिनट लग सकते हैं. इसलिए, कृपया इंतज़ार करें.
gcloud services enable cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       run.googleapis.com \
                       cloudbuild.googleapis.com \
                       cloudfunctions.googleapis.com \
                       aiplatform.googleapis.com 

कमांड के सही तरीके से काम करने पर, आपको यह मैसेज दिखेगा: "Operation .... finished successfully".

gcloud कमांड के बजाय, कंसोल का इस्तेमाल करके भी ऐसा किया जा सकता है. इसके लिए, हर प्रॉडक्ट को खोजें या इस लिंक का इस्तेमाल करें.

अगर कोई एपीआई छूट जाता है, तो उसे लागू करने के दौरान कभी भी चालू किया जा सकता है.

gcloud कमांड और उनके इस्तेमाल के बारे में जानने के लिए, दस्तावेज़ देखें.

रिपॉज़िटरी को क्लोन करना और एनवायरमेंट की सेटिंग सेटअप करना

अगला चरण, उस सैंपल रिपॉज़िटरी को क्लोन करना है जिसे हम कोडलैब के बाकी हिस्से में रेफ़र करेंगे. मान लें कि आप Cloud Shell में हैं. अपनी होम डायरेक्ट्री से यह कमांड दें:

git clone https://github.com/sidagarwal04/neo4j-vertexai-codelab.git

एडिटर लॉन्च करने के लिए, Cloud Shell विंडो के टूलबार पर मौजूद एडिटर खोलें पर क्लिक करें. सबसे ऊपर बाएं कोने में मौजूद मेन्यू बार पर क्लिक करें. इसके बाद, नीचे दिए गए तरीके से फ़ाइल → फ़ोल्डर खोलें को चुनें:

66221fd0d0e5202f.png

neo4j-vertexai-codelab फ़ोल्डर चुनें. इसके बाद, आपको नीचे दिखाए गए फ़ोल्डर की तरह ही स्ट्रक्चर वाला फ़ोल्डर दिखेगा:

e49542efd70de22e.png

इसके बाद, हमें एनवायरमेंट वैरिएबल सेट अप करने होंगे. इनका इस्तेमाल पूरे कोडलैब में किया जाएगा. example.env फ़ाइल पर क्लिक करें. इसके बाद, आपको कॉन्टेंट इस तरह दिखेगा:

NEO4J_URI=
NEO4J_USER=
NEO4J_PASSWORD=
NEO4J_DATABASE=
PROJECT_ID=
LOCATION=

अब example.env फ़ाइल वाले फ़ोल्डर में ही .env नाम की एक नई फ़ाइल बनाएं. इसके बाद, मौजूदा example.env फ़ाइल का कॉन्टेंट कॉपी करें. अब इन वैरिएबल को अपडेट करें:

  • NEO4J_URI, NEO4J_USER, NEO4J_PASSWORD, और NEO4J_DATABASE:
  • पिछले चरण में, Neo4j AuraDB Free इंस्टेंस बनाते समय दिए गए क्रेडेंशियल का इस्तेमाल करके, इन वैल्यू को भरें.
  • AuraDB Free के लिए, NEO4J_DATABASE को आम तौर पर neo4j पर सेट किया जाता है.
  • PROJECT_ID और LOCATION:
  • अगर Google Cloud Shell से कोडलैब चलाया जा रहा है, तो इन फ़ील्ड को खाली छोड़ा जा सकता है. ऐसा इसलिए, क्योंकि ये आपके चालू प्रोजेक्ट कॉन्फ़िगरेशन से अपने-आप भर जाएंगे.
  • अगर आपने Cloud Shell के बाहर या लोकल तौर पर कमांड चलाई है, तो PROJECT_ID को उस Google Cloud प्रोजेक्ट के आईडी से अपडेट करें जिसे आपने पहले बनाया था.साथ ही, LOCATION को उस इलाके पर सेट करें जिसे आपने उस प्रोजेक्ट के लिए चुना था. उदाहरण के लिए, us-central1.

इन वैल्यू को भरने के बाद, .env फ़ाइल को सेव करें. इस कॉन्फ़िगरेशन की मदद से, आपका ऐप्लिकेशन Neo4j और Vertex AI, दोनों सेवाओं से कनेक्ट हो पाएगा.

डेवलपमेंट एनवायरमेंट सेट अप करने का आखिरी चरण, Python वर्चुअल एनवायरमेंट बनाना है. साथ ही, requirements.txt फ़ाइल में दी गई सभी ज़रूरी डिपेंडेंसी इंस्टॉल करना है. इन डिपेंडेंसी में, Neo4j, Vertex AI, Gradio वगैरह के साथ काम करने के लिए ज़रूरी लाइब्रेरी शामिल हैं.

सबसे पहले, यहां दिए गए निर्देश को चलाकर .venv नाम का वर्चुअल एनवायरमेंट बनाएं:

python -m venv .venv

एनवायरमेंट बन जाने के बाद, हमें इस कमांड का इस्तेमाल करके बनाए गए एनवायरमेंट को चालू करना होगा

source .venv/bin/activate

अब आपको अपने टर्मिनल प्रॉम्प्ट की शुरुआत में (.venv) दिखेगा. इससे पता चलता है कि एनवायरमेंट ऐक्टिव है. उदाहरण के लिए: (.venv) yourusername@cloudshell:

अब, यह कमांड चलाकर ज़रूरी डिपेंडेंसी इंस्टॉल करें:

pip install -r requirements.txt

यहां फ़ाइल में दी गई मुख्य डिपेंडेंसी का स्नैपशॉट दिया गया है:

gradio>=4.0.0
neo4j>=5.0.0
numpy>=1.20.0
python-dotenv>=1.0.0
google-cloud-aiplatform>=1.30.0
vertexai>=0.0.1

सभी डिपेंडेंसी इंस्टॉल हो जाने के बाद, आपका लोकल Python एनवायरमेंट पूरी तरह से कॉन्फ़िगर हो जाएगा. इससे इस कोडलैब में स्क्रिप्ट और चैटबॉट को चलाया जा सकेगा.

बहुत बढ़िया ! अब हम अगले चरण पर जाने के लिए तैयार हैं. इस चरण में, डेटासेट को समझा जाता है. साथ ही, इसे ग्राफ़ बनाने और सिमैंटिक एनरिचमेंट के लिए तैयार किया जाता है.

4. फ़िल्मों का डेटासेट तैयार करना

हमारा पहला काम, Movies डेटासेट तैयार करना है. इसका इस्तेमाल हम नॉलेज ग्राफ़ बनाने और सुझाव देने वाले चैटबॉट को बेहतर बनाने के लिए करेंगे. हम शुरू से डेटा इकट्ठा करने के बजाय, पहले से मौजूद ओपन डेटासेट का इस्तेमाल करेंगे और उसे बेहतर बनाएंगे.

हम Rounak Banik का The Movies Dataset इस्तेमाल कर रहे हैं. यह Kaggle पर उपलब्ध एक लोकप्रिय सार्वजनिक डेटासेट है. इसमें TMDB की 45,000 से ज़्यादा फ़िल्मों का मेटाडेटा शामिल है. जैसे, कलाकारों और क्रू के सदस्यों के नाम, कीवर्ड, रेटिंग वगैरह.

9e3a1dc4c286af1b.png

भरोसेमंद और असरदार मूवी का सुझाव देने वाला चैटबॉट बनाने के लिए, साफ़-सुथरे, एक जैसे, और स्ट्रक्चर्ड डेटा का इस्तेमाल करना ज़रूरी है. Kaggle का The Movies Dataset एक बेहतरीन संसाधन है. इसमें 45,000 से ज़्यादा फ़िल्मों के रिकॉर्ड और विस्तृत मेटाडेटा शामिल है. जैसे, जॉनर, कलाकार, क्रू वगैरह. हालांकि, इसमें नॉइज़, गड़बड़ियां, और नेस्ट किए गए डेटा स्ट्रक्चर भी शामिल हैं. ये ग्राफ़ मॉडलिंग या सेमैंटिक एम्बेडिंग के लिए सही नहीं हैं.

इस समस्या को हल करने के लिए, हमने डेटासेट को पहले से प्रोसेस किया है और उसे सामान्य बनाया है. इससे यह पक्का किया जा सकेगा कि यह Neo4j नॉलेज ग्राफ़ बनाने और अच्छी क्वालिटी की एम्बेडिंग जनरेट करने के लिए सही है. इस प्रोसेस में ये काम शामिल थे:

  • डुप्लीकेट और अधूरे रिकॉर्ड हटाना
  • मुख्य फ़ील्ड को स्टैंडर्ड बनाना. जैसे, शैली के नाम, व्यक्ति के नाम
  • नेस्ट किए गए मुश्किल स्ट्रक्चर (जैसे, कलाकार और क्रू) को स्ट्रक्चर्ड CSV फ़ाइलों में बदलना
  • Neo4j AuraDB Free की सीमाओं के अंदर रहने के लिए, ~12,000 फ़िल्मों का सबसेट चुनना

अच्छी क्वालिटी और सामान्य किए गए डेटा से यह पक्का करने में मदद मिलती है कि:

  • डेटा क्वालिटी: ज़्यादा सटीक सुझाव पाने के लिए, गड़बड़ियों और अंतर को कम करता है
  • क्वेरी की परफ़ॉर्मेंस: बेहतर स्ट्रक्चर की वजह से, डेटा को तेज़ी से ऐक्सेस किया जा सकता है और डेटा के दोहराव को कम किया जा सकता है
  • एंबेड करने की प्रोसेस कितनी सटीक है: साफ़ तौर पर दिए गए इनपुट से, ज़्यादा काम के और संदर्भ के हिसाब से वेक्टर एंबेड किए जा सकते हैं

आपको साफ़ किया गया और नॉर्मलाइज़ किया गया डेटासेट, इस GitHub रिपो के normalized_data/ फ़ोल्डर में मिलेगा. इस डेटासेट को Google Cloud Storage बकेट में भी सेव किया जाता है, ताकि आने वाली Python स्क्रिप्ट में इसे आसानी से ऐक्सेस किया जा सके.

डेटा को साफ़ करने और तैयार करने के बाद, अब हम इसे Neo4j में लोड करने के लिए तैयार हैं. साथ ही, हम फ़िल्मों के नॉलेज ग्राफ़ को बनाना शुरू कर सकते हैं.

5. फ़िल्मों का नॉलेज ग्राफ़ बनाना

जेन एआई की सुविधा वाले, फ़िल्मों के सुझाव देने वाले चैटबॉट को बेहतर तरीके से काम करने के लिए, हमें फ़िल्मों के डेटासेट को इस तरह से स्ट्रक्चर करना होगा कि फ़िल्मों, कलाकारों, निर्देशकों, शैलियों, और अन्य मेटाडेटा के बीच के कनेक्शन को कैप्चर किया जा सके. इस सेक्शन में, हम पहले से तैयार किए गए साफ़ और सामान्य किए गए डेटासेट का इस्तेमाल करके, Neo4j में फ़िल्मों का नॉलेज ग्राफ़ बनाएंगे.

हम सार्वजनिक Google Cloud Storage (GCS) बकेट में होस्ट की गई CSV फ़ाइलों को शामिल करने के लिए, Neo4j की LOAD CSV सुविधा का इस्तेमाल करेंगे. इन फ़ाइलों में, फ़िल्मों के डेटासेट के अलग-अलग कॉम्पोनेंट शामिल होते हैं. जैसे, फ़िल्में, शैलियां, कलाकार, क्रू, प्रोडक्शन कंपनियां, और उपयोगकर्ता की रेटिंग.

पहला चरण: कंस्ट्रेंट और इंडेक्स बनाना

डेटा इंपोर्ट करने से पहले, constraints and indexes बनाना एक अच्छा तरीका है. इससे डेटा की अखंडता को लागू करने और क्वेरी की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने में मदद मिलती है.

CREATE CONSTRAINT unique_tmdb_id IF NOT EXISTS FOR (m:Movie) REQUIRE m.tmdbId IS UNIQUE;
CREATE CONSTRAINT unique_movie_id IF NOT EXISTS FOR (m:Movie) REQUIRE m.movieId IS UNIQUE;
CREATE CONSTRAINT unique_prod_id IF NOT EXISTS FOR (p:ProductionCompany) REQUIRE p.company_id IS UNIQUE;
CREATE CONSTRAINT unique_genre_id IF NOT EXISTS FOR (g:Genre) REQUIRE g.genre_id IS UNIQUE;
CREATE CONSTRAINT unique_lang_id IF NOT EXISTS FOR (l:SpokenLanguage) REQUIRE l.language_code IS UNIQUE;
CREATE CONSTRAINT unique_country_id IF NOT EXISTS FOR (c:Country) REQUIRE c.country_code IS UNIQUE;

CREATE INDEX actor_id IF NOT EXISTS FOR (p:Person) ON (p.actor_id);
CREATE INDEX crew_id IF NOT EXISTS FOR (p:Person) ON (p.crew_id);
CREATE INDEX movieId IF NOT EXISTS FOR (m:Movie) ON (m.movieId);
CREATE INDEX user_id IF NOT EXISTS FOR (p:Person) ON (p.user_id);

दूसरा चरण: फ़िल्म का मेटाडेटा और उससे जुड़ी जानकारी इंपोर्ट करना

आइए, LOAD CSV कमांड का इस्तेमाल करके, फ़िल्म का मेटाडेटा इंपोर्ट करने का तरीका जानें. इस उदाहरण में, टाइटल, खास जानकारी, भाषा, और अवधि जैसे मुख्य एट्रिब्यूट के साथ Movie नोड बनाए गए हैं:

LOAD CSV WITH HEADERS FROM "https://storage.googleapis.com/neo4j-vertexai-codelab/normalized_data/normalized_movies.csv" AS row
WITH row, toInteger(row.tmdbId) AS tmdbId
WHERE tmdbId IS NOT NULL
WITH row, tmdbId
LIMIT 12000
MERGE (m:Movie {tmdbId: tmdbId})
ON CREATE SET m.title = coalesce(row.title, "None"),
              m.original_title = coalesce(row.original_title, "None"),
              m.adult = CASE 
                            WHEN toInteger(row.adult) = 1 THEN 'Yes' 
                            ELSE 'No' 
                        END,
              m.budget = toInteger(coalesce(row.budget, 0)),
              m.original_language = coalesce(row.original_language, "None"),
              m.revenue = toInteger(coalesce(row.revenue, 0)),
              m.tagline = coalesce(row.tagline, "None"),
              m.overview = coalesce(row.overview, "None"),
              m.release_date = coalesce(row.release_date, "None"),
              m.runtime = toFloat(coalesce(row.runtime, 0)),
              m.belongs_to_collection = coalesce(row.belongs_to_collection, "None");

इसी तरह, शैली, प्रोडक्शन कंपनियां, बोली जाने वाली भाषाएं, देश, कलाकार, क्रू, और उपयोगकर्ता रेटिंग जैसी अन्य इकाइयों को इंपोर्ट और लिंक किया जा सकता है. इसके लिए, उनकी CSV फ़ाइलें और साइफ़र क्वेरी इस्तेमाल करें.

Python की मदद से पूरा ग्राफ़ लोड करना

हमारा सुझाव है कि कई साइफ़र क्वेरी को मैन्युअल तरीके से चलाने के बजाय, इस कोडलैब में दी गई ऑटोमेटेड Python स्क्रिप्ट का इस्तेमाल करें.

यह स्क्रिप्ट, graph_build.py फ़ाइल में मौजूद क्रेडेंशियल का इस्तेमाल करके, GCS से पूरे डेटासेट को आपके Neo4j AuraDB इंस्टेंस में लोड करती है..env

python graph_build.py

यह स्क्रिप्ट, सभी ज़रूरी CSV फ़ाइलों को क्रम से लोड करेगी. साथ ही, नोड और संबंध बनाएगी. इसके बाद, आपकी पूरी मूवी के नॉलेज ग्राफ़ को स्ट्रक्चर करेगी.

अपने ग्राफ़ की पुष्टि करना

लोड होने के बाद, यहां दी गई स्क्रिप्ट चलाकर अपने ग्राफ़ की पुष्टि की जा सकती है:

python validate_graph.py

इससे आपको अपने ग्राफ़ में मौजूद कॉन्टेंट के बारे में खास जानकारी मिलेगी. जैसे, कितनी फ़िल्में, कलाकार, शैलियां, और संबंध मौजूद हैं. जैसे, ACTED_IN, DIRECTED वगैरह. इससे यह पक्का किया जा सकेगा कि इंपोर्ट सही तरीके से हुआ है.

📦 Node Counts:
Movie: 11997 nodes
ProductionCompany: 7961 nodes
Genre: 20 nodes
SpokenLanguage: 100 nodes
Country: 113 nodes
Person: 92663 nodes
Actor: 81165 nodes
Director: 4846 nodes
Producer: 5981 nodes
User: 671 nodes

🔗 Relationship Counts:
HAS_GENRE: 28479 relationships
PRODUCED_BY: 22758 relationships
PRODUCED_IN: 14702 relationships
HAS_LANGUAGE: 16184 relationships
ACTED_IN: 191307 relationships
DIRECTED: 5047 relationships
PRODUCED: 6939 relationships
RATED: 90344 relationships

अब आपको अपने ग्राफ़ में फ़िल्में, लोग, शैलियां वगैरह दिखेंगी. अगले चरण में, इन्हें सिमैंटिक तौर पर बेहतर बनाया जा सकता है!

6. वेक्टर सिमिलैरिटी सर्च करने के लिए, एम्बेडिंग जनरेट और लोड करना

हमारे चैटबॉट में सिमैंटिक सर्च की सुविधा चालू करने के लिए, हमें फ़िल्मों की खास जानकारी के लिए वेक्टर एम्बेडिंग जनरेट करनी होंगी. ये एम्बेडिंग, टेक्स्ट वाले डेटा को संख्या वाले वेक्टर में बदल देती हैं. इनकी तुलना करके यह पता लगाया जा सकता है कि ये कितने मिलते-जुलते हैं. इससे चैटबॉट के लिए, काम की फ़िल्में ढूंढना आसान हो जाता है. भले ही, क्वेरी, टाइटल या ब्यौरे से पूरी तरह मेल न खाती हो.

bcca07eaee60787b.png

पहला विकल्प: साइफ़र की मदद से, पहले से कैलकुलेट की गई एम्बेडिंग लोड करना

एम्बेडिंग को Neo4j में मौजूद Movie नोड से तुरंत अटैच करने के लिए, Neo4j ब्राउज़र में यह साइफ़र कमांड चलाएं:

LOAD CSV WITH HEADERS FROM 'https://storage.googleapis.com/neo4j-vertexai-codelab/movie_embeddings.csv' AS row
WITH row
MATCH (m:Movie {tmdbId: toInteger(row.tmdbId)})
SET m.embedding = apoc.convert.fromJsonList(row.embedding)

यह कमांड, CSV फ़ाइल से एम्बेडिंग वेक्टर को पढ़ती है और उन्हें हर Movie नोड पर प्रॉपर्टी (m.embedding) के तौर पर अटैच करती है.

दूसरा विकल्प: Python का इस्तेमाल करके एम्बेडिंग लोड करना

दी गई Python स्क्रिप्ट का इस्तेमाल करके, एम्बेडिंग को प्रोग्राम के हिसाब से भी लोड किया जा सकता है. अगर आपको अपने एनवायरमेंट में काम करना है या प्रोसेस को अपने-आप होने वाली प्रोसेस में बदलना है, तो यह तरीका आपके लिए फ़ायदेमंद है:

python load_embeddings.py

यह स्क्रिप्ट, GCS से उसी CSV को पढ़ती है और Python Neo4j ड्राइवर का इस्तेमाल करके, Neo4j में एम्बेडिंग लिखती है.

[ज़रूरी नहीं] एक्सप्लोरेशन के लिए, खुद एम्बेडिंग जनरेट करें

अगर आपको यह जानना है कि एम्बेडिंग कैसे जनरेट होती हैं, तो generate_embeddings.py स्क्रिप्ट में मौजूद लॉजिक को एक्सप्लोर करें. यह text-embedding-004 मॉडल का इस्तेमाल करके, हर फ़िल्म के ब्यौरे वाले टेक्स्ट को एम्बेड करने के लिए, Vertex AI का इस्तेमाल करता है.

इसे खुद आज़माने के लिए, कोड का एम्बेड जनरेशन सेक्शन खोलें और चलाएं. अगर Cloud Shell में यह कमांड चलाई जा रही है, तो इस लाइन पर टिप्पणी की जा सकती है. ऐसा इसलिए, क्योंकि Cloud Shell को आपके चालू खाते से पहले ही पुष्टि कर ली गई है:

# os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "./service-account.json"

Neo4j में एम्बेडिंग लोड होने के बाद, आपकी फ़िल्म का नॉलेज ग्राफ़ सिमैंटिक-अवेयर हो जाता है. इसका मतलब है कि यह वेक्टर सिमिलैरिटी का इस्तेमाल करके, नैचुरल लैंग्वेज में की गई खोज के लिए तैयार है!

7. मूवी का सुझाव देने वाला चैटबॉट

नॉलेज ग्राफ़ और वेक्टर एम्बेडिंग को सेट अप करने के बाद, अब समय है कि इन सभी को एक साथ एक इंटरैक्टिव इंटरफ़ेस में लाया जाए. यह इंटरफ़ेस, जनरेटिव एआई की मदद से काम करने वाला, फ़िल्मों के सुझाव देने वाला चैटबॉट होगा.

इस चैटबॉट को Python में लागू किया गया है. इसके लिए, Gradio का इस्तेमाल किया गया है. यह एक लाइटवेट वेब फ़्रेमवर्क है. इसका इस्तेमाल, यूज़र इंटरफ़ेस बनाने के लिए किया जाता है. इसका मुख्य लॉजिक app.py में मौजूद होता है. यह आपके Neo4j AuraDB इंस्टेंस से कनेक्ट होता है. साथ ही, सामान्य भाषा में की गई क्वेरी को प्रोसेस करने और उनका जवाब देने के लिए, Google Vertex AI और Gemini का इस्तेमाल करता है.

यह कैसे काम करता है

  1. उपयोगकर्ता, आम भाषा में कोई क्वेरी टाइप करता हैउदाहरण के लिए, "मुझे इंटरस्टेलर जैसी साइंस-फ़िक्शन थ्रिलर फ़िल्में सुझाओ"
  2. Vertex AI के text-embedding-004 मॉडल का इस्तेमाल करके, क्वेरी के लिए वेक्टर एम्बेडिंग जनरेट करें
  3. सिमेंटिक तौर पर मिलती-जुलती फ़िल्में पाने के लिए, Neo4j में वेक्टर सर्च करें
  4. Gemini का इस्तेमाल करके:
  • क्वेरी को कॉन्टेक्स्ट के हिसाब से समझना
  • वेक्टर सर्च के नतीजों और Neo4j स्कीमा के आधार पर, कस्टम साइफ़र क्वेरी जनरेट करना
  • मिलते-जुलते ग्राफ़ डेटा (जैसे, कलाकार, निर्देशक, शैलियां) निकालने के लिए क्वेरी चलाना
  • उपयोगकर्ता के लिए, नतीजों की खास जानकारी बातचीत के तरीके में देना

7e3658016dac9fa7.jpeg

इस हाइब्रिड अप्रोच को GraphRAG (Graph Retrieval-Augmented Generation) कहा जाता है. इसमें सिमैंटिक रिट्रीवल और स्ट्रक्चर्ड रीज़निंग को मिलाकर, ज़्यादा सटीक, कॉन्टेक्स्ट के हिसाब से, और समझने में आसान सुझाव दिए जाते हैं.

चैटबॉट को स्थानीय तौर पर चलाना

अगर वर्चुअल एनवायरमेंट पहले से चालू नहीं है, तो उसे चालू करें. इसके बाद, चैटबॉट को लॉन्च करने के लिए यह कमांड डालें:

python app.py

आपको इससे मिलता-जुलता आउटपुट दिखेगा:

Vector index 'overview_embeddings' already exists. No need to create a new one.
* Running on local URL:  http://0.0.0.0:8080
To create a public link, set `share=True` in `launch()`.

💡 चैटबॉट को बाहरी तौर पर शेयर करने के लिए, app.py में launch() फ़ंक्शन में share=True को सेट करें.

चैटबॉट के साथ इंटरैक्ट करना

चैटबॉट इंटरफ़ेस को ऐक्सेस करने के लिए, अपने टर्मिनल में दिखने वाला लोकल यूआरएल खोलें. आम तौर पर, यह 👉 http://0.0.0.0:8080 होता है.

इस तरह के सवाल पूछें:

  • "अगर मुझे इंटरस्टेलर पसंद आई, तो मुझे कौनसी फ़िल्म देखनी चाहिए?"
  • "नोरा एफ़्रोन के निर्देशन में बनी कोई रोमैंटिक फ़िल्म सुझाओ"
  • "मुझे टॉम हैंक्स की कोई फ़ैमिली मूवी देखनी है"
  • "आर्टिफ़िशियल इंटेलिजेंस (एआई) से जुड़ी थ्रिलर फ़िल्में खोजो"

a194b635f913211b.png

चैटबॉट ये काम करेगा:

✅ क्वेरी को समझना

✅ एम्बेडिंग का इस्तेमाल करके, मिलते-जुलते अर्थ वाली फ़िल्मों की प्लॉट्स ढूंढना

✅ इससे जुड़े ग्राफ़ कॉन्टेक्स्ट को फ़ेच करने के लिए, Cypher क्वेरी जनरेट करना और उसे चलाना

✅ कुछ ही सेकंड में, आपकी दिलचस्पी के हिसाब से सुझाव देना

आपके पास मौजूद सुविधाएं

आपने अभी-अभी GraphRAG की मदद से काम करने वाला मूवी चैटबॉट बनाया है. इसमें ये सुविधाएं शामिल हैं:

  • सिमैंटिक तौर पर मिलते-जुलते कॉन्टेंट को खोजने के लिए वेक्टर सर्च
  • Neo4j की मदद से नॉलेज ग्राफ़ रीज़निंग
  • Gemini के ज़रिए एलएलएम की सुविधाएँ
  • Gradio के साथ एक स्मूद चैट इंटरफ़ेस

इस आर्किटेक्चर की मदद से, जेन एआई की मदद से काम करने वाले ज़्यादा ऐडवांस सर्च, सुझाव देने या तर्क देने वाले सिस्टम बनाए जा सकते हैं.

8. (ज़रूरी नहीं) Google Cloud Run पर डिप्लॉय करना

a194b635f913211b.png

अगर आपको अपने मूवी का सुझाव देने वाले चैटबॉट को सार्वजनिक तौर पर उपलब्ध कराना है, तो इसे Google Cloud Run पर डिप्लॉय किया जा सकता है. यह पूरी तरह से मैनेज किया गया, सर्वरलेस प्लैटफ़ॉर्म है. यह आपके ऐप्लिकेशन को अपने-आप स्केल करता है और बुनियादी ढांचे से जुड़ी सभी समस्याओं को दूर करता है.

इस डिप्लॉयमेंट में इनका इस्तेमाल किया जाता है:

  • requirements.txt — Python डिपेंडेंसी (Neo4j, Vertex AI, Gradio वगैरह) को तय करने के लिए
  • Dockerfile — ऐप्लिकेशन को पैकेज करने के लिए
  • .env.yaml — इसका इस्तेमाल रनटाइम के दौरान एनवायरमेंट वैरिएबल को सुरक्षित तरीके से पास करने के लिए किया जाता है

पहला चरण: तैयारी करना .env.yaml

अपनी रूट डायरेक्ट्री में .env.yaml नाम की फ़ाइल बनाएं. इसमें इस तरह का कॉन्टेंट शामिल करें:

NEO4J_URI: "neo4j+s://<your-aura-db-uri>"
NEO4J_USER: "neo4j"
NEO4J_PASSWORD: "<your-password>"
PROJECT_ID: "<your-gcp-project-id>"
LOCATION: "<your-gcp-region>"  # e.g. us-central1

💡 इस फ़ॉर्मैट को --set-env-vars के मुकाबले ज़्यादा बेहतर माना जाता है. इसकी वजह यह है कि इसे आसानी से बढ़ाया जा सकता है, इसके वर्शन को कंट्रोल किया जा सकता है, और इसे आसानी से पढ़ा जा सकता है.

दूसरा चरण: एनवायरमेंट वैरिएबल सेट अप करना

अपने टर्मिनल में, इन एनवायरमेंट वैरिएबल को सेट करें. प्लेसहोल्डर वैल्यू को अपनी प्रोजेक्ट सेटिंग की असल वैल्यू से बदलें:

# Set your Google Cloud project ID
export GCP_PROJECT='your-project-id'  # Change this

# Set your preferred deployment region
export GCP_REGION='us-central1'

दूसरा चरण: Artifact Registry बनाना और कंटेनर बनाना

# Artifact Registry repo and service name
export AR_REPO='your-repo-name'       # Change this
export SERVICE_NAME='movies-chatbot'  # Or any name you prefer

# Create the Artifact Registry repository
gcloud artifacts repositories create "$AR_REPO" \
  --location="$GCP_REGION" \
  --repository-format=Docker

# Authenticate Docker with Artifact Registry
gcloud auth configure-docker "$GCP_REGION-docker.pkg.dev"

# Build and submit the container image
gcloud builds submit \
  --tag "$GCP_REGION-docker.pkg.dev/$GCP_PROJECT/$AR_REPO/$SERVICE_NAME"

यह कमांड, Dockerfile का इस्तेमाल करके आपके ऐप्लिकेशन को पैकेज करती है. साथ ही, कंटेनर इमेज को Google Cloud Artifact Registry पर अपलोड करती है.

तीसरा चरण: Cloud Run पर डिप्लॉय करना

अब रनटाइम कॉन्फ़िगरेशन के लिए, .env.yaml फ़ाइल का इस्तेमाल करके अपना ऐप्लिकेशन डिप्लॉय करें:

gcloud run deploy "$SERVICE_NAME" \
  --port=8080 \
  --image="$GCP_REGION-docker.pkg.dev/$GCP_PROJECT/$AR_REPO/$SERVICE_NAME" \
  --allow-unauthenticated \
  --region=$GCP_REGION \
  --platform=managed \
  --project=$GCP_PROJECT \
  --env-vars-file=.env.yaml

चैटबॉट को ऐक्सेस करना

डिप्लॉय होने के बाद, Cloud Run एक सार्वजनिक यूआरएल देगा. जैसे:

https://movies-reco-[UNIQUE_ID].${GCP_REGION}.run.app

अपने ब्राउज़र में यह यूआरएल खोलें, ताकि डिप्लॉय किए गए Gradio चैटबॉट इंटरफ़ेस को ऐक्सेस किया जा सके. यह GraphRAG, Gemini, और Neo4j का इस्तेमाल करके, फ़िल्मों के सुझाव देने के लिए तैयार है!

ध्यान दें और सलाह

  • पक्का करें कि बिल्ड के दौरान, आपका Dockerfile pip install -r requirements.txt हो.
  • अगर Cloud Shell का इस्तेमाल नहीं किया जा रहा है, तो आपको Vertex AI और Artifact Registry की अनुमतियों वाले सेवा खाते का इस्तेमाल करके, अपने एनवायरमेंट की पुष्टि करनी होगी.
  • Google Cloud Console > Cloud Run में जाकर, डिप्लॉयमेंट लॉग और मेट्रिक को मॉनिटर किया जा सकता है.

Google Cloud Console में जाकर भी Cloud Run पर जाया जा सकता है. यहां आपको Cloud Run में मौजूद सेवाओं की सूची दिखेगी. movies-chatbot सेवा, वहां दी गई सेवाओं में से एक होनी चाहिए. अगर वहां सिर्फ़ एक सेवा दी गई है, तो वह movies-chatbot सेवा होनी चाहिए.

bccf390b7099e73b.png

सेवा के नाम (हमारे मामले में movies-chatbot) पर क्लिक करके, सेवा के बारे में ज़्यादा जानकारी देखी जा सकती है. जैसे, यूआरएल, कॉन्फ़िगरेशन, लॉग वगैरह.

3709b596167cdaa0.png

इस तरह, आपका मूवी का सुझाव देने वाला Chatbot अब डिप्लॉय हो गया है, इसे बढ़ाया जा सकता है, और इसे शेयर किया जा सकता है. 🎉

9. व्यवस्थित करें

इस पोस्ट में इस्तेमाल की गई संसाधनों के लिए, अपने Google Cloud खाते से शुल्क न लिए जाने के लिए, यह तरीका अपनाएं:

  1. Google Cloud Console में, संसाधन मैनेज करें पेज पर जाएं.
  2. प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे आपको मिटाना है. इसके बाद, मिटाएं पर क्लिक करें.
  3. डायलॉग बॉक्स में, प्रोजेक्ट आईडी टाइप करें. इसके बाद, प्रोजेक्ट मिटाने के लिए बंद करें पर क्लिक करें.

10. बधाई हो

आपने Neo4j, Vertex AI, और Gemini का इस्तेमाल करके, GraphRAG की मदद से काम करने वाला, GenAI की सुविधाओं से बेहतर बनाया गया, फ़िल्मों का सुझाव देने वाला चैटबॉट बनाया और उसे डिप्लॉय किया है. आपने Neo4j की ग्राफ-नेटिव मॉडलिंग की क्षमताओं को Vertex AI की मदद से सिमैंटिक सर्च और Gemini की मदद से नैचुरल लैंग्वेज रीज़निंग के साथ जोड़कर, एक इंटेलिजेंट सिस्टम बनाया है. यह सिस्टम, सामान्य सर्च से आगे बढ़कर काम करता है. यह उपयोगकर्ता की क्वेरी को समझता है, कनेक्ट किए गए डेटा के आधार पर जवाब देता है, और बातचीत के तरीके से जवाब देता है.

इस कोडलैब में, आपने ये काम किए:

फ़िल्मों, कलाकारों, शैलियों, और उनके बीच के संबंधों को मॉडल करने के लिए, Neo4j में असल दुनिया की फ़िल्मों का नॉलेज ग्राफ़ बनाया

✅ Vertex AI के टेक्स्ट-एम्बेडिंग मॉडल का इस्तेमाल करके, जनरेट की गई वेक्टर एम्बेडिंग की मदद से, फ़िल्म की कहानी के बारे में खास जानकारी दी गई है

GraphRAG को लागू किया गया. इसमें वेक्टर सर्च और एलएलएम से जनरेट की गई साइफ़र क्वेरी को एक साथ इस्तेमाल किया जाता है, ताकि ज़्यादा गहराई से और कई चरणों में तर्क किया जा सके

Gemini को इंटिग्रेट किया गया है, ताकि वह उपयोगकर्ता के सवालों को समझ सके, साइफ़र क्वेरी जनरेट कर सके, और ग्राफ़ के नतीजों की खास जानकारी आम भाषा में दे सके

✅ Gradio का इस्तेमाल करके, आसान चैट इंटरफ़ेस बनाया गया

ज़्यादा उपयोगकर्ताओं को हैंडल करने वाले, बिना किसी रुकावट के होस्ट किए जा सकने वाले, और बिना सर्वर के काम करने वाले ऐप्लिकेशन के लिए, Google Cloud Run पर चैटबॉट डिप्लॉय किया गया हो

अगला चरण?

यह आर्किटेक्चर, सिर्फ़ फ़िल्मों के सुझाव देने तक सीमित नहीं है. इसे इन कामों के लिए भी इस्तेमाल किया जा सकता है:

  • किताबें और संगीत खोजने के प्लैटफ़ॉर्म
  • अकैडमिक रिसर्च असिस्टेंट
  • प्रॉडक्ट के सुझाव देने वाले इंजन
  • स्वास्थ्य सेवा, फ़ाइनेंस, और कानूनी मामलों से जुड़ी जानकारी देने वाले एआई असिस्टेंट

जहां भी जटिल संबंध + टेक्स्ट वाला ज़्यादा डेटा मौजूद है वहां नॉलेज ग्राफ़ + एलएलएम + सिमैंटिक एम्बेडिंग के इस कॉम्बिनेशन का इस्तेमाल करके, अगली पीढ़ी के बेहतर ऐप्लिकेशन बनाए जा सकते हैं.

Gemini जैसे मल्टीमॉडल GenAI मॉडल के बेहतर होने के साथ-साथ, आपको ज़्यादा जानकारी, इमेज, आवाज़, और निजीकरण को शामिल करने का विकल्प मिलेगा. इससे, लोगों की ज़रूरतों के हिसाब से सिस्टम बनाए जा सकेंगे.

एक्सप्लोर करते रहें, बनाते रहें. साथ ही, अपने स्मार्ट ऐप्लिकेशन को अगले लेवल पर ले जाने के लिए, Neo4j, Vertex AI, और Google Cloud से जुड़ी नई जानकारी पाना न भूलें! Neo4j GraphAcademy में, नॉलेज ग्राफ़ के बारे में ज़्यादा ट्यूटोरियल देखें.

रेफ़रंस दस्तावेज़