Slik bruker du innebygginger i LangChain

Slik Bruker Du Innebygginger I Langchain



Innebygginger er en indeks over tekststrengrelaterthet og uttrykkes av en vektor (liste) med heltall med flytende komma. Avstanden mellom to vektorer fungerer som et mål på hvor nært forbundet de er; jo mindre avstand, jo nærmere slektskap. LangChain Embedding-klassen er ment å fungere som et grensesnitt for innebyggingstjenester som OpenAI, HuggingFace og andre.

To metoder, embed_query() og embed_documents(), leveres av basisklassen. Den første av disse opererer på ett enkelt dokument, mens den andre kan operere på mange dokumenter.

Denne artikkelen tar for seg den praktiske demonstrasjonen av innebygging i LangChain ved bruk av OpenAI-tekstinnbygginger.







Eksempel: Innhenting av en enkelt tekst ved hjelp av OpenAI-tekstinnbygging

For den første illustrasjonen skriver vi inn en enkelt tekststreng og henter OpenAI-tekstinnbyggingen for den. Programmet begynner med å installere de nødvendige bibliotekene.



Det første biblioteket vi må installere i prosjektet vårt er LangChain. Det følger ikke med Python-standardbiblioteket, så vi må installere det separat. Siden langchain er tilgjengelig på PyPi, kan vi enkelt installere den ved å bruke pip-kommandoen på terminalen. Dermed kjører vi følgende kommando for å installere LangChain-biblioteket:



$ pip installer langkjede

Biblioteket installeres så snart kravene er oppfylt.





Vi trenger også at OpenAI-biblioteket installeres i prosjektet vårt, slik at vi kan få tilgang til OpenAI-modellene. Dette biblioteket kan åpnes ved å skrive pip-kommandoen:

$ pip installer openai

Nå er begge de nødvendige bibliotekene installert i prosjektfilen vår. Vi må importere de nødvendige modulene.



fra langkjede. innebygginger . openai import ÅpneAIEbeddings

import du

du . omtrent [ 'OPENAI_API_KEY' ] = 'sk-YOUR_API_KEY'

For å få OpenAI-innbyggingene, må vi importere OpenAIEmbeddings-klassen fra 'langchain.embeddings.openai'-pakken. Deretter setter vi API-nøkkelen som miljøvariabel. Vi trenger den hemmelige API-nøkkelen for å få tilgang til de forskjellige OpenAI-modellene. Denne nøkkelen kan genereres fra OpenAI-plattformen. Bare registrer deg og få en hemmelig nøkkel fra profilens 'vis hemmelig nøkkel'-seksjon. Denne nøkkelen kan brukes på tvers av ulike prosjekter for en spesifikk klient.

Miljøvariablene brukes til å lagre API-nøklene for et bestemt miljø i stedet for å hardkode dem inn i funksjonene. Så for å angi API-nøkkelen som miljøvariabel, må vi importere 'os'-modulen. Os.environ()-metoden brukes til å angi API-nøkkelen som miljøvariabel. Den inneholder et navn og en verdi. Navnet vi angir er 'OPENAI_API_KEY' og den hemmelige nøkkelen er satt til 'verdi'.

modell = ÅpneAIEbeddings ( )

input_text = 'Dette er for demonstrasjon.'

utfall = modell. embed_query ( input_text )

skrive ut ( utfall )

skrive ut ( bare ( utfall ) )

Vi har allerede hatt grensesnitt med OpenAI-embedding-omslaget. Deretter kaller vi konstruktøren av OpenAIEmbedding-klassen. OpenAI tilbyr en rekke innebyggingsmodeller, men du må betale for dem. Her går vi med standard innebyggingsmodell av OpenAI, det vil si text-embedding-ada-002, som er gratis. Når du ikke oppgir noe modellnavn som parameter, brukes standardmodellen.

