Aplikasi cerdas dengan Azure SQL Database

Berlaku untuk:Azure SQL Database

Artikel ini memberikan gambaran umum tentang menggunakan opsi kecerdasan buatan (AI), seperti OpenAI dan vektor, untuk membangun aplikasi cerdas dengan Azure SQL Database.

Untuk sampel dan contoh, silakan kunjungi repositori Sampel SQL AI.

Tonton video ini dalam seri penting Azure SQL Database untuk ringkasan singkat tentang membangun aplikasi siap AI:

Gambaran Umum

Model bahasa besar (LLM) memungkinkan pengembang untuk membuat aplikasi yang didukung AI dengan pengalaman pengguna yang familier.

Menggunakan LLM dalam aplikasi membawa nilai yang lebih besar dan pengalaman pengguna yang ditingkatkan ketika model dapat mengakses data yang tepat, pada waktu yang tepat, dari database aplikasi Anda. Proses ini dikenal sebagai Retrieval Augmented Generation (RAG) dan Azure SQL Database memiliki banyak fitur yang mendukung pola baru ini, menjadikannya database yang bagus untuk membangun aplikasi cerdas.

Tautan berikut menyediakan kode sampel berbagai opsi Azure SQL Database untuk membangun aplikasi cerdas:

Opsi AI Deskripsi
Azure OpenAI Hasilkan penyematan untuk RAG dan integrasikan dengan model apa pun yang didukung oleh Azure OpenAI.
Vektor Pelajari cara menyimpan dan mengkueri vektor di Azure SQL Database.
Pencarian Azure AI Gunakan Azure SQL Database bersama dengan Azure AI Search untuk melatih LLM pada data Anda.
Aplikasi cerdas Pelajari cara membuat solusi end-to-end menggunakan pola umum yang dapat direplikasi dalam skenario apa pun.
Salinan untuk Azure SQL Database Pelajari tentang serangkaian pengalaman yang dibantu AI yang dirancang untuk menyederhanakan desain, operasi, pengoptimalan, dan kesehatan aplikasi berbasis Azure SQL Database.

Konsep kunci

Bagian ini mencakup konsep utama yang penting untuk menerapkan RAG dengan Azure SQL Database dan Azure OpenAI.

Pengambilan Augmented Generation (RAG)

RAG adalah teknik yang meningkatkan kemampuan LLM untuk menghasilkan respons yang relevan dan informatif dengan mengambil data tambahan dari sumber eksternal. Misalnya, RAG dapat mengkueri artikel atau dokumen yang berisi pengetahuan khusus domain yang terkait dengan pertanyaan atau permintaan pengguna. LLM kemudian dapat menggunakan data yang diambil ini sebagai referensi saat menghasilkan responsnya. Misalnya, pola RAG sederhana menggunakan Azure SQL Database dapat berupa:

  1. Sisipkan data ke dalam tabel Azure SQL Database.
  2. Tautkan Azure SQL Database ke Pencarian Azure AI.
  3. Buat model Azure OpenAI GPT4 dan sambungkan ke Azure AI Search.
  4. Mengobrol dan mengajukan pertanyaan tentang data Anda menggunakan model Azure OpenAI terlatih dari aplikasi Anda dan dari Azure SQL Database.

Pola RAG, dengan rekayasa yang cepat, melayani tujuan meningkatkan kualitas respons dengan menawarkan informasi yang lebih kontekstual ke model. RAG memungkinkan model untuk menerapkan pangkalan pengetahuan yang lebih luas dengan menggabungkan sumber eksternal yang relevan ke dalam proses pembuatan, menghasilkan respons yang lebih komprehensif dan terinformasi. Untuk informasi selengkapnya tentang grounding LLM, lihat Grounding LLMs - Microsoft Community Hub.

Meminta dan meminta rekayasa

Perintah mengacu pada teks atau informasi tertentu yang berfungsi sebagai instruksi ke LLM, atau sebagai data kontekstual yang dapat dibangun LLM. Perintah dapat mengambil berbagai formulir, seperti pertanyaan, pernyataan, atau bahkan cuplikan kode.

