1. Genel Bakış
Patent araştırması, farklı sektörlerde rekabet ortamını anlamak, potansiyel lisanslama veya satın alma fırsatlarını belirlemek ve mevcut patentleri ihlal etmekten kaçınmak için kritik bir araçtır.
Patent araştırması geniş kapsamlı ve karmaşık bir konudur. Alakalı yenilikleri bulmak için sayısız teknik özeti incelemek göz korkutucu bir iştir. Anahtar kelimeye dayalı geleneksel aramalar genellikle yanlış ve zaman alıcıdır. Özetler uzun ve teknik olduğundan temel fikrin hızlı bir şekilde anlaşılmasını zorlaştırıyor. Bu durum, araştırmacıların önemli patentleri kaçırmasına veya alakasız sonuçlarla zaman kaybetmesine neden olabilir.
Hedef
Bu kod laboratuvarında, Spanner'dan ve yerinde Gemini 1.0 Pro, Yerleşim ve Vektör Arama'dan yararlanarak patent arama sürecini daha hızlı, daha sezgisel ve inanılmaz derecede hassas hale getirmeye çalışacağız.
Ne oluşturacaksınız?
Bu laboratuvarda şunları yapacaksınız:
- Spanner örneği oluşturma
- Google Patents Herkese Açık Veri Kümesi yükleme
- Gemini 1.0 Pro modeliyle metin gömmeleri için uzak model oluşturma
- Yüklenen veri kümesinden üretken analizler oluşturma
- Analizlerden yerleştirilmiş öğeler oluşturma
- Veri kümesine benzerlik arama sorguları gönderme
Aşağıdaki şema, veri akışını ve uygulamayla ilgili adımları gösterir.
Şartlar
2. Başlamadan önce
Proje oluşturma
- Google Cloud Console'daki proje seçici sayfasında bir Google Cloud projesi seçin veya oluşturun.
- Cloud projenizde faturalandırmanın etkinleştirildiğinden emin olun. Projede faturalandırmanın etkin olup olmadığını nasıl kontrol edeceğinizi öğrenin .
- Google Cloud'da çalışan ve bq ile önceden yüklenmiş bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız. Google Cloud Console'un üst kısmından Cloud Shell'i etkinleştir'i tıklayın.
- Cloud Shell'e bağlandıktan sonra aşağıdaki komutu kullanarak kimliğinizin doğrulanıp doğrulanmadığını ve projenin proje kimliğinize ayarlanıp ayarlanmadığını kontrol edin:
gcloud auth list
- gcloud komutunun projeniz hakkında bilgi sahibi olduğunu onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın.
gcloud config list project
- Projeniz ayarlanmadıysa ayarlamak için aşağıdaki komutu kullanın:
gcloud config set project <YOUR_PROJECT_ID>
- Konsolda Vertex AI ve Spanner API'lerini arayarak bunların etkinleştirildiğinden emin olun. Alternatif olarak, Cloud Shell terminalinde aşağıdaki komutu da kullanabilirsiniz:
gcloud services enable spanner.googleapis.com --project <<YOUR_PROJECT_ID>>
gcloud services enable aiplatform.googleapis.com --project <<YOUR_PROJECT_ID>>
Bu bağlantıyı da kullanabilirsiniz.
gcloud komutları ve kullanımı için belgelere bakın.
3. Spanner veritabanınızı hazırlama
Patent veri kümesinin yükleneceği bir Spanner örneği, veritabanı ve tablosu oluşturalım.
Spanner örneği oluşturma
spanner-vertex
adlı bir Spanner örneği oluşturun.
gcloud spanner instances create spanner-vertex \
--config=regional-us-central1 \
--description=spanner-vertex \
--nodes=1
Veritabanı oluşturun
- Google Cloud Console'da Spanner sayfasını açın.
- Listeden
spanner-vertex
örneğini seçin. - Veritabanları bölümünde Veritabanı Oluştur'u tıklayın.
- Veritabanı adını patents olarak ayarlayın.
- Veritabanını oluşturmak için Oluştur'u tıklayın.
Tablo oluşturma
- Google Cloud Console'da Spanner sayfasını açın.
- Listeden
spanner-vertex
örneğini seçin. patents
veritabanını seçin.- Tablolar sekmesinin altında Tablo Oluştur'u tıklayın. Spanner Studio sayfası açılır.
- Yeni SQL düzenleyici sekmesi'ni tıklayarak yeni bir sekme açın.
- Aşağıdaki sorguyu çalıştırın:
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. Patent verilerini veritabanına yükleme
BigQuery'deki Google Patentler Herkese Açık Veri Kümeleri veri kümemiz olarak kullanılacaktır. Sorgularımızı çalıştırmak için Spanner Studio'yu kullanacağız. spanner-gemini-search deposu, patent verilerini yüklemek için çalıştıracağımız insert_into_patents_data.sql
komut dosyasını içerir.
- Google Cloud Console'da Spanner sayfasını açın.
- Listeden
spanner-vertex
örneğini seçin. patents
veritabanını seçin.- Gezinme menüsünde Spanner Studio'yu tıklayın. Gezgin bölmesinde, veritabanınızdaki nesnelerin listesi gösterilir.
- Yeni SQL düzenleyici sekmesi'ni tıklayarak yeni bir sekme açın.
- Düzenleyicideki
insert_into_patents_data.sql
komut dosyasındaninsert
sorgu ifadesini kopyalayın. Bu kullanım alanının hızlı bir demosu için 50-100 insert ifadesi kopyalayabilirsiniz. - Çalıştır'ı tıklayın. Sorgunuzun sonuçları Sonuçlar tablosunda görünür.
5. Gemini 1.0 Pro için uzak model oluşturma
Patent verileri veritabanına yüklendikten sonra, özetlenmiş bir başlık ve anahtar kelime grubu oluşturmak için Gemini 1.0 Pro Vertex AI modelini kullanan uzak bir model oluştururuz.
Spanner Studio Düzenleyici'de aşağıdaki DDL komutunu çalıştırın:
- Gezinme menüsünde Spanner Studio'yu tıklayın. Gezgin bölmesinde, veritabanınızdaki nesnelerin listesi gösterilir.
- Yeni SQL düzenleyici sekmesi'ni tıklayarak yeni bir sekme açın.
- Aşağıdaki sorguyu çalıştırın:
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
);
- Çalıştır'ı tıklayın. Sorgunuzun sonuçları Sonuçlar tablosunda görünür.
6. Metin gömmeleri için uzak model oluşturma
Önceki adımın sonucu, bir başlık ve anahtar kelimelerden oluşan birleştirilmiş bir özet içerir. Bu yanıtı, sorgu çalıştırdığımızda uygun eşleşmeler oluşturmamıza yardımcı olacak yerleştirmelere dönüştürürüz. Vertex AI'daki Text Embedding Gecko 003 model
aracını Spanner'den uzaktan kullanacağız.
- Gezinme menüsünde Spanner Studio'yu tıklayın. Gezgin bölmesinde, veritabanınızdaki nesnelerin listesi gösterilir.
- Yeni SQL düzenleyici sekmesi'ni tıklayarak yeni bir sekme açın.
- Aşağıdaki sorguyu çalıştırın:
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');
- Çalıştır'ı tıklayın. Sorgunuzun sonuçları Sonuçlar tablosunda görünür.
7. Patent Özetlerinden Üretken Analizler Oluşturma
Daha önce oluşturduğumuz Gemini 1.5 Pro modelini kullanarak oluşturacağımız üretken analizleri depolamak için bir patents_data_gemini
tablosu oluşturacağız.
Tabloyu oluşturma
- Gezinme menüsünde Spanner Studio'yu tıklayın. Gezgin bölmesinde, veritabanınızdaki nesnelerin listesi gösterilir.
- Yeni SQL düzenleyici sekmesi'ni tıklayarak yeni bir sekme açın.
- Aşağıdaki sorguyu çalıştırın:
CREATE TABLE patents_data_gemini (id string(100), gemini_response STRING(MAX)) PRIMARY KEY (id);
- Çalıştır'ı tıklayın. Sorgunuzun sonuçları Sonuçlar tablosunda görünür.
Analiz oluşturma
Tabloyu üretken analizlerle doldurmak için toplu yazma veya mutasyon yöntemini kullanan bir uygulama kullanmanız önerilir. Bu kod laboratuvarında, tabloyu doldurmak için aşağıdaki DDL sorgusunu en fazla 4 kez çalıştıracağız.
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
));
Not: Bu adımda Kota Aşıldı hatası alıyorsanız (küçük marjlı ücretsiz krediler söz konusu olduğunda olasıdır) aşağıdaki geçici çözüm bölümündeki ekleme işlemini atlayıp yalnızca seç sorgusunu çalıştırmayı deneyin.
Geçici çözüm bölümü:
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
))
Analizleri gözlemleme
Tabloda, sorgudaki 'Identify the areas of work or keywords in this abstract',
istemi için oluşturulan analizler yer alır.
Not: INSERT DDL yerine yukarıdaki geçici çözüm bölümü sorgusunu çalıştırdıysanız bu bölümü atlayıp bunun yerine bu sayfadaki son SELECT sorgusunu çalıştırın.
Analiz sonuçlarını doğrulamak için aşağıdaki sorguyu çalıştıralım:
select title, abstract, gemini_response from patents_data a inner join patents_data_gemini b
on a.id = b.id;
Aşağıdaki sonuçlar görülür:
Not: Geçici çözüm bölümündeki sorguyu çalıştırdıysanız yukarıdaki seçim sorgusundaki tablo adını geçici çözüm bölümündeki sorguyla değiştirin. Bunun yerine aşağıdakileri çalıştırırsınız:
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;
Sonuç, yukarıdaki sonuç ekran görüntüsüyle aynı olmalıdır.
8. Oluşturulan analizler için yerleştirilmiş öğeler oluşturma
Tablomuzu analizlerle doldurduktan sonra bu analizleri yerleştirmeler oluşturmak için kullanabiliriz. Bu yerleştirmeler, tam anahtar kelime eşlemelerine güvenmememiz konusunda bize yardımcı olur ve kavramsal benzerliklere dayalı sonuçlar üretmemize yardımcı olur.
Not: Önceki adımda geçici çözüm bölümü sorgusunu çalıştırdıysanız bu adımı atlayabilir ve bu adımda da geçici çözüm bölümü sorgusuna geçebilirsiniz.
Yerleştirilmiş öğeler oluşturmak için aşağıdaki sorguyu çalıştırın:
- Gezinme menüsünde Spanner Studio'yu tıklayın. Gezgin bölmesinde, veritabanınızdaki nesnelerin listesi gösterilir.
- Yeni SQL düzenleyici sekmesi'ni tıklayarak yeni bir sekme açın.
patents_data_embeddings
tablosunu oluşturmak için aşağıdaki sorguyu çalıştırın.
CREATE TABLE patents_data_embeddings (id string(100), patents_embeddings ARRAY<FLOAT64>) PRIMARY KEY (id);
- Çalıştır'ı tıklayın. Sorgunuzun sonuçları Sonuçlar tablosunda görünür.
- Yerleşim oluşturmak için aşağıdaki sorguyu çalıştırın.
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));
- Çalıştır'ı tıklayın. Sorgunuzun sonuçları Sonuçlar tablosunda görünür.
Sonuçları gözlemleme
Tablo, başlık ve soyut metin için oluşturulan yerleştirmeleri içerir.
Sonuçları doğrulamak için aşağıdaki sorguyu çalıştıralım:
select title, abstract, b.patents_embeddings from patents_data a inner join patents_data_embeddings b
on a.id = b.id;
Aşağıdaki sonuçlar görülür:
Geçici Çözüm Bölümü:
Diğer adımlardaki geçici çözüm bölümünü uyguladıysanız bu sorguyu kullanın:
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;
Bu işlem, yukarıdaki ekran görüntüsünde gösterilen sonuçlarla aynı sonuçları verir.
9. Vektör aramaya hazırlanma
Metin gömmelerini oluşturduğumuza göre web uygulamamızı benzerlik vektörü aramaları yapmaya hazır hale getirebiliriz. Bu codelab'de, K En Yakın Komşu benzerlik arama özelliğine göre arama sonuçları sunma mantığını içeren bir web uygulaması oluşturuyoruz. Hazırlanan bu veri kümesini, arama sonuçlarının nasıl göründüğünü görselleştirmek için bir arama uygulamasıyla kullanabilirsiniz.
Kod laboratuvarımızda, istem arayan, bağlama göre sonuç oluşturan ve sonuçları 10 girişle sınırlayan bir örnek sorgu çalıştıracağız.
Aşağıdaki sorguyu çalıştırın:
- Gezinme menüsünde Spanner Studio'yu tıklayın. Gezgin bölmesinde, veritabanınızdaki nesnelerin listesi gösterilir.
- Yeni SQL düzenleyici sekmesi'ni tıklayarak yeni bir sekme açın.
patents_data_embeddings
tablosunu oluşturmak için aşağıdaki sorguyu çalıştırın.
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;
- Çalıştır'ı tıklayın. Sorgunuzun sonuçları Sonuçlar tablosunda görünür.
Not: Geçici çözüm bölümündeki sorguları kullandıysanız en eski ekleme ifadelerinden birindeki kota hataları nedeniyle diğer tüm adımları atlayabilir ve Spanner veritabanında vektör yerleştirmelerinde en yakın komşu araması yapmanın sonuçlarını gözlemlemek için doğrudan aşağıdaki sorguyu çalıştırabilirsiniz:
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;
Sonuçları gözlemleme
Önceki sorgu, istemimize en yakın 10 eşleşmeyi bulmak için COSINE_DISTANCE
yöntemini kullanır.
Aşağıdaki sonuçlar gösterilir:
Oluşturulan sonuçlar, bağlamsal olarak sorgunun bir parçası olan istemle oldukça yakındır.
10. Temizleme
Bu yayında kullanılan kaynaklar için Google Cloud hesabınızın ücretlendirilmesini istemiyorsanız şu adımları uygulayın:
- Google Cloud Console'da Kaynakları yönetin sayfasına gidin.
- Proje listesinde, silmek istediğiniz projeyi seçin ve ardından Sil'i tıklayın. Projeyi silmek istemiyorsanız Spanner'da oluşturduğunuz örneği silmeniz yeterlidir.
- İletişim kutusuna proje kimliğini yazın ve projeyi silmek için Kapat'ı tıklayın.
11. Tebrikler
Tebrikler! Spanner'ın yerleşik vektör arama özelliğini kullanarak başarıyla bir benzerlik araması yaptınız. Ayrıca, doğrudan SQL kullanarak üretken yapay zeka işlevi sağlamak için yerleştirme ve LLM modelleriyle çalışmanın ne kadar kolay olduğunu gördünüz.
Sırada ne var?
Spanner'ın tam en yakın komşu (KNN vektör arama) özelliği hakkında daha fazla bilgiyi burada bulabilirsiniz: https://cloud.google.com/spanner/docs/find-k-nearest-neighbors
Spanner'ın VertexAI entegrasyonunu kullanarak SQL ile online tahminler yapma hakkında daha fazla bilgiyi https://cloud.google.com/spanner/docs/ml adresinde bulabilirsiniz.