Deretter spesifiserer vi teksten vi må få innbygging av. Teksten er spesifisert som 'Dette er for demonstrasjon.' og lagre den i input_text-variabelen. Etter det kalles embed_query()-metoden for å bygge inn den angitte teksten med modellen som brukes og input_text som har tekststrengen for å hente innbyggingen som er gitt som en parameter. De hentede innebyggingene tilordnes utfallsobjektet.

Til slutt, for å vise resultatet, har vi Pythons print()-metode. Vi må ganske enkelt sende objektet som lagrer verdien vi ønsker å vise til print()-metoden. Derfor bruker vi denne funksjonen to ganger; først for å vise listen over flytende tall og deretter for å skrive ut lengden på disse verdiene ved å bruke len()-metoden med den.

Listen over flytende verdier kan sees i følgende øyeblikksbilde med lengden på disse verdiene:

Eksempel: Innhenting av tekst/dokumenter med flere inndata ved hjelp av OpenAI-tekstinnbygging

Bortsett fra å få innbygging for en enkelt inndatatekst, kan vi også hente den for flere inndatastrenger. Vi implementerer dette i denne illustrasjonen.

Vi har allerede installert bibliotekene i forrige illustrasjon. Et annet bibliotek som vi må installere her er Pythons tiktoken-bibliotek. Skriv kommandoen på terminalen for å installere den:

$ pip installer tiktoken

Tiktoken-pakken er en Byte Pair Encoding-tokenizer. Den brukes med OpenAI-modellene og deler opp tekst i tokens. Dette brukes fordi de oppgitte strengene noen ganger er litt lange for den angitte OpenAI-modellen. Så den deler teksten og koder dem til tokens. La oss nå jobbe med hovedprosjektet.

fra langkjede. innebygginger . openai import ÅpneAIEbeddings

modell = ÅpneAIEbeddings ( openai_api_key = 'sk-YOUR_API_KEY'

strenger = ['
Dette er til demonstrasjon. ', ' Dette streng er også til demonstrasjon. ', ' Dette er en annen demo streng . ', ' Denne er siste streng . ']

resultat = model.embed_documents(strings)

print (resultat)

print(len(resultat))

OpenAIEmbeddings-klassen importeres fra 'langchain.embeddings.openai'-pakken. I forrige eksempel satte vi API-nøkkelen som miljøvariabel. Men for denne sender vi den direkte til konstruktøren. Så vi trenger ikke å importere 'os'-modulen her.

Etter å ha påkalt OpenAI-modellen som er OpenAIEmbeddings, sender vi den hemmelige API-nøkkelen til den. I neste linje spesifiseres tekststrengene. Her lagrer vi fire tekststrenger i objektstrengene. Disse strengene er 'Dette er for demonstrasjon', 'Denne strengen er også for demonstrasjon', 'Dette er en annen demostreng' og 'Denne er den siste strengen.'

Du kan spesifisere flere strenger ved ganske enkelt å skille hver med et komma. I forrige tilfelle kalles embed_text()-metoden, men vi kan ikke bruke den her, da den bare fungerer for enkelttekststrengen. For å bygge inn flere strenger, er metoden vi har embed_document(). Så vi kaller det med den spesifiserte OpenAI-modellen og tekststrenger som argument. Utgangen beholdes i resultatobjektet. Til slutt, for å vise utdataene, brukes Python print()-metoden med objektresultatet som parameter. Vi ønsker også å se lengden på disse flytende verdiene. Dermed påkaller vi len()-metoden i print()-metoden.

Den hentede utgangen er gitt i følgende bilde:

Konklusjon

Dette innlegget diskuterte konseptet med innebygging i LangChain. Vi lærte hva embedding er og hvordan det fungerer. En praktisk implementering av å bygge inn tekststrengene er vist her. Vi har utført to illustrasjoner. Det første eksemplet arbeidet med å hente innbyggingen av en enkelt tekststreng, og det andre eksemplet forsto hvordan man oppnår innbygging av flere inndatastrenger ved å bruke OpenAI-innbyggingsmodellen.