Sådan bruger du indlejringer i LangChain

Sadan Bruger Du Indlejringer I Langchain



Indlejringer er et indeks over tekststrengrelaterede og udtrykkes af en vektor (liste) med flydende komma-heltal. Afstanden mellem to vektorer tjener som et mål for, hvor tæt forbundne de er; jo mindre afstand, jo tættere er slægtskab. LangChain Embedding-klassen er beregnet til at fungere som en grænseflade til indlejringstjenester såsom OpenAI, HuggingFace og andre.

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

Denne artikel gennemgår den praktiske demonstration af indlejring i LangChain ved hjælp af OpenAI-tekstindlejringer.







Eksempel: Indhentning af en enkelt inputtekst ved hjælp af OpenAI-tekstindlejring

Til den første illustration indtaster vi en enkelt tekststreng og henter OpenAI-tekstindlejringen til den. Programmet starter med at installere de nødvendige biblioteker.



Det første bibliotek, som vi skal installere i vores projekt, er LangChain. Det følger ikke med Python-standardbiblioteket, så vi skal installere det separat. Da langchain er tilgængelig på PyPi, kan vi nemt installere det ved hjælp af pip-kommandoen på terminalen. Således kører vi følgende kommando for at installere LangChain-biblioteket:



$ pip installer langchain

Biblioteket installeres, så snart kravene er opfyldt.





Vi skal også have OpenAI-biblioteket installeret i vores projekt, så vi kan få adgang til OpenAI-modellerne. Dette bibliotek kan åbnes ved at skrive pip-kommandoen:

$ pip installer openai

Nu er begge de nødvendige biblioteker installeret i vores projektfil. Vi skal importere de nødvendige moduler.



fra langkæde. indlejringer . openai importere OpenAIE-indlejringer

importere du

du . rundt regnet [ 'OPENAI_API_KEY' ] = 'sk-YOUR_API_KEY'

For at opnå OpenAI-indlejringerne skal vi importere OpenAIEmbeddings-klassen fra pakken 'langchain.embeddings.openai'. Derefter indstiller vi API-nøglen som miljøvariabelen. Vi har brug for den hemmelige API-nøgle for at få adgang til de forskellige OpenAI-modeller. Denne nøgle kan genereres fra OpenAI-platformen. Du skal blot tilmelde dig og få en hemmelig nøgle fra din profils 'se hemmelige nøgle'-sektion. Denne nøgle kan bruges på tværs af forskellige projekter for en specifik kunde.

Miljøvariablerne bruges til at gemme API-nøglerne til et bestemt miljø i stedet for at indkode dem i funktionerne. Så for at indstille API-nøglen som miljøvariabel, skal vi importere 'os'-modulet. Metoden os.environ() bruges til at indstille API-nøglen som miljøvariabel. Den indeholder et navn og en værdi. Det navn, vi angiver, er 'OPENAI_API_KEY', og den hemmelige nøgle er indstillet til 'værdi'.

model = OpenAIE-indlejringer ( )

input_text = 'Dette er til demonstration.'

resultat = model. embed_query ( input_text )

Print ( resultat )

Print ( kun ( resultat ) )

Vi har allerede haft grænseflader med OpenAI-indlejringsindpakningen. Derefter kalder vi konstruktøren af ​​OpenAIEmbedding-klassen. OpenAI tilbyder en række forskellige indlejringsmodeller, men du skal betale for dem. Her går vi med standardindlejringsmodellen af ​​OpenAI, dvs. text-embedding-ada-002, som er gratis. Når du ikke angiver noget modelnavn som parameter, bruges standardmodellen.

Derefter angiver vi den tekst, som vi skal opnå indlejring af. Teksten er angivet som 'Dette er til demonstration.' og gem det i input_text-variablen. Derefter kaldes embed_query()-metoden til at indlejre den angivne tekst med den model, der bruges, og input_text, der har tekststrengen til at hente indlejringen, som er angivet som en parameter. De hentede indlejringer tildeles resultatobjektet.

Til sidst, for at vise resultatet, har vi Pythons print()-metode. Vi skal simpelthen videregive det objekt, der gemmer den værdi, vi ønsker at vise, til print()-metoden. Derfor kalder vi denne funktion to gange; først for at vise listen over flydende tal og dernæst for at udskrive længden af ​​disse værdier ved hjælp af len()-metoden med den.

Listen over flydende værdier kan ses i følgende øjebliksbillede med længden af ​​disse værdier:

Eksempel: Indhentning af tekst/dokumenter med flere input ved hjælp af OpenAI-tekstintegrering

Udover at opnå indlejring af en enkelt inputtekst, kan vi også hente den for flere inputstrenge. Vi implementerer dette i denne illustration.

Vi har allerede installeret bibliotekerne i den forrige illustration. Et andet bibliotek, som vi skal installere her, er Pythons tiktoken-bibliotek. Skriv kommandoen på terminalen for at installere den:

$ pip installer tiktoken

Tiktoken-pakken er en Byte Pair Encoding-tokenizer. Det bruges med OpenAI-modellerne og opdeler tekst i tokens. Dette bruges, fordi de medfølgende strenge nogle gange er lidt lange for den specificerede OpenAI-model. Så det opdeler teksten og koder dem til tokens. Lad os nu arbejde på hovedprojektet.

fra langkæde. indlejringer . openai importere OpenAIE-indlejringer

model = OpenAIE-indlejringer ( openai_api_key = 'sk-DIN_API_KEY'

strenge = ['
Det her er til demonstration. ', ' Det her snor er også til demonstration. ', ' Det her er endnu en demo snor . ', ' Denne er sidst snor . ']

resultat = model.embed_documents(strings)

print (resultat)

print(len(resultat))

OpenAIEmbeddings-klassen importeres fra pakken 'langchain.embeddings.openai'. I det foregående eksempel satte vi API-nøglen som miljøvariabel. Men for denne sender vi den direkte til konstruktøren. Så vi behøver ikke at importere 'os'-modulet her.

Efter at have påkaldt OpenAI-modellen, som er OpenAIEmbeddings, videregiver vi den hemmelige API-nøgle til den. I næste linje er tekststrengene angivet. Her gemmer vi fire tekststrenge i objektstrengene. Disse strenge er 'Dette er til demonstration', 'Denne streng er også til demonstration', 'Dette er en anden demostreng' og 'Denne er den sidste streng.'

Du kan angive flere strenge ved blot at adskille hver med et komma. I det foregående tilfælde kaldes embed_text() metoden, men vi kan ikke bruge den her, da den kun virker for den enkelte tekststreng. For at indlejre flere strenge er den metode, vi har, embed_document(). Så vi kalder det med den specificerede OpenAI-model og tekststrenge som argument. Outputtet opbevares i resultatobjektet. Til sidst, for at vise outputtet, bruges Python print()-metoden med objektresultatet som parameter. Vi ønsker også at se længden af ​​disse flydende værdier. Vi påberåber os derfor len()-metoden i print()-metoden.

Det hentede output findes i følgende billede:

Konklusion

Dette indlæg diskuterede konceptet med indlejring i LangChain. Vi lærte, hvad indlejring er, og hvordan det fungerer. En praktisk implementering af indlejring af tekststrengene er vist her. Vi har lavet to illustrationer. Det første eksempel arbejdede på at hente indlejringen af ​​en enkelt tekststreng, og det andet eksempel forstod, hvordan man opnår indlejring af flere inputstrenge ved hjælp af OpenAI-indlejringsmodellen.