Com utilitzar les incrustacions a LangChain

Com Utilitzar Les Incrustacions A Langchain



Les incrustacions són un índex de relació de cadenes de text i s'expressen mitjançant un vector (llista) de nombres enters de coma flotant. La distància entre dos vectors serveix com a mesura de com estan connectats; com més petita és la distància, més propera és la relació. La classe LangChain Embedding està pensada per servir com a interfície per incrustar serveis com ara OpenAI, HuggingFace i altres.

La classe base proporciona dos mètodes, embed_query() i embed_documents(). El primer d'ells funciona amb un sol document, mentre que l'altre pot operar amb molts documents.

Aquest article entén la demostració pràctica de la incrustació a LangChain mitjançant les incrustacions de text OpenAI.







Exemple: obtenció d'un text d'entrada única mitjançant l'inserció de text OpenAI

Per a la primera il·lustració, introduïm una única cadena de text i recuperem la incrustació de text d'OpenAI. El programa comença instal·lant les biblioteques necessàries.



La primera biblioteca que hem d'instal·lar al nostre projecte és LangChain. No ve amb la biblioteca estàndard de Python, així que l'hem d'instal·lar per separat. Com que langchain està disponible a PyPi, el podem instal·lar fàcilment mitjançant l'ordre pip del terminal. Per tant, executem la següent comanda per instal·lar la biblioteca LangChain:



$ pip install langchain

La biblioteca s'instal·la tan bon punt es compleixen els requisits.





També necessitem que la biblioteca OpenAI estigui instal·lada al nostre projecte per poder accedir als models OpenAI. Aquesta biblioteca es pot inaugurar escrivint l'ordre pip:

$ pip install openai

Ara, les dues biblioteques necessàries estan instal·lades al nostre fitxer de projecte. Hem d'importar els mòduls necessaris.



des de langchain. incrustacions . oberta importar OpenAIEmbeddings

importar vostè

vostè . aproximadament [ 'OPENAI_API_KEY' ] = 'sk-YOUR_API_KEY'

Per obtenir les incrustacions OpenAI, hem d'importar la classe OpenAIEmbeddings del paquet 'langchain.embeddings.openai'. A continuació, establim la clau de l'API com a variable d'entorn. Necessitem la clau secreta de l'API per accedir als diferents models d'OpenAI. Aquesta clau es pot generar des de la plataforma OpenAI. Simplement registreu-vos i obteniu una clau secreta a la secció 'Mostra la clau secreta' del vostre perfil. Aquesta clau es pot utilitzar en diferents projectes per a un client específic.

Les variables d'entorn s'utilitzen per emmagatzemar les claus de l'API d'un entorn concret en lloc de codificar-les a les funcions. Per tant, per establir la clau API com a variable d'entorn, hem d'importar el mòdul 'os'. El mètode os.environ() s'utilitza per establir la clau de l'API com a variable d'entorn. Conté un nom i un valor. El nom que establim és 'OPENAI_API_KEY' i la clau secreta s'estableix en 'valor'.

model = OpenAIEmbeddings ( )

entrada_text = 'Això és per a la demostració'.

resultat = model. incrusta_consulta ( entrada_text )

imprimir ( resultat )

imprimir ( només ( resultat ) )

Ja vam connectar amb l'embolcall d'incrustació d'OpenAI. A continuació, anomenem el constructor de la classe OpenAIEmbedding. OpenAI ofereix una varietat de models d'incrustació, però cal pagar-los. Aquí, anem amb el model d'inserció predeterminat d'OpenAI, és a dir, text-embedding-ada-002, que és gratuït. Quan no proporcioneu cap nom de model com a paràmetre, s'utilitza el model predeterminat.

