Tutorial: Menggunakan Azure Cache for Redis sebagai cache semantik
Dalam tutorial ini, Anda menggunakan Azure Cache for Redis sebagai cache semantik dengan model bahasa besar (LLM) berbasis AI. Anda menggunakan Azure OpenAI Service untuk menghasilkan respons LLM terhadap kueri dan menyimpan respons tersebut menggunakan Azure Cache for Redis, memberikan respons yang lebih cepat dan menurunkan biaya.
Karena Azure Cache for Redis menawarkan kemampuan pencarian vektor bawaan, Anda juga dapat melakukan penembolokan semantik. Anda dapat mengembalikan respons cache untuk kueri yang identik dan juga untuk kueri yang serupa dalam arti, meskipun teksnya tidak sama.
Dalam tutorial ini, Anda akan mempelajari cara:
- Membuat instans Azure Cache for Redis yang dikonfigurasi untuk penembolokan semantik
- Gunakan LangChain pustaka Python populer lainnya.
- Gunakan layanan Azure OpenAI untuk menghasilkan teks dari model AI dan hasil cache.
- Lihat perolehan performa dari menggunakan penembolokan dengan LLM.
Penting
Tutorial ini memandu Anda membangun Jupyter Notebook. Anda dapat mengikuti tutorial ini dengan file kode Python (.py) dan mendapatkan hasil yang sama , tetapi Anda perlu menambahkan semua blok kode dalam tutorial ini ke dalam .py
file dan menjalankan sekali untuk melihat hasil. Dengan kata lain, Jupyter Notebooks memberikan hasil menengah saat Anda menjalankan sel, tetapi ini bukan perilaku yang harus Anda harapkan saat bekerja dalam file kode Python.
Penting
Jika Anda ingin mengikuti di buku catatan Jupyter yang telah selesai, unduh file notebook Jupyter bernama semanticcache.ipynb dan simpan ke folder semanticcache baru.
Prasyarat
Langganan Azure - buat langganan gratis
Akses yang diberikan ke Azure OpenAI dalam langganan Azure yang diinginkan Saat ini, Anda harus mengajukan permohonan akses ke Azure OpenAI. Anda dapat mengajukan permohonan akses ke Azure OpenAI dengan melengkapi formulir di https://aka.ms/oai/access.
Jupyter Notebooks (opsional)
Sumber daya Azure OpenAI dengan model text-embedding-ada-002 (Versi 2) dan gpt-35-turbo-instruct disebarkan. Model ini saat ini hanya tersedia di wilayah tertentu. Lihat panduan penyebaran sumber daya untuk petunjuk tentang cara menyebarkan model.
Membuat instans Azure Cache for Redis
Ikuti panduan Mulai Cepat: Membuat cache Redis Enterprise. Pada halaman Tingkat Lanjut , pastikan Anda menambahkan modul RediSearch dan memilih Kebijakan Kluster Perusahaan . Semua pengaturan lain dapat cocok dengan default yang dijelaskan dalam mulai cepat.
Dibutuhkan beberapa menit agar cache dibuat. Anda dapat melanjutkan ke langkah berikutnya sementara itu.
Menyiapkan lingkungan pengembangan Anda
Buat folder di komputer lokal Anda bernama semanticcache di lokasi tempat Anda biasanya menyimpan proyek.
Buat file python baru (tutorial.py) atau jupyter notebook (tutorial.ipynb) di folder .
Instal paket Python yang diperlukan:
pip install openai langchain redis tiktoken
Membuat model Azure OpenAI
Pastikan Anda memiliki dua model yang disebarkan ke sumber daya Azure OpenAI Anda:
LLM yang menyediakan respons teks. Kami menggunakan model GPT-3.5-turbo-instruct untuk tutorial ini.
Model penyematan yang mengonversi kueri menjadi vektor untuk memungkinkannya dibandingkan dengan kueri sebelumnya. Kami menggunakan model text-embedding-ada-002 (Versi 2) untuk tutorial ini.
Lihat Menyebarkan model untuk instruksi lebih rinci. Catat nama yang Anda pilih untuk setiap penyebaran model.
Mengimpor pustaka dan menyiapkan informasi koneksi
Agar berhasil melakukan panggilan terhadap Azure OpenAI, Anda memerlukan titik akhir dan kunci. Anda juga memerlukan titik akhir dan kunci untuk menyambungkan ke Azure Cache for Redis.
Buka sumber daya Azure OpenAI Anda di portal Azure.
Temukan Titik Akhir dan Kunci di bagian Manajemen Sumber Daya sumber daya Azure OpenAI Anda. Salin titik akhir dan kunci akses Anda karena Anda memerlukan keduanya untuk mengautentikasi panggilan API Anda. Contoh titik akhir adalah:
https://docs-test-001.openai.azure.com
. Anda dapat menggunakanKEY1
atauKEY2
.Buka halaman Gambaran Umum sumber daya Azure Cache for Redis Anda di portal Azure. Salin titik akhir Anda.
Temukan Kunci akses di bagian Pengaturan. Salin kunci akses Anda. Anda dapat menggunakan
Primary
atauSecondary
.Tambahkan kode berikut ke sel kode baru:
# Code cell 2 import openai import redis import os import langchain from langchain.llms import AzureOpenAI from langchain.embeddings import AzureOpenAIEmbeddings from langchain.globals import set_llm_cache from langchain.cache import RedisSemanticCache import time AZURE_ENDPOINT=<your-openai-endpoint> API_KEY=<your-openai-key> API_VERSION="2023-05-15" LLM_DEPLOYMENT_NAME=<your-llm-model-name> LLM_MODEL_NAME="gpt-35-turbo-instruct" EMBEDDINGS_DEPLOYMENT_NAME=<your-embeddings-model-name> EMBEDDINGS_MODEL_NAME="text-embedding-ada-002" REDIS_ENDPOINT = <your-redis-endpoint> REDIS_PASSWORD = <your-redis-password>
Perbarui nilai
API_KEY
danRESOURCE_ENDPOINT
dengan nilai kunci dan titik akhir dari penyebaran Azure OpenAI Anda.Atur
LLM_DEPLOYMENT_NAME
danEMBEDDINGS_DEPLOYMENT_NAME
ke nama dua model Anda yang disebarkan di Azure OpenAI Service.Perbarui
REDIS_ENDPOINT
danREDIS_PASSWORD
dengan titik akhir dan nilai kunci dari instans Azure Cache for Redis Anda.Penting
Sebaiknya gunakan variabel lingkungan atau manajer rahasia seperti Azure Key Vault untuk meneruskan informasi kunci API, titik akhir, dan nama penyebaran. Variabel-variabel ini diatur dalam teks biasa di sini demi kesederhanaan.
Jalankan sel kode 2.
Menginisialisasi model AI
Selanjutnya, Anda menginisialisasi model LLM dan penyematan
Tambahkan kode berikut ke sel kode baru:
# Code cell 3 llm = AzureOpenAI( deployment_name=LLM_DEPLOYMENT_NAME, model_name="gpt-35-turbo-instruct", openai_api_key=API_KEY, azure_endpoint=AZURE_ENDPOINT, openai_api_version=API_VERSION, ) embeddings = AzureOpenAIEmbeddings( azure_deployment=EMBEDDINGS_DEPLOYMENT_NAME, model="text-embedding-ada-002", openai_api_key=API_KEY, azure_endpoint=AZURE_ENDPOINT, openai_api_version=API_VERSION )
Jalankan sel kode 3.
Menyiapkan Redis sebagai cache semantik
Selanjutnya, tentukan Redis sebagai cache semantik untuk LLM Anda.
Tambahkan kode berikut ke sel kode baru:
# Code cell 4 redis_url = "rediss://:" + REDIS_PASSWORD + "@"+ REDIS_ENDPOINT set_llm_cache(RedisSemanticCache(redis_url = redis_url, embedding=embeddings, score_threshold=0.05))
Penting
Nilai
score_threshold
parameter menentukan seberapa mirip dua kueri yang diperlukan untuk mengembalikan hasil yang di-cache. Semakin rendah angkanya, semakin mirip kueri yang diperlukan. Anda dapat bermain-main dengan nilai ini untuk menyempurnakannya dengan aplikasi Anda.Jalankan sel kode 4.
Mengkueri dan mendapatkan respons dari LLM
Terakhir, kueri LLM untuk mendapatkan respons yang dihasilkan AI. Jika Anda menggunakan notebook Jupyter, Anda dapat menambahkan %%time
di bagian atas sel untuk menghasilkan jumlah waktu yang diperlukan untuk menjalankan kode.
Tambahkan kode berikut ke sel kode baru dan jalankan:
# Code cell 5 %%time response = llm("Please write a poem about cute kittens.") print(response)
Anda akan melihat output dan output yang mirip dengan ini:
Fluffy balls of fur, With eyes so bright and pure, Kittens are a true delight, Bringing joy into our sight. With tiny paws and playful hearts, They chase and pounce, a work of art, Their innocence and curiosity, Fills our hearts with such serenity. Their soft meows and gentle purrs, Are like music to our ears, They curl up in our laps, And take the stress away in a snap. Their whiskers twitch, they're always ready, To explore and be adventurous and steady, With their tails held high, They're a sight to make us sigh. Their tiny faces, oh so sweet, With button noses and paw-sized feet, They're the epitome of cuteness, ... Cute kittens, a true blessing, In our hearts, they'll always be reigning. CPU times: total: 0 ns Wall time: 2.67 s
menunjukkan
Wall time
nilai 2,67 detik. Itulah berapa banyak waktu dunia nyata yang diperlukan untuk mengkueri LLM dan agar LLM menghasilkan respons.Jalankan sel 5 lagi. Anda akan melihat output yang sama persis, tetapi dengan waktu dinding yang lebih kecil:
Fluffy balls of fur, With eyes so bright and pure, Kittens are a true delight, Bringing joy into our sight. With tiny paws and playful hearts, They chase and pounce, a work of art, Their innocence and curiosity, Fills our hearts with such serenity. Their soft meows and gentle purrs, Are like music to our ears, They curl up in our laps, And take the stress away in a snap. Their whiskers twitch, they're always ready, To explore and be adventurous and steady, With their tails held high, They're a sight to make us sigh. Their tiny faces, oh so sweet, With button noses and paw-sized feet, They're the epitome of cuteness, ... Cute kittens, a true blessing, In our hearts, they'll always be reigning. CPU times: total: 0 ns Wall time: 575 ms
Waktu dinding tampaknya diperpendek oleh faktor lima - semua jalan turun menjadi 575 milidetik.
Ubah kueri dari
Please write a poem about cute kittens
keWrite a poem about cute kittens
dan jalankan sel 5 lagi. Anda akan melihat output yang sama persis dan waktu dinding yang lebih rendah daripada kueri asli. Meskipun kueri berubah, arti semantik kueri tetap sama sehingga output cache yang sama dikembalikan. Ini adalah keuntungan dari penembolokan semantik!
Mengubah ambang kesamaan
Coba jalankan kueri serupa dengan arti yang berbeda, seperti
Please write a poem about cute puppies
. Perhatikan bahwa hasil yang di-cache juga dikembalikan di sini. Arti semantik katapuppies
cukup dekat dengan katakittens
bahwa hasil yang di-cache dikembalikan.Ambang kesamaan dapat dimodifikasi untuk menentukan kapan cache semantik harus mengembalikan hasil cache dan kapan harus mengembalikan output baru dari LLM. Di sel kode 4, ubah
score_threshold
dari0.05
ke0.01
:# Code cell 4 redis_url = "rediss://:" + REDIS_PASSWORD + "@"+ REDIS_ENDPOINT set_llm_cache(RedisSemanticCache(redis_url = redis_url, embedding=embeddings, score_threshold=0.01))
Coba kueri
Please write a poem about cute puppies
lagi. Anda harus menerima output baru yang khusus untuk anak anjing:Oh, little balls of fluff and fur With wagging tails and tiny paws Puppies, oh puppies, so pure The epitome of cuteness, no flaws With big round eyes that melt our hearts And floppy ears that bounce with glee Their playful antics, like works of art They bring joy to all they see Their soft, warm bodies, so cuddly As they curl up in our laps Their gentle kisses, so lovingly Like tiny, wet, puppy taps Their clumsy steps and wobbly walks As they explore the world anew Their curiosity, like a ticking clock Always eager to learn and pursue Their little barks and yips so sweet Fill our days with endless delight Their unconditional love, so complete ... For they bring us love and laughter, year after year Our cute little pups, in every way. CPU times: total: 15.6 ms Wall time: 4.3 s
Anda mungkin perlu menyempurnakan ambang kesamaan berdasarkan aplikasi Anda untuk memastikan bahwa sensitivitas yang tepat digunakan saat menentukan kueri mana yang akan di-cache.
Membersihkan sumber daya
Jika Anda ingin terus menggunakan sumber daya yang Anda buat di artikel ini, simpan grup sumber daya.
Jika tidak, jika Anda sudah selesai dengan sumber daya, Anda dapat menghapus grup sumber daya Azure yang Anda buat untuk menghindari biaya.
Penting
Penghapusan grup sumber daya tidak bisa dipulihkan. Ketika Anda menghapus grup sumber daya, semua sumber daya di dalamnya dihapus secara permanen. Pastikan Anda tidak salah menghapus grup sumber daya atau sumber daya secara tidak sengaja. Jika Anda membuat sumber daya di dalam grup sumber daya yang sudah ada yang berisi sumber daya yang ingin Anda simpan, Anda dapat menghapus setiap sumber daya satu per satu alih-alih menghapus grup sumber daya.
Untuk menghapus grup sumber daya
Masuk ke portal Azure, lalu pilih Grup sumber daya.
Pilih grup sumber daya yang ingin Anda hapus.
Jika ada banyak grup sumber daya, gunakan kotak Filter untuk bidang apa pun... , ketik nama grup sumber daya yang Anda buat untuk artikel ini. Pilih grup sumber daya dalam daftar hasil.
Pilih Hapus grup sumber daya.
Anda akan diminta untuk mengonfirmasi penghapusan grup sumber daya. Ketik nama grup sumber daya Anda lagi untuk mengonfirmasi, lalu pilih Hapus.
Setelah beberapa saat, grup sumber daya dan semua sumber dayanya akan dihapus.
Konten terkait
- Pelajari selengkapnya tentang Azure Cache for Redis
- Pelajari selengkapnya tentang kemampuan pencarian vektor Azure Cache for Redis
- Tutorial: menggunakan pencarian kesamaan vektor di Azure Cache for Redis
- Baca cara membuat aplikasi bertenaga AI dengan OpenAI dan Redis
- Membangun aplikasi Tanya Jawab umum dengan jawaban semantik
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk