Cómo usar incrustaciones en LangChain

Como Usar Incrustaciones En Langchain



Las incrustaciones son un índice de relación de cadenas de texto y se expresan mediante un vector (lista) de enteros de coma flotante. La distancia entre dos vectores sirve como medida de cuán estrechamente conectados están; cuanto menor es la distancia, más estrecha es la relación. La clase LangChain Embedding está diseñada para servir como una interfaz para incorporar servicios como OpenAI, HuggingFace y otros.

La clase base proporciona dos métodos, embed_query() y embed_documents(). El primero de estos opera en un solo documento, mientras que el otro puede operar en muchos documentos.

Este artículo comprende la demostración práctica de la incrustación en LangChain utilizando las incrustaciones de texto de OpenAI.







Ejemplo: Obtención de un texto de entrada única mediante la incrustación de texto de OpenAI

Para la primera ilustración, ingresamos una sola cadena de texto y recuperamos la incrustación de texto de OpenAI. El programa comienza instalando las bibliotecas necesarias.



La primera biblioteca que necesitamos instalar en nuestro proyecto es LangChain. No viene con la biblioteca estándar de Python, por lo que debemos instalarlo por separado. Dado que langchain está disponible en PyPi, podemos instalarlo fácilmente usando el comando pip en la terminal. Así, ejecutamos el siguiente comando para instalar la biblioteca LangChain:



$ pip instalar langchain

La biblioteca se instala tan pronto como se cumplen los requisitos.





También necesitamos que la biblioteca OpenAI esté instalada en nuestro proyecto para que podamos acceder a los modelos OpenAI. Esta biblioteca se puede inaugurar escribiendo el comando pip:

$ pip instalar openai

Ahora, ambas bibliotecas requeridas están instaladas en nuestro archivo de proyecto. Tenemos que importar los módulos requeridos.



de cadena larga incrustaciones . abierto importar OpenAIIncrustaciones

importar

. alrededor de [ 'OPENAI_API_KEY' ] = 'sk-YOUR_API_KEY'

Para obtener las incrustaciones de OpenAI, debemos importar la clase OpenAIEmbeddings del paquete 'langchain.embeddings.openai'. Luego, configuramos la clave API como la variable de entorno. Necesitamos la clave API secreta para acceder a los diferentes modelos de OpenAI. Esta clave se puede generar desde la plataforma OpenAI. Simplemente regístrese y obtenga una clave secreta de la sección 'ver clave secreta' de su perfil. Esta clave se puede utilizar en diferentes proyectos para un cliente específico.

Las variables de entorno se utilizan para almacenar las claves API para un entorno particular en lugar de codificarlas en las funciones. Entonces, para configurar la clave API como la variable de entorno, debemos importar el módulo 'os'. El método os.environ() se utiliza para establecer la clave API como variable de entorno. Contiene un nombre y un valor. El nombre que establecemos es 'OPENAI_API_KEY' y la clave secreta se establece en 'valor'.

modelo = OpenAIIncrustaciones ( )

texto de entrada = 'Esto es para una demostración'.

resultado = modelo. incrustar_consulta ( texto de entrada )

imprimir ( resultado )

imprimir ( solo ( resultado ) )

Ya interactuamos con el contenedor de incrustación de OpenAI. A partir de entonces, llamamos al constructor de la clase OpenAIEmbedding. OpenAI proporciona una variedad de modelos de integración, pero debe pagar por ellos. Aquí, vamos con el modelo de incrustación predeterminado de OpenAI, es decir, text-embedding-ada-002, que es gratuito. Cuando no proporciona ningún nombre de modelo como parámetro, se utiliza el modelo predeterminado.

Luego, especificamos el texto que tenemos que obtener para la incrustación. El texto se especifica como 'Esto es para demostración'. y guárdelo en la variable input_text. Después de eso, se llama al método embed_query() para incrustar el texto provisto con el modelo que se usa y el input_text que tiene la cadena de texto para recuperar la incrustación que se proporciona como parámetro. Las incrustaciones recuperadas se asignan al objeto de resultado.

Por último, para poner el resultado a la vista, tenemos el método print() de Python. Simplemente tenemos que pasar el objeto que almacena el valor que queremos mostrar al método print(). Por lo tanto, invocamos esta función dos veces; primero para mostrar la lista de números flotantes y segundo para imprimir la longitud de estos valores usando el método len() con él.

La lista de valores flotantes se puede ver en la siguiente instantánea con la longitud de estos valores:

Ejemplo: Obtención de texto/documento de entrada múltiple mediante la incrustación de texto de OpenAI

Además de obtener incrustaciones para un solo texto de entrada, también podemos recuperarlo para varias cadenas de entrada. Implementamos esto en esta ilustración.

Ya instalamos las bibliotecas en la ilustración anterior. Otra biblioteca que necesitamos instalar aquí es la biblioteca tiktoken de Python. Escriba el comando en la terminal para instalarlo:

$ pip instalar tiktoken

El paquete tiktoken es un tokenizador de codificación de pares de bytes. Se usa con los modelos OpenAI y descompone el texto en tokens. Esto se usa porque las cadenas proporcionadas a veces son un poco largas para el modelo de OpenAI especificado. Entonces, divide el texto y los codifica en tokens. Ahora, trabajemos en el proyecto principal.

de cadena larga incrustaciones . abierto importar OpenAIIncrustaciones

modelo = OpenAIIncrustaciones ( abrirai_api_key = 'sk-YOUR_API_KEY'

cadenas = ['
Este es para demostración. ', ' Este cadena es también para demostración. ', ' Este es otra demostración cadena . ', ' Éste es último cadena . ']

resultado = modelo.embed_documents(cadenas)

imprimir (resultado)

imprimir (largo (resultado))

La clase OpenAIEmbeddings se importa del paquete 'langchain.embeddings.openai'. En el ejemplo anterior, configuramos la clave API como la variable de entorno. Pero para este, lo pasamos directamente al constructor. Entonces, no tenemos que importar el módulo 'os' aquí.

Después de invocar el modelo OpenAI, que es OpenAIEmbeddings, le pasamos la clave API secreta. En la siguiente línea, se especifican las cadenas de texto. Aquí, almacenamos cuatro cadenas de texto en las cadenas de objetos. Estas cadenas son 'Esto es para demostración', 'Esta cadena también es para demostración', 'Esta es otra cadena de demostración' y 'Esta es la última cadena'.

Puede especificar varias cadenas simplemente separándolas con una coma. En la instancia anterior, se llama al método embed_text() pero no podemos usarlo aquí ya que solo funciona para la cadena de texto única. Para incrustar varias cadenas, el método que tenemos es embed_document(). Entonces, lo llamamos con el modelo OpenAI especificado y las cadenas de texto como argumento. La salida se mantiene en el objeto de resultado. Finalmente, para mostrar la salida, se utiliza el método print() de Python con el resultado del objeto como su parámetro. Además, queremos ver la longitud de estos valores flotantes. Por lo tanto, invocamos el método len() dentro del método print().

La salida recuperada se proporciona en la siguiente imagen:

Conclusión

Esta publicación discutió el concepto de incrustación en LangChain. Aprendimos qué es la incrustación y cómo funciona. Aquí se muestra una implementación práctica de incrustar las cadenas de texto. Realizamos dos ilustraciones. El primer ejemplo trabajó en la recuperación de la incrustación de una sola cadena de texto y el segundo ejemplo comprendió cómo obtener la incrustación de varias cadenas de entrada mediante el modelo de incrustación de OpenAI.