Oktatóanyag: Az Azure Cache for Redis használata szemantikai gyorsítótárként
Ebben az oktatóanyagban az Azure Cache for Redist használja szemantikai gyorsítótárként egy AI-alapú nagy nyelvi modellel (LLM). Az Azure OpenAI Szolgáltatással LLM-válaszokat hozhat létre a lekérdezésekre, és gyorsítótárazhatja ezeket a válaszokat az Azure Cache for Redis használatával, gyorsabb válaszokat és alacsonyabb költségeket eredményezve.
Mivel az Azure Cache for Redis beépített vektorkeresési képességet kínál, szemantikai gyorsítótárazást is végezhet. Az azonos lekérdezésekhez és a hasonló jelentésű lekérdezésekhez gyorsítótárazott válaszokat is visszaadhat, még akkor is, ha a szöveg nem azonos.
Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:
- Szemantikai gyorsítótárazáshoz konfigurált Azure Cache for Redis-példány létrehozása
- Használja a LangChain más népszerű Python-kódtárakat.
- Az Azure OpenAI szolgáltatással migrálási modellekből és gyorsítótárazási eredményekből hozhat létre szöveget.
- Tekintse meg az LLM-ekkel való gyorsítótárazás teljesítménybeli nyereségét.
Fontos
Ez az oktatóanyag végigvezeti a Jupyter Notebook létrehozásának lépésein. Ezt az oktatóanyagot egy Python-kódfájllal (.py) követheti, és hasonló eredményeket kaphat, de az oktatóanyag összes kódblokkját hozzá kell adnia a fájlhoz, és egyszer végre kell hajtania az .py
eredményeket. Más szóval a Jupyter-jegyzetfüzetek köztes eredményeket biztosítanak a cellák végrehajtása során, de ez nem elvárható a Python-kódfájlok használatakor.
Fontos
Ha inkább egy befejezett Jupyter-jegyzetfüzetet szeretne követni, töltse le a semanticcache.ipynb nevű Jupyter-jegyzetfüzetfájlt, és mentse az új szemanticcache mappába.
Előfeltételek
Azure-előfizetés – Ingyenes létrehozás
A kívánt Azure-előfizetésben az Azure OpenAI számára biztosított hozzáférés jelenleg az Azure OpenAI-hoz való hozzáférésre van szükség. Az Azure OpenAI-hoz való hozzáférésre a következő https://aka.ms/oai/accessűrlap kitöltésével jelentkezhet: .
Jupyter notebookok (nem kötelező)
Azure OpenAI-erőforrás a text-embedding-ada-002 (2. verzió) és a gpt-35-turbo-instruct modellek üzembe helyezésével. Ezek a modellek jelenleg csak bizonyos régiókban érhetők el. A modellek üzembe helyezésére vonatkozó útmutatásért tekintse meg az erőforrás-telepítési útmutatót .
Azure Cache for Redis-példány létrehozása
Kövesse a rövid útmutatót: Redis Enterprise-gyorsítótár létrehozása útmutató. A Speciális lapon győződjön meg arról, hogy hozzáadta a RediSearch modult, és a vállalati fürtszabályzatot választotta. Minden más beállítás megfelelhet a rövid útmutatóban ismertetett alapértelmezett beállításnak.
A gyorsítótár létrehozása néhány percet vesz igénybe. Addig is továbbléphet a következő lépésre.
A fejlesztési környezet beállítása
Hozzon létre egy szemanticcache nevű mappát a helyi számítógépen azon a helyen, ahol általában menti a projekteket.
Hozzon létre egy új Python-fájlt (tutorial.py) vagy Jupyter-jegyzetfüzetet (tutorial.ipynb) a mappában.
Telepítse a szükséges Python-csomagokat:
pip install openai langchain redis tiktoken
Azure OpenAI-modellek létrehozása
Győződjön meg arról, hogy két modell van üzembe helyezve az Azure OpenAI-erőforrásban:
Szöveges válaszokat biztosító LLM. Ehhez az oktatóanyaghoz a GPT-3.5-turbo-instruct modellt használjuk.
Egy beágyazási modell, amely vektorokká alakítja a lekérdezéseket, hogy azok összehasonlíthatók legyenek a korábbi lekérdezésekkel. Ehhez az oktatóanyaghoz a text-embedding-ada-002 (2. verzió) modellt használjuk.
Részletesebb útmutatásért lásd a modell üzembe helyezését ismertető cikket. Jegyezze fel az egyes modelltelepítésekhez választott nevet.
Kódtárak importálása és kapcsolati adatok beállítása
Az Azure OpenAI-ra való sikeres híváshoz egy végpontra és egy kulcsra van szükség. Egy végpontra és egy kulcsra is szüksége van az Azure Cache for Redishez való csatlakozáshoz.
Nyissa meg az Azure OpenAI-erőforrást az Azure Portalon.
Keresse meg a végpontokat és kulcsokat az Azure OpenAI-erőforrás Erőforrás-kezelés szakaszában. Másolja ki a végpontot és a hozzáférési kulcsot, mert mindkettőre szüksége van az API-hívások hitelesítéséhez. Példavégpont:
https://docs-test-001.openai.azure.com
. A következők bármelyikét használhatja:KEY1
vagyKEY2
.Nyissa meg az Azure Cache for Redis-erőforrás áttekintési oldalát az Azure Portalon. Másolja ki a végpontot.
Keresse meg a hozzáférési kulcsokat a Beállítások szakaszban. Másolja ki a hozzáférési kulcsot. A következők bármelyikét használhatja:
Primary
vagySecondary
.Adja hozzá a következő kódot egy új kódcellához:
# 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>
Frissítse az Azure OpenAI-üzemelő példány kulcs-
API_KEY
RESOURCE_ENDPOINT
és végpontértékeit.Állítsa be
LLM_DEPLOYMENT_NAME
ésEMBEDDINGS_DEPLOYMENT_NAME
adja meg az Azure OpenAI Szolgáltatásban üzembe helyezett két modell nevét.Frissítse
REDIS_ENDPOINT
azREDIS_PASSWORD
Azure Cache for Redis-példány végpontját és kulcsértékét.Fontos
Határozottan javasoljuk, hogy környezeti változókat vagy egy titkos kulcskezelőt, például az Azure Key Vaultot használva adja át az API-kulcs, a végpont és az üzembehelyezési név adatait. Ezek a változók egyszerű szövegben vannak beállítva az egyszerűség kedvéért.
A 2. kódcella végrehajtása.
AI-modellek inicializálása
Ezután inicializálja az LLM-et és a beágyazási modelleket
Adja hozzá a következő kódot egy új kódcellához:
# 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 )
Hajtsa végre a 3. kódcellát.
A Redis beállítása szemantikai gyorsítótárként
Ezután adja meg a Redist szemantikai gyorsítótárként az LLM-hez.
Adja hozzá a következő kódot egy új kódcellához:
# Code cell 4 redis_url = "rediss://:" + REDIS_PASSWORD + "@"+ REDIS_ENDPOINT set_llm_cache(RedisSemanticCache(redis_url = redis_url, embedding=embeddings, score_threshold=0.05))
Fontos
A paraméter értéke
score_threshold
határozza meg, hogy a gyorsítótárazott eredmény visszaadásához milyen hasonló két lekérdezésnek kell lennie. Minél alacsonyabb a szám, annál hasonlóbbnak kell lennie a lekérdezésnek. Ezzel az értékkel finomhangolhatja az alkalmazást.Hajtsa végre a 4. kódcellát.
Lekérdezés és válaszok lekérése az LLM-ből
Végül kérje le az LLM-et egy AI által generált válasz lekéréséhez. Ha Jupyter-jegyzetfüzetet használ, a cella tetején hozzáadhatja %%time
a kód végrehajtásához szükséges időt.
Adja hozzá a következő kódot egy új kódcellához, és hajtsa végre:
# Code cell 5 %%time response = llm("Please write a poem about cute kittens.") print(response)
Ehhez hasonló kimenetnek és kimenetnek kell megjelennie:
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
Az
Wall time
érték 2,67 másodperc. Ennyi ideig tartott a valós idejű lekérdezés az LLM-nek és az LLM-nek a válasz létrehozásához.Hajtsa végre ismét az 5. cellát. Pontosan ugyanazt a kimenetet kell látnia, de kisebb falidővel:
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
Úgy tűnik, hogy a fal ideje öt tényezővel rövidül, egészen 575 ezredmásodpercig.
Módosítsa a lekérdezést az
Write a poem about cute kittens
5. celláraPlease write a poem about cute kittens
, és futtassa újra. Pontosan ugyanazt a kimenetet és alacsonyabb fali időt kell látnia, mint az eredeti lekérdezés. Annak ellenére, hogy a lekérdezés megváltozott, a lekérdezés szemantikai jelentése változatlan maradt, így ugyanaz a gyorsítótárazott kimenet lett visszaadva. Ez a szemantikai gyorsítótárazás előnye!
A hasonlóság küszöbértékének módosítása
Próbáljon meg más jelentéssel rendelkező hasonló lekérdezést futtatni, például
Please write a poem about cute puppies
. Figyelje meg, hogy a gyorsítótárazott eredmény itt is megjelenik. A szópuppies
szemantikai jelentése elég közel van ahhoz a szóhozkittens
, amelyet a gyorsítótárazott eredmény visszaad.A hasonlósági küszöbérték módosítható annak meghatározására, hogy a szemantikai gyorsítótár mikor ad vissza gyorsítótárazott eredményt, és mikor kell új kimenetet visszaadnia az LLM-ből. A 4. kódcellában váltson a
score_threshold
0.05
következőre0.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))
Próbálja meg újra a lekérdezést
Please write a poem about cute puppies
. A kölykökre jellemző új kimenetet kell kapnia: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
Valószínűleg az alkalmazás alapján finomhangolnia kell a hasonlóság küszöbértékét, hogy a rendszer a megfelelő érzékenységet használja a gyorsítótárazandó lekérdezések meghatározásakor.
Az erőforrások eltávolítása
Ha továbbra is használni szeretné a cikkben létrehozott erőforrásokat, tartsa meg az erőforráscsoportot.
Ellenkező esetben az erőforrásokhoz kapcsolódó díjak elkerülése érdekében, ha befejezte az erőforrások használatát, törölheti a létrehozott Azure-erőforráscsoportot.
Figyelmeztetés
Az erőforráscsoport törlése nem vonható vissza. Erőforráscsoport törlésekor az erőforráscsoport összes erőforrása véglegesen törlődik. Figyeljen arra, hogy ne töröljön véletlenül erőforráscsoportot vagy erőforrásokat. Ha olyan meglévő erőforráscsoportban hozta létre az erőforrásokat, amelyekben meg szeretné tartani az erőforrásokat, az erőforráscsoport törlése helyett egyenként törölheti az egyes erőforrásokat.
Erőforráscsoport törlése
Jelentkezzen be az Azure Portalra, és válassza az Erőforráscsoportok elemet.
Jelölje ki a törölni kívánt erőforráscsoportot.
Ha sok erőforráscsoport van, a Szűrő bármely mezőhöz mezőbe írja be a cikk végrehajtásához létrehozott erőforráscsoport nevét. A keresési eredmények listájában válassza ki az erőforráscsoportot.
Válassza az Erőforráscsoport törlése elemet.
Az Erőforráscsoport törlése panelen adja meg az erőforráscsoport nevét a megerősítéshez, majd válassza a Törlés lehetőséget.
Néhány percen belül az erőforráscsoport és annak összes erőforrása törlődik.
Kapcsolódó tartalom
- További információ az Azure Cache for Redisről
- További információ az Azure Cache for Redis vektorkeresési képességeiről
- Oktatóanyag: vektoros hasonlósági keresés használata az Azure Cache for Redisben
- Megtudhatja, hogyan hozhat létre AI-alapú alkalmazást az OpenAI és a Redis használatával
- Q&A-alkalmazás létrehozása szemantikai válaszokkal