Kuinka käyttää upotuksia LangChainissa

Kuinka Kayttaa Upotuksia Langchainissa



Upotukset ovat tekstimerkkijonojen suhteellisuuden indeksi, ja ne ilmaistaan ​​liukulukujen kokonaislukujen vektorilla (luettelolla). Kahden vektorin välinen etäisyys mittaa, kuinka läheisesti ne ovat yhteydessä toisiinsa; mitä pienempi etäisyys, sitä läheisempi sukulaisuus. LangChain Embedding -luokka on tarkoitettu käyttöliittymäksi upotuspalveluille, kuten OpenAI, HuggingFace ja muut.

Perusluokka tarjoaa kaksi menetelmää, embed_query() ja embed_documents(). Ensimmäinen näistä toimii yhdellä asiakirjalla, kun taas toinen voi toimia useilla asiakirjoilla.

Tämä artikkeli ymmärtää käytännön esittelyn upottamisesta LangChainissa käyttämällä OpenAI-tekstiupotuksia.







Esimerkki: Yhden syöttötekstin hankkiminen OpenAI-tekstin upotuksen avulla

Ensimmäistä kuvaa varten syötetään yksi tekstimerkkijono ja haetaan OpenAI-tekstiupotus sitä varten. Ohjelma alkaa asentamalla tarvittavat kirjastot.



Ensimmäinen kirjasto, joka meidän on asennettava projektiimme, on LangChain. Se ei tule Python-standardikirjaston mukana, joten meidän on asennettava se erikseen. Koska langchain on saatavilla PyPissä, voimme asentaa sen helposti päätteen pip-komennolla. Siten suoritamme seuraavan komennon LangChain-kirjaston asentamiseksi:



$ pip asenna langchain

Kirjasto asennetaan heti, kun vaatimukset täyttyvät.





Tarvitsemme myös OpenAI-kirjaston asennettavaksi projektiimme, jotta voimme käyttää OpenAI-malleja. Tämä kirjasto voidaan avata kirjoittamalla pip-komento:

$ pip asennus openai

Nyt molemmat tarvittavat kirjastot on asennettu projektitiedostoomme. Meidän on tuotava tarvittavat moduulit.



alkaen langchain. upotukset . openai tuonti OpenAIEembeddings

tuonti sinä

sinä . suunnilleen [ 'OPENAI_API_KEY' ] = 'sk-YOUR_API_KEY'

OpenAI-upotusten saamiseksi meidän on tuotava OpenAIEMbeddings-luokka 'langchain.embeddings.openai'-paketista. Sitten asetamme API-avaimen ympäristömuuttujaksi. Tarvitsemme salaisen API-avaimen päästäksemme eri OpenAI-malleihin. Tämä avain voidaan luoda OpenAI-alustalta. Rekisteröidy ja hanki salainen avain profiilisi 'näytä salainen avain' -osiosta. Tätä avainta voidaan käyttää eri projekteissa tietylle asiakkaalle.

Ympäristömuuttujia käytetään tallentamaan tietyn ympäristön API-avaimet sen sijaan, että ne koodattaisiin funktioihin. Joten, jotta voimme asettaa API-avaimen ympäristömuuttujaksi, meidän on tuotava 'os'-moduuli. os.environ()-menetelmää käytetään API-avaimen asettamiseen ympäristömuuttujaksi. Se sisältää nimen ja arvon. Asetamme nimeksi 'OPENAI_API_KEY' ja salaisen avaimen arvoksi on asetettu 'arvo'.

malli = OpenAIEembeddings ( )

sijoita teksti = 'Tämä on esittelyä varten.'

tulokset = malli. embed_query ( sijoita teksti )

Tulosta ( tulokset )

Tulosta ( vain ( tulokset ) )

Olemme jo liittyneet OpenAI-upotuskääreeseen. Tämän jälkeen kutsumme OpenAIEMbedding-luokan rakentajaa. OpenAI tarjoaa useita upotusmalleja, mutta sinun on maksettava niistä. Tässä käytämme OpenAI:n oletusarvoista upotusmallia, eli teksti-embedding-ada-002, joka on ilmainen. Jos et anna mallin nimeä parametrina, käytetään oletusmallia.

Sitten määritämme tekstin, jonka upotus on hankittava. Teksti on määritelty 'Tämä on esittelyä varten'. ja tallenna se input_text-muuttujaan. Tämän jälkeen embed_query()-metodia syötetyn tekstin upottamiseksi kutsutaan käytetyn mallin ja input_textin kanssa, jolla on tekstimerkkijono parametrina toimitetun upotuksen hakemiseksi. Haetut upotukset kohdistetaan tulosobjektiin.

