Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dalam tutorial ini, Anda mempelajari cara menggunakan Eventhouse sebagai database vektor untuk menyimpan dan mengkueri data vektor dalam Kecerdasan Real Time. Untuk informasi umum tentang database vektor, lihat Database vektor.
Skenario yang diberikan melibatkan penggunaan pencarian semantik di halaman Wikipedia untuk menemukan halaman dengan tema umum. Anda menggunakan himpunan data sampel yang tersedia, yang mencakup vektor untuk puluhan ribu halaman Wikipedia. Halaman-halaman ini disematkan dengan model OpenAI untuk menghasilkan vektor untuk setiap halaman. Vektor, bersama dengan beberapa metadata terkait dengan halaman, kemudian disimpan di Eventhouse. Anda dapat menggunakan himpunan data ini untuk menemukan halaman yang mirip satu sama lain, atau untuk menemukan halaman yang mirip dengan beberapa tema yang ingin Anda temukan. Misalnya, Anda ingin mencari "ilmuwan wanita terkenal abad ke-19." Anda mengodekan frasa ini menggunakan model OpenAI yang sama, lalu menjalankan pencarian kesamaan vektor atas data halaman Wikipedia yang disimpan untuk menemukan halaman dengan kesamaan semantik tertinggi.
Secara khusus, dalam tutorial ini Anda akan:
- Siapkan tabel di Eventhouse dengan
Vector16pengodean untuk kolom vektor. - Simpan data vektor dari himpunan data yang telah disematkan sebelumnya ke Eventhouse.
- Sematkan kueri bahasa alami menggunakan model Open AI.
- Gunakan fungsi KQL series_cosine_similarity untuk menghitung kesamaan antara vektor penyematan kueri dan yang ada di halaman wiki.
- Tampilkan baris dengan kesamaan tertinggi untuk mendapatkan halaman wiki yang paling relevan dengan kueri pencarian Anda.
Alur ini dapat divisualisasikan sebagai berikut:
Prasyarat
- Ruang kerja dengan kapasitas yang didukung oleh Microsoft Fabric
- Sebuah eventhouse di ruang kerja Anda
- Plugin ai-embeddings diaktifkan di eventhouse Anda
- Sumber daya Azure OpenAI dengan model text-embedding-ada-002 (Versi 2) diterapkan. Model ini saat ini hanya tersedia di wilayah tertentu. Untuk informasi selengkapnya, lihat Membuat sumber daya.
- Mengunduh contoh buku catatan dari repositori GitHub
Catatan
Meskipun tutorial ini menggunakan Azure OpenAI, Anda dapat menggunakan penyedia model penyematan apa pun untuk menghasilkan vektor untuk data teks.
Menyiapkan lingkungan Eventhouse Anda
Dalam langkah penyiapan ini, Anda membuat tabel di Eventhouse dengan kolom dan kebijakan pengodean yang diperlukan untuk menyimpan data vektor.
Telusuri beranda ruang kerja Anda di Real-Time Intelligence.
Pilih Eventhouse yang Anda buat di syarat sebelumnya.
Pilih database target tempat Anda ingin menyimpan data vektor. Jika Anda tidak memiliki database, Anda bisa membuatnya dengan memilih Tambahkan database.
Pilih Jelajahi data saya. Salin/tempel kueri KQL berikut untuk membuat tabel dengan kolom yang diperlukan:
.create table Wiki (id:string,url:string,['title']:string,text:string,title_vector:dynamic,content_vector:dynamic,vector_id:long)Salin/tempel perintah berikut untuk mengatur kebijakan pengodean kolom vektor. Jalankan perintah ini secara berurutan.
.alter column Wiki.title_vector policy encoding type='Vector16' .alter column Wiki.content_vector policy encoding type='Vector16'
Menulis data vektor ke Sistem Eventhouse
Langkah-langkah berikut digunakan untuk mengimpor data Wikipedia yang disematkan dan menulisnya di Eventhouse:
Mengimpor notebook
- Unduh contoh buku catatan dari repositori GitHub.
- Masuk ke lingkungan Fabric Anda. Di pengalih pengalaman, pilih Fabric lalu ruang kerja Anda.
- Pilih Impor>Buku Catatan>Dari komputer ini>Unggah lalu pilih buku catatan yang Anda unduh di langkah sebelumnya.
- Setelah impor selesai, buka buku catatan yang diimpor dari ruang kerja Anda.
Menulis data ke Eventhouse
Jalankan sel untuk menyiapkan lingkungan Anda.
%%configure -f {"conf": { "spark.rpc.message.maxSize": "1024" } }%pip install wget%pip install openaiJalankan sel untuk mengunduh penyematan yang telah dikomputasi sebelumnya.
import wget embeddings_url = "https://cdn.openai.com/API/examples/data/vector_database_wikipedia_articles_embedded.zip" # The file is ~700 MB so it might take some time wget.download(embeddings_url)import zipfile with zipfile.ZipFile("vector_database_wikipedia_articles_embedded.zip","r") as zip_ref: zip_ref.extractall("/lakehouse/default/Files/data")import pandas as pd from ast import literal_eval article_df = pd.read_csv('/lakehouse/default/Files/data/vector_database_wikipedia_articles_embedded.csv') # Read vectors from strings back into a list article_df["title_vector"] = article_df.title_vector.apply(literal_eval) article_df["content_vector"] = article_df.content_vector.apply(literal_eval) article_df.head()Untuk menulis ke eventhouse, masukkan URI Kluster Anda, yang dapat ditemukan di halaman gambaran umum sistem, dan nama database. Tabel dibuat di buku catatan dan kemudian direferensikan dalam kueri.
# replace with your Eventhouse Cluster URI, Database name, and Table name KUSTO_CLUSTER = "Eventhouse Cluster URI" KUSTO_DATABASE = "Database name" KUSTO_TABLE = "Wiki"Jalankan sel yang tersisa untuk menulis data ke Eventhouse. Operasi ini dapat memakan waktu untuk dijalankan.
kustoOptions = {"kustoCluster": KUSTO_CLUSTER, "kustoDatabase" :KUSTO_DATABASE, "kustoTable" : KUSTO_TABLE } access_token=mssparkutils.credentials.getToken(kustoOptions["kustoCluster"])#Pandas data frame to spark dataframe sparkDF=spark.createDataFrame(article_df)# Write data to a table in Eventhouse sparkDF.write. \ format("com.microsoft.kusto.spark.synapse.datasource"). \ option("kustoCluster",kustoOptions["kustoCluster"]). \ option("kustoDatabase",kustoOptions["kustoDatabase"]). \ option("kustoTable", kustoOptions["kustoTable"]). \ option("accessToken", access_token). \ option("tableCreateOptions", "CreateIfNotExist").\ mode("Append"). \ save()
Menampilkan data di Eventhouse
Pada titik ini, Anda dapat memverifikasi bahwa data ditulis ke eventhouse dengan menelusuri ke halaman detail database.
- Telusuri beranda ruang kerja Anda di Real-Time Intelligence.
- Pilih item database yang disediakan di bagian sebelumnya. Anda akan melihat ringkasan data yang ditulis ke tabel "Wiki".
Buat penyematan untuk istilah pencarian
Setelah menyimpan data wiki yang disematkan di eventhouse, Anda dapat menggunakan data ini sebagai referensi untuk menemukan halaman pada artikel tertentu. Untuk membuat perbandingan, Anda menyematkan istilah pencarian, lalu melakukan perbandingan antara istilah pencarian dan halaman Wikipedia.
Untuk memanggil API penyematan Azure OpenAI, Anda memerlukan titik akhir.
| Nama variabel | Nilai |
|---|---|
| titik akhir | Nilai ini dapat ditemukan di bagian Keys & Endpoint saat memeriksa sumber daya Anda dari portal Azure. |
Gunakan informasi dalam tabel saat menjalankan sel Azure OpenAI.
let model_endpoint = 'https://deployment-name.openai.azure.com/openai/deployments/kusto-text-embedding-ada-002/embeddings?api-version=2024-10-21;impersonate';
let searchedEmbedding = toscalar(evaluate ai_embeddings("most difficult gymnastics moves in the olympics", model_endpoint));
print(searchedEmbedding)
Mencari kesamaan
Kueri dijalankan langsung di Eventhouse, dan menggunakan penyematan yang telah dikembalikan dari langkah sebelumnya dalam perbandingan terhadap halaman Wikipedia yang disematkan yang disimpan di Eventhouse Anda. Kueri ini menggunakan fungsi kesamaan kosinus dan mengembalikan 10 vektor paling mirip teratas.
Jalankan kueri KQL untuk melihat hasilnya. Anda bisa mengubah istilah pencarian dan menjalankan ulang kueri untuk melihat hasil yang berbeda. Anda juga dapat membandingkan entri yang ada di database Wiki untuk menemukan entri serupa.
let model_endpoint = 'https://deployment-name.openai.azure.com/openai/deployments/kusto-text-embedding-ada-002/embeddings?api-version=2024-10-21;impersonate';
//
Wiki
| extend similarity = series_cosine_similarity(searchedEmbedding, content_vector)
| top 10 by similarity desc
Membersihkan sumber daya
Setelah menyelesaikan tutorial, Anda dapat menghapus sumber daya, yang Anda buat untuk menghindari timbulnya biaya lain. Untuk menghapus sumber daya, ikuti langkah-langkah berikut:
- Akses beranda ruang kerja Anda.
- Hapus buku catatan yang dibuat dalam tutorial ini.
- Hapus Eventhouse atau database yang digunakan dalam tutorial ini.