A beágyazások használata a LangChainben

A Beagyazasok Hasznalata A Langchainben



A beágyazások a szöveges karakterlánc-rokonság indexei, és lebegőpontos egész számok vektorával (listájával) fejezik ki. A két vektor közötti távolság méri, hogy mennyire szorosan kapcsolódnak egymáshoz; minél kisebb a távolság, annál szorosabb a rokonság. A LangChain Embedding osztály interfészként szolgál az olyan szolgáltatások beágyazásához, mint az OpenAI, a HuggingFace és mások.

Az alaposztály két metódust, az embed_query() és az embed_documents() biztosít. Ezek közül az első egyetlen dokumentumon, míg a másik több dokumentumon működik.

Ez a cikk a LangChain beágyazás gyakorlati bemutatását mutatja be az OpenAI szövegbeágyazások használatával.







Példa: Egyetlen bemeneti szöveg beszerzése az OpenAI szövegbeágyazással

Az első illusztrációhoz egyetlen szöveges karakterláncot adunk meg, és lekérjük az OpenAI szövegbeágyazást. A program a szükséges könyvtárak telepítésével kezdődik.



Az első könyvtár, amelyet telepítenünk kell a projektünkbe, a LangChain. Nem a Python szabványkönyvtárral együtt érkezik, ezért külön kell telepítenünk. Mivel a langchain elérhető PyPi-n, könnyen telepíthetjük a terminálon található pip paranccsal. Így a következő parancsot futtatjuk a LangChain könyvtár telepítéséhez:



$ pip langchain telepítése

A könyvtár telepítése azonnal megtörténik, amint a követelmények teljesülnek.





Az OpenAI-könyvtárat is telepítenünk kell a projektünkben, hogy hozzáférhessünk az OpenAI modellekhez. Ez a könyvtár a pip parancs beírásával nyitható meg:

$ pip install openai

Most mindkét szükséges könyvtár telepítve van a projektfájlunkba. A szükséges modulokat importálnunk kell.



tól től langchain. beágyazások . openai import OpenAIEembeddings

import te

te . hozzávetőlegesen, körülbelül [ 'OPENAI_API_KEY' ] = „sk-YOUR_API_KEY”

Az OpenAI beágyazások beszerzéséhez importálnunk kell az OpenAIEMbeddings osztályt a „langchain.embeddings.openai” csomagból. Ezután beállítjuk az API-kulcsot környezeti változóként. Szükségünk van a titkos API kulcsra a különböző OpenAI modellek eléréséhez. Ez a kulcs az OpenAI platformról generálható. Egyszerűen regisztráljon, és szerezzen titkos kulcsot profilja „titkos kulcs megtekintése” részében. Ez a kulcs különböző projektekben használható egy adott ügyfél számára.

A környezeti változók az API-kulcsok tárolására szolgálnak egy adott környezethez, ahelyett, hogy a függvényekbe kódolnák őket. Tehát az API kulcs környezeti változóként való beállításához importálnunk kell az „os” modult. Az os.environ() metódus az API kulcs környezeti változóként való beállítására szolgál. Tartalmaz egy nevet és egy értéket. Az általunk beállított név „OPENAI_API_KEY”, a titkos kulcs pedig „érték”.

modell = OpenAIEembeddings ( )

input_text = – Ez a bemutató.

eredmény = modell. embed_query ( input_text )

nyomtatás ( eredmény )

nyomtatás ( csak ( eredmény ) )

Már csatlakoztunk az OpenAI beágyazási burkolójához. Ezt követően az OpenAIEMbedding osztály konstruktorát hívjuk. Az OpenAI számos beágyazási modellt kínál, de fizetni kell értük. Itt az OpenAI alapértelmezett beágyazási modelljével megyünk, azaz a text-embedding-ada-002-vel, amely ingyenes. Ha nem ad meg modellnevet paraméterként, a rendszer az alapértelmezett modellt használja.

Ezután megadjuk azt a szöveget, amelynek beágyazását meg kell szereznünk. A szöveg a következőképpen van megadva: „Ez a bemutató. és tárolja az input_text változóban. Ezt követően a megadott szöveg beágyazására szolgáló embed_query() metódus meghívásra kerül a használt modellel és a paraméterként megadott beágyazás lekéréséhez szükséges bemeneti_szöveggel. A beolvasott beágyazások hozzá vannak rendelve az eredményobjektumhoz.

