1. खास जानकारी
अलग-अलग उद्योगों में, पेटेंट रिसर्च एक अहम टूल है. इसकी मदद से यह पता किया जा सकता है कि बाज़ार किस तरह के मुकाबलों में काम कर रहा है. साथ ही, इसकी मदद से लाइसेंस लेने या पाने के संभावित अवसरों की पहचान की जा सकती है और मौजूदा पेटेंट के उल्लंघन से बचा जा सकता है.
पेटेंट से जुड़ी रिसर्च काफ़ी लंबी और मुश्किल है. काम के इनोवेशन का पता लगाने के लिए, अनगिनत तकनीकी चीज़ों के बारे में जानना एक मुश्किल काम है. पारंपरिक कीवर्ड पर आधारित खोजें अक्सर गलत होती हैं और उनमें ज़्यादा समय लगता है. ऐब्स्ट्रैक्ट लंबे और तकनीकी होते हैं, जिनकी वजह से मूल आइडिया को जल्दी से समझना मुश्किल हो जाता है. इसकी वजह से हो सकता है कि शोधकर्ताओं के पास मुख्य पेटेंट न हों या वे ऐसे नतीजों पर अपना समय बर्बाद कर रहे हों जो काम के नहीं हैं.
मकसद
कोडलैब के इस वर्शन में, हम Spanner के साथ-साथ Gemini 1.0 Pro, एम्बेड करने की सुविधा, और वेक्टर सर्च की सुविधा का इस्तेमाल करके, पेटेंट को खोजने की प्रोसेस को तेज़, आसान, और शानदार बनाने पर काम करेंगे.
आपको क्या बनाना होगा
इस लैब का हिस्सा होने के नाते, आपको:
- स्पैनर इंस्टेंस बनाना
- Google Patents सार्वजनिक डेटासेट लोड करें
- Gemini 1.0 Pro मॉडल की मदद से, टेक्स्ट एम्बेड करने के लिए रिमोट मॉडल बनाएं
- लोड किए गए डेटासेट की मदद से, जनरेटिव एआई से मिलने वाली अहम जानकारी तैयार करें
- अहम जानकारी की मदद से एम्बेड करना जनरेट करें
- डेटासेट के मुकाबले, समानता वाली खोज क्वेरी से जुड़ी समस्या हल करें
नीचे दिए गए डायग्राम में, डेटा के फ़्लो और उसे लागू करने के तरीके को दिखाया गया है.
ज़रूरी शर्तें
2. शुरू करने से पहले
प्रोजेक्ट बनाना
- Google Cloud Console में, प्रोजेक्ट सिलेक्टर पेज पर, Google Cloud प्रोजेक्ट चुनें या बनाएं.
- पक्का करें कि आपके Cloud प्रोजेक्ट के लिए बिलिंग की सुविधा चालू हो. किसी प्रोजेक्ट के लिए बिलिंग चालू है या नहीं, यह देखने का तरीका जानें .
- आपको Cloud Shell का इस्तेमाल करना होगा. यह Google Cloud में चलने वाला एक कमांड-लाइन एनवायरमेंट है. यह पहले से लोड होकर, Google Cloud में आता है. Google Cloud Console में सबसे ऊपर मौजूद, Cloud Shell को चालू करें पर क्लिक करें.
- Cloud Shell से कनेक्ट करने के बाद, यह जांच लें कि आपकी पुष्टि पहले ही हो चुकी है. साथ ही, यह देखें कि प्रोजेक्ट को आपके प्रोजेक्ट आईडी पर सेट करने के लिए, नीचे दिए गए निर्देश का इस्तेमाल किया गया हो:
gcloud auth list
- Cloud Shell में यह कमांड चलाएं, ताकि यह पुष्टि की जा सके कि gcloud कमांड को आपके प्रोजेक्ट के बारे में जानकारी है.
gcloud config list project
- अगर आपका प्रोजेक्ट सेट नहीं है, तो इसे सेट करने के लिए नीचे दिए गए कमांड का इस्तेमाल करें:
gcloud config set project <YOUR_PROJECT_ID>
- पक्का करें कि Vertex AI और Spanner एपीआई चालू किए गए हों. इसके लिए, उन्हें कंसोल में खोजें. इसके अलावा, Cloud Shell टर्मिनल में इस कमांड का इस्तेमाल भी किया जा सकता है:
gcloud services enable spanner.googleapis.com --project <<YOUR_PROJECT_ID>>
gcloud services enable aiplatform.googleapis.com --project <<YOUR_PROJECT_ID>>
आपके पास इस लिंक का इस्तेमाल करने का विकल्प भी है.
gcloud के लिए कमांड और इसके इस्तेमाल के बारे में जानने के लिए, दस्तावेज़ देखें.
3. अपना स्पैनर डेटाबेस तैयार करना
आइए, एक स्पैनर इंस्टेंस, डेटाबेस, और टेबल बनाते हैं, जहां पेटेंट डेटासेट लोड होगा.
स्पैनर इंस्टेंस बनाना
spanner-vertex
नाम का स्पैनर इंस्टेंस बनाएं.
gcloud spanner instances create spanner-vertex \
--config=regional-us-central1 \
--description=spanner-vertex \
--nodes=1
डेटाबेस बनाना
- Google Cloud Console में, Spanner पेज खोलें.
- सूची से
spanner-vertex
इंस्टेंस चुनें. - डेटाबेस में जाकर, डेटाबेस बनाएं पर क्लिक करें.
- डेटाबेस के नाम को पेटेंट के तौर पर सेट करें.
- डेटाबेस बनाने के लिए, बनाएं पर क्लिक करें.
टेबल बनाना
- Google Cloud Console में, Spanner पेज खोलें.
- सूची से
spanner-vertex
इंस्टेंस चुनें. patents
डेटाबेस चुनें.- टेबल टैब में, टेबल बनाएं पर क्लिक करें. ऐसा करने पर, Spanner Studio पेज खुलेगा.
- नया एसक्यूएल एडिटर टैब पर क्लिक करके, नया टैब खोलें.
- नीचे दी गई क्वेरी चलाएं:
CREATE TABLE patents_data (
id string(25), type string(25), number string(20), country string(2), date string(20), abstract string(300000), title string(100000),kind string(5), num_claims numeric, filename string(100), withdrawn numeric,
) PRIMARY KEY (id);
4. पेटेंट डेटा को डेटाबेस में लोड करें
BigQuery पर मौजूद Google Patents सार्वजनिक डेटासेट का इस्तेमाल हमारे डेटासेट के तौर पर किया जाएगा. हम अपनी क्वेरी चलाने के लिए Spanner Studio का इस्तेमाल करेंगे. spanner-gemini-search के डेटा स्टोर करने की जगह में insert_into_patents_data.sql
स्क्रिप्ट शामिल होती है, जिसे हम पेटेंट डेटा लोड करने के लिए इस्तेमाल करते हैं.
- Google Cloud Console में, Spanner पेज खोलें.
- सूची से
spanner-vertex
इंस्टेंस चुनें. patents
डेटाबेस चुनें.- नेविगेशन मेन्यू में, Spanner Studio पर क्लिक करें. Explorer पैनल आपके डेटाबेस के ऑब्जेक्ट की सूची दिखाता है.
- नया एसक्यूएल एडिटर टैब पर क्लिक करके, नया टैब खोलें.
- एडिटर की
insert_into_patents_data.sql
स्क्रिप्ट सेinsert
क्वेरी स्टेटमेंट को कॉपी करें. इस्तेमाल के इस उदाहरण के फटाफट डेमो के लिए, 50 से 100 इंसर्ट करने के स्टेटमेंट कॉपी किए जा सकते हैं. - चलाएं पर क्लिक करें. आपकी क्वेरी के नतीजे, नतीजे टेबल में दिखते हैं.
5. Gemini 1.0 Pro के लिए रिमोट मॉडल बनाएं
डेटाबेस में पेटेंट का डेटा लोड होने के बाद, हम एक रिमोट मॉडल बनाएंगे. यह मॉडल, Gemini 1.0 Pro Vertex AI मॉडल का इस्तेमाल करके, टाइटल और कीवर्ड के खास जानकारी वाला सेट जनरेट करेगा.
Spanner Studio एडिटर में यहां दिया गया डीडीएल कमांड चलाएं:
- नेविगेशन मेन्यू में, Spanner Studio पर क्लिक करें. Explorer पैनल आपके डेटाबेस के ऑब्जेक्ट की सूची दिखाता है.
- नया एसक्यूएल एडिटर टैब पर क्लिक करके, नया टैब खोलें.
- नीचे दी गई क्वेरी चलाएं:
CREATE MODEL gemini_pro_model INPUT(
prompt STRING(MAX),
) OUTPUT(
content STRING(MAX),
) REMOTE OPTIONS (
endpoint = '//aiplatform.googleapis.com/projects/<<YOUR_PROJECT_ID>>/locations/us-central1/publishers/google/models/gemini-pro',
default_batch_size = 1
);
- चलाएं पर क्लिक करें. आपकी क्वेरी के नतीजे, नतीजे टेबल में दिखते हैं.
6. लेख एम्बेड करने के लिए रिमोट मॉडल बनाएं
पहले के चरण के नतीजे में एक खास जानकारी शामिल होती है, जिसमें टाइटल और कीवर्ड शामिल होते हैं. हम इस जवाब को एम्बेड करने की सुविधा में बदल देंगे. इससे हमें क्वेरी चलाने पर सही मैच जनरेट करने में मदद मिलेगी. हम Spanner की मदद से, Vertex AI के Text Embedding Gecko 003 model
का इस्तेमाल रिमोट तौर पर करेंगे.
- नेविगेशन मेन्यू में, Spanner Studio पर क्लिक करें. Explorer पैनल आपके डेटाबेस के ऑब्जेक्ट की सूची दिखाता है.
- नया एसक्यूएल एडिटर टैब पर क्लिक करके, नया टैब खोलें.
- नीचे दी गई क्वेरी चलाएं:
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/<<YOUR_PROJECT_ID>>/locations/us-central1/publishers/google/models/textembedding-gecko@003');
- चलाएं पर क्लिक करें. आपकी क्वेरी के नतीजे, नतीजे टेबल में दिखते हैं.
7. पेटेंट ऐब्स्ट्रैक्ट की मदद से जनरेटिव एआई की मदद से जानकारी बनाना
हम जनरेटिव इनसाइट को सेव करने के लिए, एक patents_data_gemini
टेबल बनाएंगे. इस टेबल को Gemini 1.5 Pro मॉडल का इस्तेमाल करके जनरेट किया जाएगा, जिसे हमने पहले बनाया था.
टेबल बनाना
- नेविगेशन मेन्यू में, Spanner Studio पर क्लिक करें. Explorer पैनल आपके डेटाबेस के ऑब्जेक्ट की सूची दिखाता है.
- नया एसक्यूएल एडिटर टैब पर क्लिक करके, नया टैब खोलें.
- नीचे दी गई क्वेरी चलाएं:
CREATE TABLE patents_data_gemini (id string(100), gemini_response STRING(MAX)) PRIMARY KEY (id);
- चलाएं पर क्लिक करें. आपकी क्वेरी के नतीजे, नतीजे टेबल में दिखते हैं.
इनसाइट जनरेट करें
टेबल में जनरेटिव इनसाइट की जानकारी अपने-आप भरने के लिए, हमारा सुझाव है कि आप ऐसे ऐप्लिकेशन का इस्तेमाल करें जो बैच में लिखने या म्यूटेशन के तरीके का इस्तेमाल करता हो. इस कोडलैब के लिए, हम यहां दी गई डीडीएल क्वेरी को ज़्यादा से ज़्यादा चार बार चलाएंगे, ताकि टेबल में डेटा अपने-आप भर जाए.
INSERT INTO patents_data_gemini (id, gemini_response)
SELECT id, content as gemini_response
FROM ML.PREDICT(MODEL gemini_pro_model,
(select id, concat ('Identify the areas of work or keywords in this abstract', abstract) as prompt from patents_data b where id not in (select id from patents_data_gemini) limit 50
));
ध्यान दें: अगर इस चरण में आपको कोटा पार होने वाली गड़बड़ी (छोटे मार्जिन फ़्री-क्रेडिट के मामले में हो सकती है) मिल रही है, तो इंसर्ट करने की कोशिश करें और नीचे दिए गए तरीके के सेक्शन में सिर्फ़ चुनी गई क्वेरी चलाएं.
समाधान सेक्शन:
SELECT id, content as gemini_response
FROM ML.PREDICT(MODEL gemini_pro_model,
(select id, concat ('Identify the areas of work or keywords in this abstract', abstract) as prompt from patents_data b limit 50
))
अहम जानकारी देखें
इस टेबल में ऐसी इनसाइट शामिल होती हैं जो क्वेरी में 'Identify the areas of work or keywords in this abstract',
प्रॉम्प्ट के लिए जनरेट होती हैं.
ध्यान दें: अगर आपने डीडीएल डालने के बजाय, ऊपर दिए गए तरीके के सेक्शन क्वेरी को चलाया है, तो इस हिस्से को छोड़कर आगे बढ़ें और इस पेज पर आखिरी SELECT क्वेरी चलाएं.
इनसाइट के नतीजों की पुष्टि करने के लिए, यहां दी गई क्वेरी चलाएं:
select title, abstract, gemini_response from patents_data a inner join patents_data_gemini b
on a.id = b.id;
ये नतीजे दिखते हैं:
ध्यान दें: अगर आपने समाधान सेक्शन क्वेरी चलाई है, तो ऊपर दी गई चुनी हुई क्वेरी में मौजूद टेबल के नाम को, समाधान सेक्शन में मौजूद क्वेरी से बदलें. इसलिए, इसके बजाय नीचे दिया गया तरीका अपनाएं:
select title, abstract, gemini_response from patents_data a inner join (SELECT id, content as gemini_response
FROM ML.PREDICT(MODEL gemini_pro_model,
(select id, concat ('Identify the areas of work or keywords in this abstract', abstract) as prompt from patents_data b limit 50
))) b
on a.id = b.id;
नतीजा वही होना चाहिए जो ऊपर दिए गए नतीजे के स्क्रीनशॉट में दिखाया गया है.
8. जनरेट की गई इनसाइट के लिए एम्बेड करना
अपनी टेबल में अहम जानकारी भरने के बाद, अब हम एम्बेड करने के लिए इस अहम जानकारी का इस्तेमाल कर सकते हैं. इन एम्बेडिंग से हमें एग्ज़ैक्ट कीवर्ड मैच पर भरोसा न करने में मदद मिलती है. हालांकि, इससे मिलती-जुलती कॉन्सेप्ट के आधार पर नतीजे जनरेट करने में मदद मिलती है.
ध्यान दें: अगर आपने पिछले चरण में समाधान सेक्शन क्वेरी चलाई थी, तो आप इसे छोड़ सकते हैं और इस चरण में भी समाधान सेक्शन क्वेरी पर जा सकते हैं.
एम्बेडिंग जनरेट करने के लिए, नीचे दी गई क्वेरी चलाएं:
- नेविगेशन मेन्यू में, Spanner Studio पर क्लिक करें. Explorer पैनल आपके डेटाबेस के ऑब्जेक्ट की सूची दिखाता है.
- नया एसक्यूएल एडिटर टैब पर क्लिक करके, नया टैब खोलें.
patents_data_embeddings
टेबल बनाने के लिए, यहां दी गई क्वेरी चलाएं.
CREATE TABLE patents_data_embeddings (id string(100), patents_embeddings ARRAY<FLOAT64>) PRIMARY KEY (id);
- चलाएं पर क्लिक करें. आपकी क्वेरी के नतीजे, नतीजे टेबल में दिखते हैं.
- एम्बेडिंग जनरेट करने के लिए, नीचे दी गई क्वेरी चलाएं.
INSERT INTO patents_data_embeddings (id, patents_embeddings)
SELECT id, embeddings.values as patents_embeddings
FROM ML.PREDICT(MODEL text_embeddings,
(SELECT id, gemini_response as content FROM patents_data_gemini));
- चलाएं पर क्लिक करें. आपकी क्वेरी के नतीजे, नतीजे टेबल में दिखते हैं.
नतीजों को ध्यान से देखें
इस टेबल में, टाइटल और ऐब्स्ट्रैक्ट किए गए टेक्स्ट के लिए एम्बेड की गई ऐसेट शामिल की गई हैं.
नतीजों की पुष्टि करने के लिए, नीचे दी गई क्वेरी चलाएं:
select title, abstract, b.patents_embeddings from patents_data a inner join patents_data_embeddings b
on a.id = b.id;
ये नतीजे दिखते हैं:
समाधान सेक्शन:
अगर आपने दूसरे चरणों में वर्क अराउंड सेक्शन किया है, तो इस क्वेरी का इस्तेमाल करें:
select title, abstract, b.patents_embeddings from patents_data a inner join
(SELECT id, embeddings.values as patents_embeddings
FROM ML.PREDICT(MODEL text_embeddings,
(SELECT id, gemini_response as content FROM (SELECT id, content as gemini_response
FROM ML.PREDICT(MODEL gemini_pro_model,
(select id, concat ('Identify the areas of work or keywords in this abstract', abstract) as prompt from patents_data b limit 50
)))))) b
on a.id = b.id;
इससे ऊपर दिए गए स्क्रीनशॉट में दिखाए गए नतीजे जैसे ही मिलेंगे.
9. वेक्टर खोज की तैयारी करें
अब जब हमने लेख एम्बेडिंग जनरेट कर ली है, तो हम अपने वेब ऐप्लिकेशन को समानता वेक्टर खोज करने के लिए तैयार कर सकते हैं. इस कोडलैब में, हम एक ऐसा वेब ऐप्लिकेशन बना रहे हैं जिसमें K-Nearest Neighbors मिलती-जुलती खोज की क्षमता के आधार पर, खोज के नतीजे देने वाला लॉजिक शामिल है. खोज के नतीजे किस तरह दिखेंगे, यह विज़ुअलाइज़ करने के लिए, तैयार किए गए इस डेटासेट को खोज ऐप्लिकेशन के साथ इस्तेमाल किया जा सकता है.
अपने कोडलैब के लिए, हम एक सैंपल क्वेरी चलाएंगे. यह क्वेरी कोई प्रॉम्प्ट खोजती है, कॉन्टेक्स्ट के आधार पर नतीजे जनरेट करती है, और नतीजों को 10 एंट्री तक सीमित करती है.
नीचे दी गई क्वेरी चलाएं:
- नेविगेशन मेन्यू में, Spanner Studio पर क्लिक करें. Explorer पैनल आपके डेटाबेस के ऑब्जेक्ट की सूची दिखाता है.
- नया एसक्यूएल एडिटर टैब पर क्लिक करके, नया टैब खोलें.
patents_data_embeddings
टेबल बनाने के लिए, यहां दी गई क्वेरी चलाएं.
SELECT a.id, a.title, a.abstract, 'A new Natural Language Processing related Machine Learning Model' search_text, COSINE_DISTANCE(c.patents_embeddings,
(SELECT embeddings.values
FROM ML.PREDICT(
MODEL text_embeddings,
(SELECT 'A new Natural Language Processing related Machine Learning Model' as content)))) as distance
FROM patents_data a inner join patents_data_gemini b on a.id = b.id
inner join patents_data_embeddings c on a.id = c.id
ORDER BY distance
LIMIT 10;
- चलाएं पर क्लिक करें. आपकी क्वेरी के नतीजे, नतीजे टेबल में दिखते हैं.
ध्यान दें: अगर आपने जल्द से जल्द किसी इंसर्ट करने के स्टेटमेंट में कोटा की गड़बड़ियों की वजह से, समाधान सेक्शन में क्वेरी का इस्तेमाल किया है, तो अन्य सभी चरणों को स्किप किया जा सकता है. साथ ही, स्पैनर डेटाबेस में वेक्टर एम्बेडिंग के बारे में आस-पास के नतीजे सीधे तौर पर खोजने के लिए, नीचे दी गई क्वेरी करें:
SELECT a.id, a.title, a.abstract, 'A new Natural Language Processing related Machine Learning Model' search_text, COSINE_DISTANCE(c.patents_embeddings,
(SELECT embeddings.values
FROM ML.PREDICT(
MODEL text_embeddings,
(SELECT 'A new Natural Language Processing related Machine Learning Model' as content)))) as distance
FROM patents_data a inner join (SELECT id, embeddings.values as patents_embeddings
FROM ML.PREDICT(MODEL text_embeddings,
(SELECT id, gemini_response as content FROM (SELECT id, content as gemini_response
FROM ML.PREDICT(MODEL gemini_pro_model,
(select id, concat ('Identify the areas of work or keywords in this abstract', abstract) as prompt from patents_data b
)))))) c on a.id = c.id
ORDER BY distance
LIMIT 2;
नतीजों को ध्यान से देखें
पहले की क्वेरी में, हमारे प्रॉम्प्ट के हिसाब से 10 सबसे मिलते-जुलते नतीजे ढूंढने के लिए, COSINE_DISTANCE
तरीके का इस्तेमाल किया जाता है.
ये नतीजे दिखते हैं:
जनरेट होने वाले नतीजे, उस क्वेरी से काफ़ी मिलते-जुलते होते हैं जो क्वेरी का हिस्सा था.
10. व्यवस्थित करें
इस पोस्ट में इस्तेमाल किए गए संसाधनों के लिए, आपके Google Cloud खाते पर शुल्क न लगे, इसके लिए यह तरीका अपनाएं:
- Google Cloud Console में, संसाधन मैनेज करें पेज पर जाएं.
- प्रोजेक्ट की सूची में, वह प्रोजेक्ट चुनें जिसे मिटाना है. इसके बाद, मिटाएं पर क्लिक करें. यदि आप प्रोजेक्ट हटाना नहीं चाहते हैं, तो बस स्पैनर में बनाए गए इंस्टेंस को हटा दें.
- डायलॉग बॉक्स में, प्रोजेक्ट आईडी टाइप करें. इसके बाद, प्रोजेक्ट मिटाने के लिए, शट डाउन करें पर क्लिक करें.
11. बधाई हो
बधाई हो! आपने स्पैनर के बिल्ट-इन वेक्टर खोज का उपयोग करके समानता की खोज सफलतापूर्वक कर ली है. इसके अलावा, आपने देखा कि सीधे एसक्यूएल का इस्तेमाल करके जनरेटिव एआई की सुविधा देने के लिए, एम्बेड करने और एलएलएम मॉडल के साथ काम करना कितना आसान है.
आगे क्या करना है?
Spanner की सटीक निकटतम पड़ोसी (KNN वेक्टर खोज) सुविधा के बारे में यहां ज़्यादा जानें: https://cloud.google.com/spanner/docs/find-k-nearest-neighbors
Spanner के VertexAI इंटिग्रेशन का इस्तेमाल करके, एसक्यूएल के साथ ऑनलाइन अनुमान लगाने के तरीके के बारे में ज़्यादा जानने के लिए, यहां जाएं: https://cloud.google.com/spanner/docs/ml