Contoh perintah yang dapat digunakan untuk menghasilkan respons dari LLM:

  • Petunjuk: memberikan arahan ke LLM
  • Konten utama: memberikan informasi kepada LLM untuk diproses
  • Contoh: membantu mengkondisikan model ke tugas atau proses tertentu
  • Isti: arahkan output LLM ke arah yang benar
  • Konten pendukung: mewakili informasi tambahan yang dapat digunakan LLM untuk menghasilkan output

Proses pembuatan permintaan yang baik untuk skenario disebut rekayasa prompt. Untuk informasi selengkapnya tentang perintah dan praktik terbaik untuk rekayasa yang cepat, lihat Azure OpenAI Service.

Token

Token adalah potongan kecil teks yang dihasilkan dengan memisahkan teks input menjadi segmen yang lebih kecil. Segmen-segmen ini dapat berupa kata atau grup karakter, bervariasi panjangnya dari satu karakter ke seluruh kata. Misalnya, kata hamburger akan dibagi menjadi token seperti ham, , burdan ger sementara kata pendek dan umum seperti pear akan dianggap sebagai satu token.

Di Azure OpenAI, teks input yang disediakan ke API diubah menjadi token (ditokenisasi). Jumlah token yang diproses di setiap permintaan API tergantung pada faktor-faktor seperti panjang parameter input, output, dan permintaan. Kuantitas token yang sedang diproses juga berdampak pada waktu respons dan throughput model. Ada batasan jumlah token yang dapat diambil setiap model dalam satu permintaan/respons dari Azure OpenAI. Untuk mempelajari selengkapnya, lihat Kuota dan batas Layanan Azure OpenAI.

Vektor

Vektor adalah array angka yang diurutkan (biasanya float) yang dapat mewakili informasi tentang beberapa data. Misalnya, gambar dapat direpresentasikan sebagai vektor nilai piksel, atau string teks dapat direpresentasikan sebagai nilai vektor atau ASCII. Proses untuk mengubah data menjadi vektor disebut vektorisasi.

Penyematan

Penyematan adalah vektor yang mewakili fitur data penting. Penyematan sering dipelajari dengan menggunakan model pembelajaran mendalam, dan pembelajaran mesin dan model AI menggunakannya sebagai fitur. Penyematan juga dapat menangkap kesamaan semantik antara konsep serupa. Misalnya, dalam menghasilkan penyematan untuk kata-kata person dan human, kami akan mengharapkan penyematannya (representasi vektor) serupa dalam nilai karena kata-kata juga serupa secara semantik.

Model fitur Azure OpenAI untuk membuat penyematan dari data teks. Layanan ini memecah teks menjadi token dan menghasilkan penyematan menggunakan model yang telah dilatih sebelumnya oleh OpenAI. Untuk mempelajari selengkapnya, lihat Membuat penyematan dengan Azure OpenAI.

Pencarian vektor mengacu pada proses menemukan semua vektor dalam himpunan data yang secara semantik mirip dengan vektor kueri tertentu. Oleh karena itu, vektor kueri untuk kata human mencari seluruh kamus untuk kata yang sama secara semantik, dan harus menemukan kata person sebagai kecocokan dekat. Kedekatan ini, atau jarak, diukur menggunakan metrik kesamaan seperti kesamaan kosinus. Vektor yang lebih dekat memiliki kesamaan, semakin kecil jarak di antara mereka.

Pertimbangkan skenario di mana Anda menjalankan kueri lebih dari jutaan dokumen untuk menemukan dokumen yang paling mirip dalam data Anda. Anda dapat membuat penyematan untuk data dan dokumen kueri Anda menggunakan Azure OpenAI. Kemudian, Anda dapat melakukan pencarian vektor untuk menemukan dokumen yang paling mirip dari himpunan data Anda. Namun, melakukan pencarian vektor di beberapa contoh adalah hal sepele. Melakukan pencarian yang sama ini di ribuan, atau jutaan, poin data menjadi menantang. Ada juga trade-off antara pencarian lengkap dan perkiraan metode pencarian tetangga terdekat (ANN) termasuk latensi, throughput, akurasi, dan biaya, yang semuanya tergantung pada persyaratan aplikasi Anda.

Karena penyematan Azure SQL Database dapat disimpan dan dikueri secara efisien menggunakan dukungan indeks penyimpan kolom, memungkinkan pencarian tetangga terdekat yang tepat dengan performa yang bagus, Anda tidak perlu memutuskan antara akurasi dan kecepatan: Anda dapat memiliki keduanya. Menyimpan penyematan vektor bersama data dalam solusi terintegrasi meminimalkan kebutuhan untuk mengelola sinkronisasi data dan mempercepat waktu ke pasar Anda untuk pengembangan aplikasi AI.

Azure OpenAI

Penyematan adalah proses mewakili dunia nyata sebagai data. Teks, gambar, atau suara dapat dikonversi menjadi penyematan. Model Azure OpenAI dapat mengubah informasi dunia nyata menjadi penyematan. Model tersedia sebagai titik akhir REST dan dengan demikian dapat dengan mudah digunakan dari Azure SQL Database menggunakan prosedur tersimpan sp_invoke_external_rest_endpoint sistem:

DECLARE @retval INT, @response NVARCHAR(MAX);
DECLARE @payload NVARCHAR(MAX);

SET @payload = JSON_OBJECT('input': @text);

EXEC @retval = sp_invoke_external_rest_endpoint @url = 'https://<openai-url>/openai/deployments/<model-name>/embeddings?api-version=2023-03-15-preview',
    @method = 'POST',
    @credential = [https://<openai-url>/openai/deployments/<model-name>],
    @payload = @payload,
    @response = @response OUTPUT;

SELECT CAST([key] AS INT) AS [vector_value_id],
    CAST([value] AS FLOAT) AS [vector_value]
FROM OPENJSON(JSON_QUERY(@response, '$.result.data[0].embedding'));

Menggunakan panggilan ke layanan REST untuk mendapatkan penyematan hanyalah salah satu opsi integrasi yang Anda miliki saat bekerja dengan SQL Database dan OpenAI. Anda dapat mengizinkan salah satu model yang tersedia mengakses data yang disimpan di Azure SQL Database untuk membuat solusi di mana pengguna Anda dapat berinteraksi dengan data, seperti contoh berikut.

Cuplikan layar bot AI yang menjawab pertanyaan menggunakan data yang disimpan di Azure SQL Database.

Untuk contoh tambahan tentang menggunakan SQL Database dan OpenAI, lihat artikel berikut ini:

Vektor

Meskipun Azure SQL Database tidak memiliki jenis vektor asli, vektor tidak lebih dari tuple yang dipesan, dan database relasional sangat bagus dalam mengelola tuple. Anda dapat menganggap tuple sebagai istilah formal untuk baris dalam tabel.

Azure SQL Database juga mendukung indeks penyimpan kolom dan eksekusi mode batch. Pendekatan berbasis vektor digunakan untuk pemrosesan mode batch, yang berarti bahwa setiap kolom dalam batch memiliki lokasi memorinya sendiri di mana kolom disimpan sebagai vektor. Ini memungkinkan pemrosesan data yang lebih cepat dan lebih efisien dalam batch.

Contoh berikut menunjukkan bagaimana vektor dapat disimpan di SQL Database:

CREATE TABLE [dbo].[wikipedia_articles_embeddings_titles_vector]
(
    [article_id] [int] NOT NULL,
    [vector_value_id] [int] NOT NULL,
    [vector_value] [float] NOT NULL
)
GO

CREATE CLUSTERED COLUMNSTORE INDEX ixc
    ON dbo.wikipedia_articles_embeddings_titles_vector
    ORDER (article_id);
GO

Untuk contoh yang menggunakan subset umum artikel Wikipedia dengan penyematan yang sudah dibuat menggunakan OpenAI, lihat Pencarian kesamaan vektor dengan Azure SQL Database dan OpenAI.

Opsi lain untuk memanfaatkan Pencarian Vektor di database Azure SQL adalah integrasi dengan Azure AI menggunakan kemampuan vektorisasi terintegrasi: Pencarian Vektor dengan Azure SQL Database dan Azure AI Search

Menerapkan pola RAG dengan Azure SQL Database dan Azure AI Search. Anda dapat menjalankan model obrolan yang didukung pada data yang disimpan di Azure SQL Database, tanpa harus melatih atau menyempurnakan model, berkat integrasi Azure AI Search dengan Azure OpenAI dan Azure SQL Database. Menjalankan model pada data memungkinkan Anda mengobrol di atas, dan menganalisis, data Anda dengan akurasi dan kecepatan yang lebih besar.

Aplikasi cerdas

Azure SQL Database dapat digunakan untuk membangun aplikasi cerdas yang menyertakan fitur AI, seperti pemberi rekomendasi, dan Pengambilan Augmented Generation (RAG) seperti yang ditunjukkan oleh diagram berikut:

Diagram fitur AI yang berbeda untuk membangun aplikasi cerdas dengan Azure SQL Database.

Untuk sampel end-to-end untuk membangun aplikasi yang diaktifkan AI menggunakan sesi abstrak sebagai himpunan data sampel, lihat:

Integrasi LangChain

LangChain adalah kerangka kerja terkenal untuk mengembangkan aplikasi yang didukung oleh model bahasa.

Untuk contoh yang menunjukkan bagaimana LangChain dapat digunakan untuk membuat Chatbot pada data Anda sendiri, lihat Membangun Salinan DB Anda sendiri untuk Azure SQL dengan Azure OpenAI GPT-4.

Integrasi Kernel Semantik

Semantic Kernel adalah SDK sumber terbuka yang memungkinkan Anda dengan mudah membangun agen yang dapat memanggil kode yang ada. Sebagai SDK yang sangat luas, Anda dapat menggunakan Semantic Kernel dengan model dari OpenAI, Azure OpenAI, Hugging Face, dan banyak lagi! Dengan menggabungkan kode C#, Python, dan Java yang ada dengan model ini, Anda dapat membangun agen yang menjawab pertanyaan dan mengotomatiskan proses.

  • Semantic Kernel & Kernel Memory - SQL Koneksi or - Menyediakan koneksi ke database SQL untuk Kernel Semantik untuk kenangan.
  • Sampel Penyematan OpenAI: Contoh yang menunjukkan cara menggunakan Kernel Semantik dan Memori Kernel untuk bekerja dengan penyematan dalam aplikasi .NET menggunakan SQL Server sebagai Database Vektor.

Salinan untuk Azure SQL Database (pratinjau)

Salinan di Azure SQL Database (pratinjau) adalah serangkaian pengalaman yang dibantu AI yang dirancang untuk menyederhanakan desain, operasi, pengoptimalan, dan kesehatan aplikasi berbasis Azure SQL Database. Copilot dapat meningkatkan produktivitas dengan menawarkan bahasa alami ke konversi SQL dan bantuan mandiri untuk administrasi database.

Copilot menyediakan jawaban yang relevan untuk pertanyaan pengguna, menyederhanakan manajemen database dengan memanfaatkan konteks database, dokumentasi, tampilan manajemen dinamis, Penyimpanan Kueri, dan sumber pengetahuan lainnya. Contohnya:

  • Administrator database dapat mengelola database secara independen dan mengatasi masalah, atau mempelajari selengkapnya tentang performa dan kemampuan database Anda.
  • Pengembang dapat mengajukan pertanyaan tentang data mereka seperti yang mereka lakukan dalam teks atau percakapan untuk menghasilkan kueri T-SQL. Pengembang juga dapat belajar menulis kueri lebih cepat melalui penjelasan terperinci tentang kueri yang dihasilkan.

Catatan

Salinan di Azure SQL Database saat ini dalam pratinjau untuk sejumlah adopsi awal yang terbatas. Untuk mendaftar program ini, kunjungi Meminta Akses ke Copilot di Azure SQL Database: Pratinjau. Pratinjau Copilot untuk Azure SQL Database mencakup dua pengalaman portal Azure:

Lokasi portal Pengalaman
portal Azure Editor Kueri Bahasa alami ke SQL: Pengalaman ini dalam editor kueri portal Azure untuk Azure SQL Database menerjemahkan kueri bahasa alami ke dalam SQL, membuat interaksi database lebih intuitif. Untuk tutorial dan contoh bahasa alami untuk kemampuan SQL, lihat Bahasa alami ke SQL di editor kueri portal Azure (pratinjau).
Microsoft Copilot untuk Azure Integrasi Azure Copilot: Pengalaman ini menambahkan keterampilan Azure SQL ke Microsoft Copilot for Azure, memberi pelanggan bantuan mandiri, memberdayakan mereka untuk mengelola database mereka dan menyelesaikan masalah secara independen.

Untuk informasi selengkapnya, lihat Tanya jawab umum tentang Copilot di Microsoft Azure SQL (pratinjau).