Végül, hogy az eredmény látható legyen, a Python print() metódusával rendelkezünk. Egyszerűen át kell adnunk a megjeleníteni kívánt értéket tároló objektumot a print() metódusnak. Ezért ezt a függvényt kétszer hívjuk meg; először a lebegő számok listájának megjelenítéséhez, másodszor pedig ezeknek az értékeknek a hosszának kinyomtatásához a len() metódussal.

A lebegő értékek listája a következő pillanatképen látható ezen értékek hosszával:

Példa: Többszöveg/-dokumentum beszerzése az OpenAI szövegbeágyazással

Amellett, hogy egyetlen bemeneti szöveghez beágyazást kapunk, több beviteli karakterlánchoz is lekérhetjük. Ezt alkalmazzuk ebben az illusztrációban.

Az előző ábrán már telepítettük a könyvtárakat. Egy másik könyvtár, amelyet itt kell telepítenünk, a Python tiktoken könyvtára. A telepítéshez írja be a parancsot a terminálra:

$ pip install tiktoken

A tiktoken csomag egy byte Pair Encoding tokenizer. Az OpenAI modellekkel használatos, és a szöveget tokenekre bontja. Ezt azért használjuk, mert a megadott karakterláncok néha kissé hosszúak a megadott OpenAI modellhez. Tehát felosztja a szöveget, és tokenekbe kódolja. Most pedig dolgozzunk a fő projekten.

tól től langchain. beágyazások . openai import OpenAIEembeddings

modell = OpenAIEembeddings ( openai_api_key = „sk-YOUR_API_KEY”

strings = ['
Ez van számára demonstráció. ', ' Ez húr van is számára demonstráció. ', ' Ez van újabb demó húr . ', ' Ezt van utolsó húr . ']

eredmény = model.embed_documents(strings)

nyomtatás (eredmény)

nyomtatás (len(eredmény))

Az OpenAIEMbeddings osztály a „langchain.embeddings.openai” csomagból van importálva. Az előző példában az API kulcsot állítottuk be környezeti változóként. De ezt közvetlenül a kivitelezőnek adjuk át. Tehát nem kell ide importálnunk az „os” modult.

Miután meghívtuk az OpenAI-modellt, amely az OpenAIEMbeddings, átadjuk neki a titkos API-kulcsot. A következő sorban a szöveges karakterláncok vannak megadva. Itt négy szöveges karakterláncot tárolunk az objektumkarakterláncokban. Ezek a karakterláncok a következők: „Ez a bemutató”, „Ez a karakterlánc demonstrációra is való”, „Ez egy másik bemutató karakterlánc” és „Ez az utolsó karakterlánc”.

Több karakterláncot is megadhat úgy, hogy mindegyiket vesszővel választja el. Az előző esetben az embed_text() metódust hívtuk meg, de itt nem használhatjuk, mivel csak egyetlen szöveges karakterlánc esetén működik. Több karakterlánc beágyazásához az embed_document() metódus áll rendelkezésünkre. Tehát a megadott OpenAI modellel és argumentumként szöveges karakterláncokkal hívjuk. A kimenet az eredmény objektumban marad. Végül a kimenet megjelenítéséhez a Python print() metódust használjuk, paraméterként az objektum eredményét. Ezenkívül látni szeretnénk ezeknek a lebegő értékeknek a hosszát. Így a len() metódust a print() metóduson belül hívjuk meg.

A letöltött kimenet a következő képen látható:

Következtetés

Ez a bejegyzés a LangChain beágyazás fogalmát tárgyalta. Megtanultuk, mi az a beágyazás és hogyan működik. Itt látható a szöveges karakterláncok beágyazásának gyakorlati megvalósítása. Két illusztrációt készítettünk. Az első példa egyetlen szöveges karakterlánc beágyazásának lekérésére irányult, a második példa pedig azt értette meg, hogyan lehet több bemeneti karakterlánc beágyazását elérni az OpenAI beágyazási modell segítségével.