स्पैनर, वेक्टर खोज & के साथ एक पेटेंट खोज ऐप्लिकेशन बनाएं Gemini 1.0 Pro!

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

अलग-अलग इंडस्ट्री में, प्रतिस्पर्धी परिदृश्य को समझने, लाइसेंस लेने या हासिल करने के संभावित अवसरों की पहचान करने, और मौजूदा पेटेंट का उल्लंघन करने से बचने के लिए, पेटेंट रिसर्च एक अहम टूल है.

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

मकसद

इस कोडलैब में, हम Spanner और इन-प्लेस Gemini 1.0 Pro, एम्बेडिंग, और वेक्टर सर्च का इस्तेमाल करके, पेटेंट खोजने की प्रोसेस को तेज़, आसान, और सटीक बनाने की कोशिश करेंगे.

आपको क्या बनाना है

इस लैब में, आपको ये काम करने होंगे:

  1. Spanner इंस्टेंस बनाना
  2. Google Patents का सार्वजनिक डेटासेट लोड करना
  3. Gemini 1.0 Pro मॉडल की मदद से, टेक्स्ट एम्बेड करने के लिए रिमोट मॉडल बनाना
  4. लोड किए गए डेटासेट से जनरेटिव इनसाइट बनाना
  5. अहम जानकारी से एम्बेड जनरेट करना
  6. डेटासेट के लिए मिलती-जुलती खोज क्वेरी जारी करना

इस डायग्राम में, डेटा के फ़्लो और इसे लागू करने के चरणों के बारे में बताया गया है.

14cfdde5e24258a.png

ज़रूरी शर्तें

  • कोई ब्राउज़र, जैसे कि Chrome या Firefox
  • बिलिंग की सुविधा वाला Google Cloud प्रोजेक्ट.

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

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

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

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

  1. Cloud Shell से कनेक्ट होने के बाद, यह जांच करें कि आपकी पुष्टि पहले ही हो चुकी है या नहीं. साथ ही, यह भी देखें कि प्रोजेक्ट आपके प्रोजेक्ट आईडी पर सेट है या नहीं. इसके लिए, यह कमांड इस्तेमाल करें:
gcloud auth list
  1. Cloud Shell में यह कमांड चलाकर पुष्टि करें कि gcloud कमांड को आपके प्रोजेक्ट के बारे में पता है.
gcloud config list project
  1. अगर आपका प्रोजेक्ट सेट नहीं है, तो इसे सेट करने के लिए इस निर्देश का इस्तेमाल करें:
gcloud config set project <YOUR_PROJECT_ID>
  1. कंसोल में Vertex AI और Spanner API खोजकर, पक्का करें कि वे चालू हों. इसके अलावा, 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 डेटाबेस तैयार करना

आइए, Spanner इंस्टेंस, डेटाबेस, और टेबल बनाएं, जहां पेटेंट डेटासेट लोड किया जाएगा.

Spanner इंस्टेंस बनाना

  1. spanner-vertex नाम का Spanner इंस्टेंस बनाएं.
gcloud spanner instances create spanner-vertex \
--config=regional-us-central1 \
--description=spanner-vertex \
--nodes=1

डेटाबेस बनाना

  1. Google Cloud Console में, Spanner पेज खोलें.
  2. सूची में से spanner-vertex इंस्टेंस चुनें.
  3. डेटाबेस में जाकर, डेटाबेस बनाएं पर क्लिक करें.
  4. डेटाबेस का नाम 'पेटेंट' पर सेट करें.
  5. डेटाबेस बनाने के लिए, बनाएं पर क्लिक करें.

टेबल बनाना

  1. Google Cloud Console में, Spanner पेज खोलें.
  2. सूची में से spanner-vertex इंस्टेंस चुनें.
  3. patents डेटाबेस चुनें.
  4. टेबल टैब में, टेबल बनाएं पर क्लिक करें. Spanner Studio का पेज खुलता है.
  5. नया SQL एडिटर टैब पर क्लिक करके, नया टैब खोलें.
  6. यह क्वेरी चलाएं:
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 के सार्वजनिक डेटासेट का इस्तेमाल, हमारे डेटासेट के तौर पर किया जाएगा. हम अपनी क्वेरी चलाने के लिए, Spanner Studio का इस्तेमाल करेंगे. spanner-gemini-search रिपॉज़िटरी में insert_into_patents_data.sql स्क्रिप्ट शामिल है. हम इस स्क्रिप्ट को चलाकर, पेटेंट का डेटा लोड करेंगे.

  1. Google Cloud Console में, Spanner पेज खोलें.
  2. सूची में से spanner-vertex इंस्टेंस चुनें.
  3. patents डेटाबेस चुनें.
  4. नेविगेशन मेन्यू में, Spanner Studio पर क्लिक करें. एक्सप्लोरर पैनल में, आपके डेटाबेस में मौजूद ऑब्जेक्ट की सूची दिखती है.
  5. नया SQL एडिटर टैब पर क्लिक करके, नया टैब खोलें.
  6. एडिटर में insert_into_patents_data.sql स्क्रिप्ट से insert क्वेरी स्टेटमेंट कॉपी करें. इस इस्तेमाल के उदाहरण का तुरंत डेमो देखने के लिए, 50 से 100 इंसर्ट स्टेटमेंट कॉपी किए जा सकते हैं.
  7. चलाएं पर क्लिक करें. आपकी क्वेरी के नतीजे, नतीजे टेबल में दिखते हैं.