A continuació, especifiquem el text que hem d'obtenir la incrustació. El text s'especifica com 'Això és per a la demostració'. i deseu-lo a la variable input_text. Després d'això, el mètode embed_query() per incrustar el text proporcionat s'anomena amb el model que s'utilitza i l'entrada_text que té la cadena de text per recuperar la incrustació que es proporciona com a paràmetre. Les incrustacions recuperades s'assignen a l'objecte de resultat.

Finalment, per mostrar el resultat, tenim el mètode print() de Python. Simplement hem de passar l'objecte que emmagatzema el valor que volem mostrar al mètode print(). Per tant, invoquem aquesta funció dues vegades; primer per mostrar la llista de nombres flotants i segon per imprimir la longitud d'aquests valors amb el mètode len().

La llista de valors flotants es pot veure a la següent instantània amb la longitud d'aquests valors:

Exemple: obtenció de text/document d'entrada múltiple mitjançant l'inserció de text OpenAI

A part d'obtenir incrustació per a un sol text d'entrada, també podem recuperar-lo per a diverses cadenes d'entrada. Ho implementem en aquesta il·lustració.

Ja hem instal·lat les biblioteques de la il·lustració anterior. Una altra biblioteca que hem d'instal·lar aquí és la biblioteca tiktoken de Python. Escriviu l'ordre al terminal per instal·lar-lo:

$ pip install tiktoken

El paquet tiktoken és un tokenitzador de codificació de parells de bytes. S'utilitza amb els models OpenAI i descompone el text en fitxes. Això s'utilitza perquè les cadenes proporcionades de vegades són una mica llargues per al model d'OpenAI especificat. Per tant, divideix el text i els codifica en fitxes. Ara, anem a treballar en el projecte principal.

des de langchain. incrustacions . oberta importar OpenAIEmbeddings

model = OpenAIEmbeddings ( openai_api_key = 'sk-YOUR_API_KEY'

cadenes = ['
Això és per demostració. ', ' Això corda és també per demostració. ', ' Això és una altra demostració corda . ', ' Aquest és darrer corda . ']

resultat = model.embed_documents(cadenes)

imprimir (resultat)

imprimir (len (resultat))

La classe OpenAIEmbeddings s'importa del paquet 'langchain.embeddings.openai'. A l'exemple anterior, vam establir la clau de l'API com a variable d'entorn. Però per a aquest, el passem directament al constructor. Per tant, no hem d'importar el mòdul 'os' aquí.

Després d'invocar el model OpenAI que és OpenAIEmbeddings, li passem la clau secreta de l'API. A la línia següent, s'especifiquen les cadenes de text. Aquí, emmagatzemem quatre cadenes de text a les cadenes d'objectes. Aquestes cadenes són 'Això és per a la demostració', 'Aquesta cadena també és per a la demostració', 'Aquesta és una altra cadena de demostració' i 'Aquesta és l'última cadena'.

Podeu especificar diverses cadenes simplement separant-les amb una coma. En la instància anterior, es crida al mètode embed_text() però no el podem utilitzar aquí ja que només funciona per a la cadena de text única. Per incrustar diverses cadenes, el mètode que tenim és embed_document(). Per tant, l'anomenem amb el model d'OpenAI especificat i les cadenes de text com a argument. La sortida es manté a l'objecte resultat. Finalment, per mostrar la sortida, s'utilitza el mètode Python print() amb el resultat de l'objecte com a paràmetre. A més, volem veure la longitud d'aquests valors flotants. Per tant, invoquem el mètode len() dins del mètode print().

La sortida recuperada es proporciona a la imatge següent:

Conclusió

En aquesta publicació es va parlar del concepte d'inserció a LangChain. Hem après què és l'inserció i com funciona. Aquí es mostra una implementació pràctica d'incrustar les cadenes de text. Hem realitzat dues il·lustracions. El primer exemple va treballar per recuperar la incrustació d'una cadena de text única i el segon exemple va comprendre com obtenir la incrustació de múltiples cadenes d'entrada mitjançant el model d'inserció d'OpenAI.