Hur man använder inbäddningar i LangChain

Hur Man Anvander Inbaddningar I Langchain



Inbäddningar är ett index över textsträngssläktskap och uttrycks av en vektor (lista) med heltal med flyttal. Avståndet mellan två vektorer fungerar som ett mått på hur nära sammankopplade de är; ju mindre avstånd, desto närmare släktskap. Klassen LangChain Embedding är avsedd att fungera som ett gränssnitt för inbäddningstjänster som OpenAI, HuggingFace och andra.

Två metoder, embed_query() och embed_documents(), tillhandahålls av basklassen. Den första av dessa fungerar på ett enda dokument, medan den andra kan arbeta på många dokument.

Den här artikeln förstår den praktiska demonstrationen av inbäddning i LangChain med OpenAI-textinbäddningar.







Exempel: Få en enskild inmatningstext med OpenAI-textinbäddning

För den första illustrationen matar vi in ​​en enda textsträng och hämtar OpenAI-textinbäddningen för den. Programmet börjar med att installera de nödvändiga biblioteken.



Det första biblioteket som vi behöver installera i vårt projekt är LangChain. Det följer inte med Python-standardbiblioteket så vi måste installera det separat. Eftersom langchain är tillgängligt på PyPi kan vi enkelt installera det med pip-kommandot på terminalen. Därför kör vi följande kommando för att installera LangChain-biblioteket:



$ pip installera langkedja

Biblioteket installeras så snart kraven är uppfyllda.





Vi behöver också ha OpenAI-biblioteket installerat i vårt projekt så att vi kan komma åt OpenAI-modellerna. Det här biblioteket kan invigas genom att skriva pip-kommandot:

$ pip installera openai

Nu är båda de nödvändiga biblioteken installerade i vår projektfil. Vi måste importera de nödvändiga modulerna.



från långkedja. inbäddningar . openai importera OpenAIE-inbäddningar

importera du

du . ungefär [ 'OPENAI_API_KEY' ] = 'sk-YOUR_API_KEY'

För att få OpenAI-inbäddningar måste vi importera OpenAIEmbeddings-klassen från paketet 'langchain.embeddings.openai'. Sedan ställer vi in ​​API-nyckeln som miljövariabel. Vi behöver den hemliga API-nyckeln för att komma åt de olika OpenAI-modellerna. Denna nyckel kan genereras från OpenAI-plattformen. Registrera dig helt enkelt och skaffa en hemlig nyckel från din profils avsnitt 'Visa hemlig nyckel'. Denna nyckel kan användas i olika projekt för en specifik kund.

Miljövariablerna används för att lagra API-nycklarna för en viss miljö istället för att hårdkoda dem i funktionerna. Så för att ställa in API-nyckeln som miljövariabel måste vi importera 'os'-modulen. Metoden os.environ() används för att ställa in API-nyckeln som miljövariabel. Den innehåller ett namn och ett värde. Namnet som vi anger är 'OPENAI_API_KEY' och den hemliga nyckeln är satt till 'värde'.

modell = OpenAIE-inbäddningar ( )

mata in text = 'Detta är för demonstration.'

resultat = modell. embed_query ( mata in text )

skriva ut ( resultat )

skriva ut ( endast ( resultat ) )

Vi har redan varit i kontakt med OpenAI-inbäddningsomslaget. Därefter kallar vi konstruktören för OpenAIEmbedding-klassen. OpenAI tillhandahåller en mängd olika inbäddningsmodeller men du måste betala för dem. Här går vi med standardinbäddningsmodellen för OpenAI, det vill säga text-embedding-ada-002, som är gratis. När du inte anger något modellnamn som parameter används standardmodellen.

Sedan anger vi texten som vi måste få inbäddningen av. Texten är specificerad som 'Detta är för demonstration.' och lagra den i variabeln input_text. Därefter anropas metoden embed_query() för att bädda in den tillhandahållna texten med modellen som används och input_text som har textsträngen för att hämta inbäddningen som tillhandahålls som en parameter. De hämtade inbäddningarna tilldelas utfallsobjektet.

Slutligen, för att visa resultatet, har vi Pythons print()-metod. Vi måste helt enkelt skicka objektet som lagrar värdet som vi vill visa till metoden print(). Därför anropar vi denna funktion två gånger; först för att visa listan med flytande tal och sedan för att skriva ut längden på dessa värden med hjälp av metoden len() med den.

Listan med flytande värden kan ses i följande ögonblicksbild med längden på dessa värden:

Exempel: Erhålla text/dokument med flera inmatningar med hjälp av OpenAI-textinbäddning

Förutom att få inbäddning för en enskild inmatningstext, kan vi också hämta den för flera inmatningssträngar. Vi implementerar detta i denna illustration.

Vi har redan installerat biblioteken i föregående illustration. Ett annat bibliotek som vi behöver installera här är Pythons tiktoken-bibliotek. Skriv kommandot på terminalen för att installera det:

$ pip installera tiktoken

Paketet tiktoken är en Byte Pair Encoding tokenizer. Den används med OpenAI-modellerna och delar upp text i tokens. Detta används eftersom de medföljande strängarna ibland är lite långa för den angivna OpenAI-modellen. Så den delar upp texten och kodar dem till tokens. Låt oss nu arbeta med huvudprojektet.

från långkedja. inbäddningar . openai importera OpenAIE-inbäddningar

modell = OpenAIE-inbäddningar ( openai_api_key = 'sk-YOUR_API_KEY'

strängar = ['
Detta är för demonstration. ', ' Detta sträng är också för demonstration. ', ' Detta är ännu en demo sträng . ', ' Den här är sista sträng . ']

resultat = model.embed_documents(strings)

print (resultat)

print(len(result))

OpenAIEmbeddings-klassen importeras från paketet 'langchain.embeddings.openai'. I föregående exempel satte vi API-nyckeln som miljövariabel. Men för den här skickar vi den direkt till konstruktören. Så vi behöver inte importera 'os'-modulen här.

Efter att ha anropat OpenAI-modellen som är OpenAIEmbeddings, skickar vi den hemliga API-nyckeln till den. På nästa rad anges textsträngarna. Här lagrar vi fyra textsträngar i objektsträngarna. Dessa strängar är 'Detta är för demonstration', 'Denna sträng är också för demonstration', 'Detta är en annan demosträng' och 'Denna är den sista strängen.'

Du kan ange flera strängar genom att helt enkelt separera var och en med ett kommatecken. I föregående instans anropades metoden embed_text() men vi kan inte använda den här eftersom den bara fungerar för den enstaka textsträngen. För att bädda in flera strängar, är metoden som vi har embed_document(). Så vi kallar det med den specificerade OpenAI-modellen och textsträngar som argument. Utdata bevaras i resultatobjektet. Slutligen, för att visa utdata, används Python print()-metoden med objektresultatet som parameter. Vi vill också se längden på dessa flytande värden. Därför anropar vi metoden len() inom metoden print().

Den hämtade utdata visas i följande bild:

Slutsats

Det här inlägget diskuterade konceptet med inbäddning i LangChain. Vi lärde oss vad inbäddning är och hur det fungerar. En praktisk implementering av att bädda in textsträngarna visas här. Vi gjorde två illustrationer. Det första exemplet arbetade med att hämta inbäddningen av en enstaka textsträng och det andra exemplet förstod hur man kan få inbäddningen av flera inmatningssträngar med OpenAI-inbäddningsmodellen.