5. Gemini 1.0 Pro के लिए रिमोट मॉडल बनाना

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

Spanner Studio Editor में, डीडीएल का यह कमांड चलाएं:

  1. नेविगेशन मेन्यू में, Spanner Studio पर क्लिक करें. एक्सप्लोरर पैनल में, आपके डेटाबेस में मौजूद ऑब्जेक्ट की सूची दिखती है.
  2. नया SQL एडिटर टैब पर क्लिक करके, नया टैब खोलें.
  3. यह क्वेरी चलाएं:
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
);
  1. चलाएं पर क्लिक करें. आपकी क्वेरी के नतीजे, नतीजे टेबल में दिखते हैं.

6. टेक्स्ट एम्बेडिंग के लिए रिमोट मॉडल बनाना

पिछले चरण के नतीजे में, टाइटल और कीवर्ड वाली एक खास जानकारी शामिल होती है. हम इस जवाब को एम्बेड में बदल देंगे. इससे हमें क्वेरी चलाते समय, काम के मैच जनरेट करने में मदद मिलेगी. हम Vertex AI के Text Embedding Gecko 003 model का इस्तेमाल, Spanner से रिमोट तौर पर करेंगे.

  1. नेविगेशन मेन्यू में, Spanner Studio पर क्लिक करें. एक्सप्लोरर पैनल में, आपके डेटाबेस में मौजूद ऑब्जेक्ट की सूची दिखती है.
  2. नया SQL एडिटर टैब पर क्लिक करके, नया टैब खोलें.
  3. यह क्वेरी चलाएं:
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');
  1. चलाएं पर क्लिक करें. आपकी क्वेरी के नतीजे, नतीजे टेबल में दिखते हैं.

7. पैटेंट के एब्सट्रैक्ट से जनरेटिव इनसाइट बनाना

हम जनरेटिव इनसाइट को सेव करने के लिए, patents_data_gemini टेबल बनाएंगे. इनसाइट को हम अपने बनाए गए Gemini 1.5 Pro मॉडल का इस्तेमाल करके जनरेट करेंगे.

टेबल बनाना

  1. नेविगेशन मेन्यू में, Spanner Studio पर क्लिक करें. एक्सप्लोरर पैनल में, आपके डेटाबेस में मौजूद ऑब्जेक्ट की सूची दिखती है.
  2. नया SQL एडिटर टैब पर क्लिक करके, नया टैब खोलें.
  3. यह क्वेरी चलाएं:
CREATE TABLE patents_data_gemini (id string(100), gemini_response STRING(MAX)) PRIMARY KEY (id);
  1. चलाएं पर क्लिक करें. आपकी क्वेरी के नतीजे, नतीजे टेबल में दिखते हैं.

अहम जानकारी जनरेट करना

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

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', प्रॉम्प्ट के लिए जनरेट की गई अहम जानकारी शामिल होती है.

ध्यान दें: अगर आपने ऊपर दी गई, समस्या हल करने के तरीके वाले सेक्शन की क्वेरी को, INSERT DDL के बजाय चलाया है, तो इस सेक्शन को छोड़ दें और इस पेज पर मौजूद आखिरी SELECT क्वेरी चलाएं.

अहम जानकारी के नतीजों की पुष्टि करने के लिए, यह क्वेरी चलाएं:

select title, abstract, gemini_response from patents_data a inner join patents_data_gemini b
on a.id = b.id;

आपको ये नतीजे दिखेंगे:

6041fab164aaab93.png

ध्यान दें: अगर आपने समस्या हल करने के तरीके वाले सेक्शन की क्वेरी चलाई है, तो ऊपर दी गई चुनी गई क्वेरी में टेबल के नाम को, समस्या हल करने के तरीके वाले सेक्शन में मौजूद क्वेरी से बदलें. इसलिए, इसके बजाय यह चलाया जा सकता है:

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. जनरेट की गई अहम जानकारी के लिए एम्बेड जनरेट करना

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

