1. परिचय
डीप लर्निंग में हाल ही में हुई तरक्की की वजह से, टेक्स्ट और अन्य डेटा को इस तरह से दिखाया जा सकता है जिससे उसका मतलब समझ में आता है. इस वजह से, खोज करने का एक नया तरीका सामने आया है. इसे वेक्टर सर्च कहा जाता है. यह टेक्स्ट के वेक्टर रिप्रेजेंटेशन (जिन्हें एम्बेडिंग कहा जाता है) का इस्तेमाल करके, ऐसे दस्तावेज़ ढूंढता है जो उपयोगकर्ता की क्वेरी के हिसाब से सबसे ज़्यादा काम के हों. कपड़ों की खोज जैसे ऐप्लिकेशन के लिए, पारंपरिक खोज के बजाय वेक्टर सर्च को प्राथमिकता दी जाती है. इनमें उपयोगकर्ता अक्सर प्रॉडक्ट या ब्रैंड के सटीक नामों के बजाय, उनकी जानकारी, स्टाइल या कॉन्टेक्स्ट के हिसाब से आइटम खोजते हैं. हम Cloud Spanner डेटाबेस को Vector Search के साथ इंटिग्रेट कर सकते हैं, ताकि वेक्टर सिमिलैरिटी-मैचिंग की जा सके. Spanner और Vector Search का एक साथ इस्तेमाल करके, ग्राहक एक ऐसा इंटिग्रेशन बना सकते हैं जो Spanner की उपलब्धता, भरोसेमंद होने की क्षमता, और स्केल करने की क्षमता को Vertex AI Vector Search की मिलती-जुलती चीज़ें खोजने की बेहतर सुविधाओं के साथ जोड़ता है. यह खोज, वेक्टर सर्च इंडेक्स में मौजूद आइटम के एम्बेडिंग की तुलना करके की जाती है. इसमें सबसे मिलते-जुलते नतीजे दिखाए जाते हैं.
इस्तेमाल का उदाहरण
मान लें कि आप फ़ैशन के सामान का खुदरा कारोबार करने वाली किसी कंपनी में डेटा साइंटिस्ट हैं. आपको तेज़ी से बदलते रुझानों, प्रॉडक्ट की खोजों, और सुझावों के हिसाब से काम करना है. आपके पास सीमित संसाधन और डेटा साइलो हैं. इस ब्लॉग पोस्ट में, कपड़ों के डेटा पर मिलती-जुलती खोज की सुविधा का इस्तेमाल करके, कपड़ों के सुझाव देने की सुविधा को लागू करने का तरीका बताया गया है.इसमें ये चरण शामिल हैं:
- Spanner से लिया गया डेटा
- कपड़ों के डेटा के लिए, ML.PREDICT फ़ंक्शन का इस्तेमाल करके जनरेट किए गए वेक्टर और Spanner में सेव किए गए वेक्टर
- डेटाफ़्लो और वर्कफ़्लो जॉब का इस्तेमाल करके, Vector Search के साथ इंटिग्रेट किया गया Spanner वेक्टर डेटा
- उपयोगकर्ता के डाले गए इनपुट से मिलते-जुलते इनपुट खोजने के लिए, वेक्टर सर्च की गई
हम एक डेमो वेब ऐप्लिकेशन बनाएंगे. इससे उपयोगकर्ता के डाले गए टेक्स्ट के आधार पर, कपड़ों को खोजा जा सकेगा. इस ऐप्लिकेशन में, लोग कपड़ों के बारे में टेक्स्ट में जानकारी डालकर उन्हें खोज सकते हैं.
Spanner से Vector Search इंडेक्स में डेटा ट्रांसफ़र करने के लिए:
कपड़ों की खोज से जुड़ा डेटा, Spanner में सेव किया जाता है. हम ML.PREDICT कंस्ट्रक्ट में Vertex AI Embeddings API को सीधे तौर पर Spanner डेटा से लागू करेंगे. इसके बाद, हम Dataflow और Workflow की उन नौकरियों का इस्तेमाल करेंगे जो इस डेटा (इन्वेंट्री और एम्बेडिंग) को Vertex AI के Vector Search में एक साथ अपलोड करती हैं और इंडेक्स को रीफ़्रेश करती हैं.
इंडेक्स पर उपयोगकर्ता की क्वेरी प्रोसेस करना:
जब कोई व्यक्ति कपड़ों की जानकारी डालता है, तो ऐप्लिकेशन, Text Embeddings API का इस्तेमाल करके रीयल टाइम में एम्बेडिंग जनरेट करता है. इसके बाद, इसे Vector Search API को इनपुट के तौर पर भेजा जाता है. इससे इंडेक्स में मौजूद 10 काम की प्रॉडक्ट की जानकारी मिलती है और उससे जुड़ी इमेज दिखती है.
आर्किटेक्चर के बारे में खास जानकारी
Spanner-Vector Search ऐप्लिकेशन का आर्किटेक्चर, यहां दिए गए दो हिस्सों वाले डायग्राम में दिखाया गया है:
Spanner से Vector Search Index: 
क्लाइंट ऐप्लिकेशन, इंडेक्स पर उपयोगकर्ता की क्वेरी चलाने के लिए:
आपको क्या बनाना है
Spanner से वेक्टर इंडेक्स में डेटा ट्रांसफ़र करने के लिए:
- सोर्स डेटा और उससे जुड़ी एम्बेडिंग को सेव और मैनेज करने के लिए Spanner डेटाबेस
- यह एक वर्कफ़्लो जॉब है. यह Vertex AI Vector Search के डेटाबेस में, आईडी और एम्बेडिंग के डेटा को एक साथ अपलोड करता है.
- यह Vector Search API है. इसका इस्तेमाल इंडेक्स से प्रॉडक्ट की जानकारी खोजने के लिए किया जाता है.
इंडेक्स पर उपयोगकर्ता की क्वेरी प्रोसेस करना:
- यह एक वेब ऐप्लिकेशन है. इसकी मदद से, लोग कपड़ों के बारे में टेक्स्ट में जानकारी दे सकते हैं. यह ऐप्लिकेशन, डिप्लॉय किए गए इंडेक्स एंडपॉइंट का इस्तेमाल करके, मिलते-जुलते कपड़ों को खोजता है और इनपुट के आधार पर सबसे मिलते-जुलते कपड़े दिखाता है.
यह कैसे काम करता है
जब कोई उपयोगकर्ता कपड़ों की जानकारी देता है, तो वेब ऐप्लिकेशन उस जानकारी को Vector Search API को भेजता है. इसके बाद, Vector Search API, कपड़ों की जानकारी के एम्बेडिंग का इस्तेमाल करके इंडेक्स से सबसे काम की प्रॉडक्ट की जानकारी ढूंढता है. इसके बाद, प्रॉडक्ट की जानकारी और उससे जुड़ी इमेज, उपयोगकर्ता को दिखाई जाती हैं. सामान्य वर्कफ़्लो इस तरह होता है:
- Spanner में सेव किए गए डेटा के लिए, एम्बेडिंग जनरेट करें.
- वेक्टर सर्च इंडेक्स में एम्बेडिंग एक्सपोर्ट और अपलोड करें.
- सबसे नज़दीकी पड़ोसी खोज करके, मिलते-जुलते आइटम के लिए Vector Search इंडेक्स को क्वेरी करें.
2. ज़रूरी शर्तें
शुरू करने से पहले
- Google Cloud Console में, प्रोजेक्ट चुनने वाले पेज पर जाकर, Google Cloud प्रोजेक्ट चुनें या बनाएं
- पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग चालू हो. किसी प्रोजेक्ट के लिए बिलिंग चालू है या नहीं, यह देखने का तरीका जानें
- पक्का करें कि सभी ज़रूरी एपीआई (Cloud Spanner, Vertex AI, Google Cloud Storage) चालू हों
- आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है. इसमें gcloud पहले से लोड होता है. gcloud कमांड और उनके इस्तेमाल के बारे में जानने के लिए, दस्तावेज़ देखें. अगर आपका प्रोजेक्ट सेट नहीं है, तो इसे सेट करने के लिए इस निर्देश का इस्तेमाल करें:
gcloud config set project <YOUR_PROJECT_ID>
- शुरू करने के लिए, अपने ऐक्टिव Google Cloud प्रोजेक्ट के साथ Cloud Spanner पेज पर जाएं
3. बैकएंड: अपना Spanner डेटा सोर्स और एम्बेडिंग बनाएं
इस उदाहरण में, Spanner डेटाबेस में कपड़ों की इन्वेंट्री को उनकी इमेज और ब्यौरे के साथ सेव किया जाता है. पक्का करें कि आपने टेक्स्ट के ब्यौरे के लिए एम्बेडिंग जनरेट की हों और उन्हें अपने Spanner डेटाबेस में ARRAY<float64> के तौर पर सेव किया हो.
- Spanner का डेटा बनाना
"spanner-vertex" नाम का इंस्टेंस और "spanner-vertex-embeddings" नाम का डेटाबेस बनाएं. डीडीएल का इस्तेमाल करके टेबल बनाएं:
CREATE TABLE
apparels ( id NUMERIC,
category STRING(100),
sub_category STRING(50),
uri STRING(200),
content STRING(2000),
embedding ARRAY<FLOAT64>
)
PRIMARY KEY
(id);
- INSERT SQL का इस्तेमाल करके, टेबल में डेटा डालें
नमूने के डेटा के लिए, स्क्रिप्ट डालने की सुविधा यहां उपलब्ध है.
- टेक्स्ट एम्बेडिंग मॉडल बनाना
यह इसलिए ज़रूरी है, ताकि हम इनपुट में दिए गए कॉन्टेंट के लिए एम्बेड जनरेट कर सकें. इसके लिए डीडीएल यहां दिया गया है:
CREATE MODEL text_embeddings INPUT(content STRING(MAX))
OUTPUT(
embeddings
STRUCT<
statistics STRUCT<truncated BOOL, token_count FLOAT64>,
values ARRAY<FLOAT64>>
)
REMOTE OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/abis-345004/locations/us-central1/publishers/google/models/textembedding-gecko');
- सोर्स डेटा के लिए टेक्स्ट एम्बेडिंग जनरेट करना
एंबेडिंग सेव करने के लिए एक टेबल बनाएं और जनरेट की गई एंबेडिंग डालें. असल दुनिया के डेटाबेस ऐप्लिकेशन में, Spanner में डेटा लोड करने की प्रोसेस के दूसरे चरण तक, लेन-देन किया जा सकता है. डिजाइन के सबसे सही तरीकों को बरकरार रखने के लिए, मैं लेन-देन वाली टेबल को सामान्य रखना पसंद करता हूं. इसलिए, एम्बेडिंग के लिए एक अलग टेबल बनाता हूं.
CREATE TABLE apparels_embeddings (id string(100), embedding ARRAY<FLOAT64>)
PRIMARY KEY (id);
INSERT INTO apparels_embeddings(id, embeddings)
SELECT CAST(id as string), embeddings.values
FROM ML.PREDICT(
MODEL text_embeddings,
(SELECT id, content from apparels)
) ;
अब जब बल्क कॉन्टेंट और एम्बेडिंग तैयार हैं, तो आइए हम एक वेक्टर सर्च इंडेक्स और एंडपॉइंट बनाते हैं. इससे एम्बेडिंग को सेव किया जा सकेगा. साथ ही, वेक्टर सर्च करने में मदद मिलेगी.
4. वर्कफ़्लो जॉब: Spanner से Vector Search में डेटा एक्सपोर्ट करना
- Cloud Storage बकेट बनाना
यह इसलिए ज़रूरी है, ताकि Spanner से एम्बेडिंग को GCS बकेट में JSON फ़ॉर्मैट में सेव किया जा सके. इस फ़ॉर्मैट में, Vector Search को इनपुट मिलता है. Spanner में मौजूद डेटा के लिए, उसी क्षेत्र में बकेट बनाएं. अगर ज़रूरी हो, तो इसके अंदर एक फ़ोल्डर बनाएं. हालांकि, इसमें empty.json नाम की एक खाली फ़ाइल बनाएं.
- Cloud Workflow सेट अप करना
Spanner से Vertex AI Vector Search इंडेक्स में बैच एक्सपोर्ट सेट अप करने के लिए:
खाली इंडेक्स बनाना:
पक्का करें कि Vector Search Index, Cloud Storage बकेट और डेटा के साथ एक ही क्षेत्र में हो. इंडेक्स मैनेज करें पेज पर, एक साथ कई आइटम अपडेट करने के लिए इंडेक्स बनाएं सेक्शन में, कंसोल टैब के नीचे दिए गए 11 निर्देशों का पालन करें. contentsDeltaUri को पास किए गए फ़ोल्डर में, empty.json नाम की एक खाली फ़ाइल बनाएं. ऐसा इसलिए, क्योंकि इस फ़ाइल के बिना इंडेक्स नहीं बनाया जा सकेगा. इससे एक खाली इंडेक्स बन जाता है.
अगर आपके पास पहले से ही कोई इंडेक्स है, तो इस चरण को छोड़ा जा सकता है. वर्कफ़्लो, आपके इंडेक्स को ओवरराइट कर देगा.
ध्यान दें: किसी एंडपॉइंट पर खाली इंडेक्स डिप्लॉय नहीं किया जा सकता. इसलिए, हम इसे किसी एंडपॉइंट पर डिप्लॉय करने के चरण को बाद के चरण के लिए टाल रहे हैं. ऐसा, वेक्टर डेटा को Cloud Storage में एक्सपोर्ट करने के बाद किया जाएगा.
इस git रिपॉज़िटरी को क्लोन करें: किसी git रिपॉज़िटरी को क्लोन करने के कई तरीके हैं. इनमें से एक तरीका यह है कि GitHub CLI का इस्तेमाल करके, यह निर्देश चलाएं. Cloud Shell टर्मिनल में, यहां दिए गए दो कमांड चलाएं:
gh repo clone cloudspannerecosystem/spanner-ai
cd spanner-ai/vertex-vector-search/workflows
इस फ़ोल्डर में दो फ़ाइलें हैं
batch-export.yaml: यह वर्कफ़्लो की परिभाषा है.sample-batch-input.json: यह वर्कफ़्लो के इनपुट पैरामीटर का सैंपल है.
सैंपल फ़ाइल से input.json सेट अप करें: सबसे पहले, सैंपल json कॉपी करें.
cp sample-batch-input.json input.json
इसके बाद, अपने प्रोजेक्ट की जानकारी के साथ input.json में बदलाव करें. इस मामले में, आपका JSON ऐसा दिखना चाहिए:
{
"project_id": "<<YOUR_PROJECT>>",
"location": "<<us-central1>>",
"dataflow": {
"temp_location": "gs://<<YOUR_BUCKET>>/<<FOLDER_IF_ANY>>/workflow_temp"
},
"gcs": {
"output_folder": "gs://<<YOUR_BUCKET>>/<<FOLDER_IF_ANY>>/workflow_output"
},
"spanner": {
"instance_id": "spanner-vertex",
"database_id": "spanner-vertex-embeddings",
"table_name": "apparels_embeddings",
"columns_to_export": "embedding,id"
},
"vertex": {
"vector_search_index_id": "<<YOUR_INDEX_ID>>"
}
}
सेटअप करने की अनुमतियां
हमारा सुझाव है कि प्रोडक्शन एनवायरमेंट के लिए, एक नया सेवा खाता बनाएं. साथ ही, उसे एक या उससे ज़्यादा IAM भूमिकाएं असाइन करें. इन भूमिकाओं में, सेवा को मैनेज करने के लिए ज़रूरी अनुमतियां शामिल होनी चाहिए. Spanner (एम्बेडिंग) से Vector Search इंडेक्स में डेटा एक्सपोर्ट करने के लिए, वर्कफ़्लो सेट अप करने के लिए इन भूमिकाओं की ज़रूरत होती है:
डिफ़ॉल्ट रूप से, यह Compute Engine के डिफ़ॉल्ट सेवा खाते का इस्तेमाल करता है.
अगर मैन्युअल तरीके से कॉन्फ़िगर किए गए सेवा खाते का इस्तेमाल किया जाता है, तो आपको ये भूमिकाएं शामिल करनी होंगी:
डेटाफ़्लो जॉब को ट्रिगर करने के लिए: डेटाफ़्लो एडमिन, डेटाफ़्लो वर्कर.
डेटाफ़्लो वर्कर सेवा खाते से मिलता-जुलता खाता बनाने के लिए: सेवा खाते का उपयोगकर्ता.
लॉग लिखने के लिए: लॉग राइटर.
Vertex AI Vector Search को फिर से बनाने की प्रोसेस शुरू करने के लिए: Vertex AI का इस्तेमाल करने वाला व्यक्ति.
अगर मैन्युअल तरीके से कॉन्फ़िगर किए गए सेवा खाते का इस्तेमाल किया जाता है, तो आपको ये भूमिकाएं शामिल करनी होंगी:
डेटाफ़्लो को मैनेज करने के लिए: डेटाफ़्लो एडमिन, डेटाफ़्लो वर्कर. Spanner से डेटा पढ़ने के लिए: Cloud Spanner Database Reader. चुनी गई GCS Container Registry में बदलाव करने का ऐक्सेस: GCS Storage Bucket Owner.
- Cloud Workflow को डिप्लॉय करना
वर्कफ़्लो की YAML फ़ाइल को अपने Google Cloud प्रोजेक्ट में डिप्लॉय करें. आपके पास उस इलाके या जगह को कॉन्फ़िगर करने का विकल्प होता है जहां वर्कफ़्लो को लागू करने पर चलाया जाएगा.
gcloud workflows deploy vector-export-workflow --source=batch-export.yaml --location="us-central1" [--service account=<service_account>]
or
gcloud workflows deploy vector-export-workflow --source=batch-export.yaml --location="us-central1"
अब आपको Google Cloud Console में, वर्कफ़्लो पेज पर यह वर्कफ़्लो दिखेगा.
ध्यान दें: Google Cloud Console से भी वर्कफ़्लो बनाया और डिप्लॉय किया जा सकता है. Cloud Console में दिए गए निर्देशों का पालन करें. वर्कफ़्लो की परिभाषा के लिए, batch-export.yaml के कॉन्टेंट को कॉपी करके चिपकाएं.
यह प्रोसेस पूरी होने के बाद, वर्कफ़्लो को लागू करें, ताकि डेटा एक्सपोर्ट होना शुरू हो जाए.
- Cloud Workflow को लागू करना
वर्कफ़्लो को चलाने के लिए, यह कमांड चलाएं:
gcloud workflows execute vector-export-workflow --data="$(cat input.json)"
यह एक्ज़ीक्यूशन, Workflows में मौजूद Executions टैब में दिखना चाहिए. इससे आपका डेटा, वेक्टर सर्च डेटाबेस में लोड हो जाएगा और इंडेक्स हो जाएगा.
ध्यान दें: 'लागू करें' बटन का इस्तेमाल करके, कंसोल से भी लागू किया जा सकता है. निर्देशों का पालन करें. इसके बाद, इनपुट के लिए, अपनी पसंद के मुताबिक बनाए गए input.json फ़ाइल का कॉन्टेंट कॉपी करके चिपकाएं.
5. वेक्टर सर्च इंडेक्स डिप्लॉय करना
इंडेक्स को किसी एंडपॉइंट पर डिप्लॉय करना
इंडेक्स को डिप्लॉय करने के लिए, यहां दिया गया तरीका अपनाएं:
- वेक्टर सर्च इंडेक्स पेज पर, आपको पिछले सेक्शन के दूसरे चरण में बनाए गए इंडेक्स के बगल में, DEPLOY बटन दिखेगा. इसके अलावा, इंडेक्स की जानकारी वाले पेज पर जाकर, 'एंडपॉइंट पर डिप्लॉय करें' बटन पर क्लिक किया जा सकता है.
- ज़रूरी जानकारी दें और इंडेक्स को किसी एंडपॉइंट पर डिप्लॉय करें.
इसके अलावा, इस नोटबुक को किसी एंडपॉइंट पर डिप्लॉय करने के लिए, इस नोटबुक को देखा जा सकता है. इसके लिए, नोटबुक के डिप्लॉय वाले हिस्से पर जाएं. डेटा डिप्लॉय हो जाने के बाद, डिप्लॉय किए गए इंडेक्स आईडी और एंडपॉइंट यूआरएल को नोट कर लें.
6. फ़्रंटएंड: Vector Search में उपयोगकर्ता का डेटा
आइए, एक सामान्य Python ऐप्लिकेशन बनाते हैं. इसमें Gradio की मदद से तैयार किया गया UX होगा, ताकि हम अपने लागू किए गए बदलावों को तुरंत टेस्ट कर सकें: इस डेमो ऐप्लिकेशन को अपनी Colab नोटबुक में लागू करने के लिए, यहां दिए गए निर्देशों को पढ़ें.
- हम Embeddings API को कॉल करने के लिए, aiplatform Python SDK का इस्तेमाल करेंगे. साथ ही, Vector Search इंडेक्स एंडपॉइंट को चालू करने के लिए भी इसका इस्तेमाल करेंगे.
# [START aiplatform_sdk_embedding]
!pip install google-cloud-aiplatform==1.35.0 --upgrade --quiet --user
import vertexai
vertexai.init(project=PROJECT_ID, location="us-central1")
from vertexai.language_models import TextEmbeddingModel
import sys
if "google.colab" in sys.modules:
# Define project information
PROJECT_ID = " " # Your project id
LOCATION = " " # Your location
# Authenticate user to Google Cloud
from google.colab import auth
auth.authenticate_user()
- हम gradio का इस्तेमाल करके, एआई ऐप्लिकेशन का डेमो देंगे. इसे यूज़र इंटरफ़ेस की मदद से आसानी से और तेज़ी से बनाया जा रहा है. इस चरण को लागू करने से पहले, रनटाइम को रीस्टार्ट करें.
!pip install gradio
import gradio as gr
- उपयोगकर्ता के इनपुट के आधार पर, वेब ऐप्लिकेशन से Embeddings API को कॉल करें. हम textembedding-gecko@latest टेक्स्ट एम्बेडिंग मॉडल का इस्तेमाल करेंगे
नीचे दिए गए तरीके से, टेक्स्ट एम्बेडिंग मॉडल को चालू किया जाता है. साथ ही, यह उपयोगकर्ता के डाले गए टेक्स्ट के लिए वेक्टर एम्बेडिंग दिखाता है:
def text_embedding(content) -> list:
"""Text embedding with a Large Language Model."""
model = TextEmbeddingModel.from_pretrained("textembedding-gecko@latest")
embeddings = model.get_embeddings(content)
for embedding in embeddings:
vector = embedding.values
#print(f"Length of Embedding Vector: {len(vector)}")
return vector
इसे आज़माएं
text_embedding("red shorts for girls")
आपको नीचे दिए गए जैसा आउटपुट दिखेगा. कृपया ध्यान दें कि इमेज को लंबाई में काटा गया है, इसलिए आपको पूरा वेक्टर जवाब नहीं दिख रहा है:

- डिप्लॉय किए गए इंडेक्स आईडी और एंडपॉइंट आईडी का एलान करें
from google.cloud import aiplatform
DEPLOYED_INDEX_ID = "spanner_vector1_1702366982123"
#Vector Search Endpoint
index_endpoint = aiplatform.MatchingEngineIndexEndpoint('projects/273845608377/locations/us-central1/indexEndpoints/2021628049526620160')
- इंडेक्स एंडपॉइंट को कॉल करने के लिए, वेक्टर सर्च करने का तरीका तय करें. साथ ही, उपयोगकर्ता के इनपुट टेक्स्ट से जुड़े एम्बेडिंग रिस्पॉन्स के लिए, सबसे मिलते-जुलते 10 नतीजे दिखाएं.
नीचे दिए गए वेक्टर सर्च के तरीके की परिभाषा में, ध्यान दें कि 10 सबसे मिलते-जुलते वेक्टर की पहचान करने के लिए, find_neighbors तरीके का इस्तेमाल किया जाता है.
def vector_search(content) -> list:
result = text_embedding(content)
#call_vector_search_api(content)
index_endpoint = aiplatform.MatchingEngineIndexEndpoint('projects/273845608377/locations/us-central1/indexEndpoints/2021628049526620160')
# run query
response = index_endpoint.find_neighbors(
deployed_index_id = DEPLOYED_INDEX_ID,
queries = [result],
num_neighbors = 10
)
out = []
# show the results
for idx, neighbor in enumerate(response[0]):
print(f"{neighbor.distance:.2f} {spanner_read_data(neighbor.id)}")
out.append(f"{spanner_read_data(neighbor.id)}")
return out
आपको spanner_read_data तरीके का कॉल आउट भी दिखेगा. इसके बारे में अगले चरण में जानें.
- Spanner से डेटा पढ़ने के तरीके को लागू करने के लिए, execute_sql तरीके का इस्तेमाल करें. इससे, पिछले चरण में मिले सबसे मिलते-जुलते वेक्टर के आईडी से जुड़ी इमेज निकाली जा सकेंगी.
!pip install google-cloud-spanner==3.36.0
from google.cloud import spanner
instance_id = "spanner-vertex"
database_id = "spanner-vertex-embeddings"
projectId = PROJECT_ID
client = spanner.Client()
client.project = projectId
instance = client.instance(instance_id)
database = instance.database(database_id)
def spanner_read_data(id):
query = "SELECT uri FROM apparels where id = " + id
outputs = []
with database.snapshot() as snapshot:
results = snapshot.execute_sql(query)
for row in results:
#print(row)
#output = "ID: {}, CONTENT: {}, URI: {}".format(*row)
output = "{}".format(*row)
outputs.append(output)
return "\n".join(outputs)
इसे चुने गए वेक्टर से जुड़ी इमेज के यूआरएल दिखाने चाहिए.
- आखिर में, आइए हम इन सभी को यूज़र इंटरफ़ेस में एक साथ रखते हैं और वेक्टर सर्च की प्रोसेस को ट्रिगर करते हैं
from PIL import Image
def call_search(query):
response = vector_search(query)
return response
input_text = gr.Textbox(label="Enter your query. Examples: Girls Tops White Casual, Green t-shirt girls, jeans shorts, denim skirt etc.")
output_texts = [gr.Image(label="") for i in range(10)]
demo = gr.Interface(fn=call_search, inputs=input_text, outputs=output_texts, live=True)
resp = demo.launch(share = True)
आपको नतीजे में यह दिखेगा:

इमेज: लिंक
नतीजे का वीडियो यहां देखें.
7. व्यवस्थित करें
इस पोस्ट में इस्तेमाल की गई संसाधनों के लिए, अपने Google Cloud खाते से शुल्क न लिए जाने के लिए, यह तरीका अपनाएं:
- Google Cloud Console में, संसाधन मैनेज करें पेज पर जाएं.
- प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे आपको मिटाना है. इसके बाद, मिटाएं पर क्लिक करें.
- डायलॉग बॉक्स में, प्रोजेक्ट आईडी टाइप करें. इसके बाद, प्रोजेक्ट मिटाने के लिए बंद करें पर क्लिक करें.
- अगर आपको प्रोजेक्ट नहीं मिटाना है, तो Spanner इंस्टेंस मिटाएं. इसके लिए, उस इंस्टेंस पर जाएं जिसे आपने इस प्रोजेक्ट के लिए अभी बनाया है. इसके बाद, इंस्टेंस की खास जानकारी वाले पेज के सबसे ऊपर दाएं कोने में मौजूद, INSTANCE मिटाएं बटन पर क्लिक करें.
- वेक्टर सर्च इंडेक्स पर जाकर, एंडपॉइंट और इंडेक्स को अनडिप्लॉय किया जा सकता है. साथ ही, इंडेक्स को मिटाया जा सकता है.
8. नतीजा
बधाई हो! आपने Spanner - Vertex Vector Search को लागू करने की प्रोसेस पूरी कर ली है. इसके लिए,
- Spanner डेटाबेस से सोर्स किए गए ऐप्लिकेशन के लिए, Spanner डेटा सोर्स और एम्बेडिंग बनाना.
- वेक्टर सर्च डेटाबेस इंडेक्स बनाया जा रहा है.
- Dataflow और Workflow की मदद से, Spanner से Vector Search में वेक्टर डेटा इंटिग्रेट करना.
- किसी एंडपॉइंट पर इंडेक्स डिप्लॉय किया जा रहा है.
- आखिर में, Vertex AI SDK के Python वर्शन में, उपयोगकर्ता के इनपुट के आधार पर वेक्टर सर्च को चालू करना.
बेझिझक इस सुविधा को अपनी ज़रूरत के हिसाब से लागू करें या नई सुविधाओं के साथ मौजूदा इस्तेमाल के उदाहरण को बेहतर बनाएं. Spanner की मशीन लर्निंग की सुविधाओं के बारे में ज़्यादा जानने के लिए, यहां जाएं.