Lopuksi, jotta voimme näyttää tuloksen, meillä on Pythonin print()-menetelmä. Meidän on yksinkertaisesti välitettävä objekti, joka tallentaa näytettävän arvon, print()-menetelmälle. Tästä syystä kutsumme tätä funktiota kahdesti; Ensin näyttääksesi kelluvien lukujen luettelon ja toiseksi tulostaaksesi näiden arvojen pituudet käyttämällä len()-menetelmää.

Liukuvien arvojen luettelo näkyy seuraavassa tilannekuvassa näiden arvojen pituudella:

Esimerkki: Usean syötetyn tekstin/asiakirjan hankkiminen OpenAI-tekstin upotuksen avulla

Sen lisäksi, että saamme upotuksen yhdelle syötetylle tekstille, voimme myös hakea sen useille syöttömerkkijonoille. Toteutamme tämän tässä kuvassa.

Asensimme jo edellisen kuvan kirjastot. Toinen kirjasto, joka meidän on asennettava tänne, on Pythonin tiktoken-kirjasto. Asenna se kirjoittamalla komento terminaaliin:

$ pip asentaa tiktoken

Tiktoken-paketti on tavuparikoodaus tokenisaattori. Sitä käytetään OpenAI-mallien kanssa ja se jakaa tekstin tunnuksiksi. Tätä käytetään, koska toimitetut merkkijonot ovat joskus hieman pitkiä määritetylle OpenAI-mallille. Joten se jakaa tekstin ja koodaa ne tunnuksiksi. Nyt työstetään pääprojektia.

alkaen langchain. upotukset . openai tuonti OpenAIEembeddings

malli = OpenAIEembeddings ( openai_api_key = 'sk-YOUR_API_KEY'

merkkijonot = ['
Tämä On varten esittely. ', ' Tämä merkkijono On myös varten esittely. ', ' Tämä On toinen demo merkkijono . ', ' Tämä On kestää merkkijono . ']

tulos = model.embed_documents(strings)

tulosta (tulos)

tulosta (linssi (tulos))

OpenAIEMbeddings-luokka on tuotu 'langchain.embeddings.openai'-paketista. Edellisessä esimerkissä määritimme API-avaimen ympäristömuuttujaksi. Mutta tämän osalta annamme sen suoraan rakentajalle. Joten meidän ei tarvitse tuoda 'os'-moduulia tänne.

Kun olemme käynnistäneet OpenAI-mallin, joka on OpenAIEMbeddings, välitämme sille salaisen API-avaimen. Seuraavalla rivillä määritetään tekstijonot. Täällä tallennamme neljä tekstimerkkijonoa objektimerkkijonoihin. Nämä merkkijonot ovat 'Tämä on esittelyä varten', 'Tämä merkkijono on myös esittelyä varten', 'Tämä on toinen demomerkkijono' ja 'Tämä on viimeinen merkkijono'.

Voit määrittää useita merkkijonoja erottamalla ne pilkulla. Edellisessä tapauksessa embed_text() -menetelmää kutsutaan, mutta emme voi käyttää sitä tässä, koska se toimii vain yksittäisen tekstimerkkijonon kanssa. Useiden merkkijonojen upottamiseksi käytössämme oleva menetelmä on embed_document(). Joten kutsumme sitä määritetyllä OpenAI-mallilla ja tekstimerkkijonoilla argumenttina. Tulos säilytetään tulosobjektissa. Lopuksi tulosteen näyttämiseksi käytetään Python print() -menetelmää, jonka parametrina on objektin tulos. Haluamme myös nähdä näiden kelluvien arvojen pituuden. Siten vedotaan len()-menetelmään print()-menetelmässä.

Haettu tulos on seuraavassa kuvassa:

Johtopäätös

Tässä viestissä käsiteltiin upottamista LangChainissa. Opimme mitä upottaminen on ja miten se toimii. Tässä näkyy käytännön toteutus tekstimerkkijonojen upottamisesta. Teimme kaksi kuvaa. Ensimmäinen esimerkki työskenteli yhden tekstimerkkijonon upotuksen hakemisessa ja toisessa esimerkissä käsitettiin, kuinka useiden syöttömerkkijonojen upottaminen saadaan aikaan OpenAI-upotusmallilla.