ध्यान दें: अगर आपने पिछले चरण में, समस्या हल करने के तरीके वाले सेक्शन की क्वेरी चलाई है, तो इस चरण को छोड़ा जा सकता है. इसके बाद, इस चरण में भी समस्या हल करने के तरीके वाले सेक्शन की क्वेरी पर जाया जा सकता है.

एम्बेड जनरेट करने के लिए, यह क्वेरी चलाएं:

  1. नेविगेशन मेन्यू में, Spanner Studio पर क्लिक करें. एक्सप्लोरर पैनल में, आपके डेटाबेस में मौजूद ऑब्जेक्ट की सूची दिखती है.
  2. नया SQL एडिटर टैब पर क्लिक करके, नया टैब खोलें.
  3. patents_data_embeddings टेबल बनाने के लिए, यह क्वेरी चलाएं.
CREATE TABLE patents_data_embeddings (id string(100), patents_embeddings ARRAY<FLOAT64>) PRIMARY KEY (id);
  1. चलाएं पर क्लिक करें. आपकी क्वेरी के नतीजे, नतीजे टेबल में दिखते हैं.
  2. एम्बेड जनरेट करने के लिए, यह क्वेरी चलाएं.
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));
  1. चलाएं पर क्लिक करें. आपकी क्वेरी के नतीजे, नतीजे टेबल में दिखते हैं.

नतीजों को देखना

टेबल में, टाइटल और खास जानकारी वाले टेक्स्ट के लिए जनरेट किए गए एम्बेड शामिल होते हैं.

नतीजों की पुष्टि करने के लिए, यह क्वेरी चलाएं:

select title, abstract, b.patents_embeddings from patents_data a inner join patents_data_embeddings b
on a.id = b.id;

आपको ये नतीजे दिखेंगे:

a1e968bac4ab1cb.png

समस्या हल करने का तरीका:

अगर आपने दूसरे चरणों में, समस्या हल करने का तरीका बताया है, तो इस क्वेरी का इस्तेमाल करें:

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. वेक्टर सर्च के लिए तैयारी करना

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

अपने कोडलैब के लिए, हम एक सैंपल क्वेरी चलाएंगे. यह क्वेरी, प्रॉम्प्ट खोजती है, संदर्भ के आधार पर नतीजे जनरेट करती है, और नतीजों को 10 एंट्री तक सीमित करती है.

यह क्वेरी चलाएं:

  1. नेविगेशन मेन्यू में, Spanner Studio पर क्लिक करें. एक्सप्लोरर पैनल में, आपके डेटाबेस में मौजूद ऑब्जेक्ट की सूची दिखती है.
  2. नया SQL एडिटर टैब पर क्लिक करके, नया टैब खोलें.
  3. 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;
  1. चलाएं पर क्लिक करें. आपकी क्वेरी के नतीजे, नतीजे टेबल में दिखते हैं.

ध्यान दें: अगर आपने शुरुआती इंसर्ट स्टेटमेंट में कोटा से जुड़ी गड़बड़ियों की वजह से, समस्या हल करने के तरीके वाले सेक्शन में दी गई क्वेरी का इस्तेमाल किया है, तो अन्य सभी चरणों को छोड़ा जा सकता है. इसके बाद, Spanner डेटाबेस में वेक्टर एम्बेडमेंट पर, सबसे नज़दीकी पड़ोसी खोज के नतीजे देखने के लिए, सीधे नीचे दी गई क्वेरी को चलाया जा सकता है:

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 तरीके का इस्तेमाल किया गया है.

आपको ये नतीजे दिखेंगे:

d26ca8b8238bdf25.png

जनरेट किए गए नतीजे, क्वेरी के हिस्से के प्रॉम्प्ट से काफ़ी मिलते-जुलते होते हैं.

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

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

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

11. बधाई हो

बधाई हो! आपने Spanner में पहले से मौजूद वेक्टर सर्च का इस्तेमाल करके, मिलती-जुलती वैल्यू खोजने की सुविधा का इस्तेमाल किया है. साथ ही, आपने देखा कि सीधे SQL का इस्तेमाल करके जनरेटिव एआई की सुविधा देने के लिए, एम्बेडिंग और एलएलएम मॉडल के साथ काम करना कितना आसान है.

आगे क्या करना है?

Spanner की एग्ज़ैक्ट नेबर (केएनएन वेक्टर सर्च) सुविधा के बारे में ज़्यादा जानने के लिए यहां जाएं: https://cloud.google.com/spanner/docs/find-k-nearest-neighbors

Spanner के VertexAI इंटिग्रेशन का इस्तेमाल करके, SQL की मदद से ऑनलाइन अनुमान लगाने के तरीके के बारे में ज़्यादा जानने के लिए, यहां जाएं: https://cloud.google.com/spanner/docs/ml