Как использовать вложения в LangChain

Kak Ispol Zovat Vlozenia V Langchain



Вложения представляют собой индекс связанности текстовых строк и выражаются вектором (списком) целых чисел с плавающей запятой. Расстояние между двумя векторами служит мерой того, насколько тесно они связаны; чем меньше расстояние, тем ближе родство. Класс LangChain Embedding предназначен для использования в качестве интерфейса для внедрения таких сервисов, как OpenAI, HuggingFace и других.

Два метода, embed_query() и embed_documents(), предоставляются базовым классом. Первый из них работает с одним документом, тогда как другой может работать со многими документами.

В этой статье представлена ​​практическая демонстрация встраивания в LangChain с использованием встраивания текста OpenAI.







Пример: получение одного входного текста с помощью встраивания текста OpenAI

Для первой иллюстрации мы вводим одну текстовую строку и получаем для нее встраивание текста OpenAI. Программа начинается с установки необходимых библиотек.



Первая библиотека, которую нам нужно установить в наш проект, это LangChain. Он не входит в стандартную библиотеку Python, поэтому мы должны установить его отдельно. Поскольку langchain доступен на PyPi, мы можем легко установить его с помощью команды pip в терминале. Таким образом, мы запускаем следующую команду для установки библиотеки LangChain:



$ pip установить ленгчейн

Библиотека устанавливается, как только требования удовлетворены.





Нам также нужно, чтобы в нашем проекте была установлена ​​библиотека OpenAI, чтобы мы могли получить доступ к моделям OpenAI. Эту библиотеку можно запустить, написав команду pip:

$ пип установить openai

Теперь обе необходимые библиотеки установлены в файл нашего проекта. Мы должны импортировать необходимые модули.



от ленгчейн. вложения . опенай Импортировать OpenAIEmbeddings

Импортировать ты

ты . примерно [ 'OPENAI_API_KEY' ] '=' 'sk-ВАШ_API_KEY'

Чтобы получить вложения OpenAI, мы должны импортировать класс OpenAIEmbeddings из пакета «langchain.embeddings.openai». Затем мы устанавливаем ключ API в качестве переменной среды. Нам нужен секретный ключ API для доступа к различным моделям OpenAI. Этот ключ можно сгенерировать на платформе OpenAI. Просто зарегистрируйтесь и получите секретный ключ в разделе «Просмотр секретного ключа» вашего профиля. Этот ключ можно использовать в разных проектах для конкретного клиента.

Переменные среды используются для хранения ключей API для конкретной среды, а не для их жесткого кодирования в функциях. Итак, чтобы установить ключ API в качестве переменной среды, мы должны импортировать модуль «os». Метод os.environ() используется для установки ключа API в качестве переменной среды. Он содержит имя и значение. Имя, которое мы установили, — «OPENAI_API_KEY», а секретный ключ — «значение».

модель '=' OpenAIEmbeddings ( )

input_text '=' «Это для демонстрации».

исход '=' модель. embed_query ( input_text )

Распечатать ( исход )

Распечатать ( только ( исход ) )

Мы уже взаимодействовали с оболочкой для встраивания OpenAI. После этого мы вызываем конструктор класса OpenAIEmbedding. OpenAI предоставляет множество моделей встраивания, но за них нужно платить. Здесь мы используем модель встраивания OpenAI по умолчанию, то есть text-embedding-ada-002, которая является бесплатной. Если вы не указываете имя модели в качестве параметра, используется модель по умолчанию.

Затем мы указываем текст, который мы должны получить встраивание. Текст указан как «Это для демонстрации». и сохраните его в переменной input_text. После этого вызывается метод embed_query() для встраивания предоставленного текста с используемой моделью и input_text с текстовой строкой для извлечения встраивания, которое предоставляется в качестве параметра. Полученные вложения назначаются объекту результата.

Наконец, чтобы показать результат, у нас есть метод Python print(). Нам просто нужно передать объект, в котором хранится значение, которое мы хотим отобразить, в метод print(). Следовательно, мы вызываем эту функцию дважды; во-первых, чтобы отобразить список чисел с плавающей запятой, а во-вторых, чтобы распечатать длину этих значений, используя с ним метод len().

Список плавающих значений можно увидеть на следующем снимке с длиной этих значений:

Пример: получение нескольких входных текстов/документов с использованием встраивания текста OpenAI

Помимо получения встраивания для одного входного текста, мы также можем получить его для нескольких входных строк. Мы реализуем это в этой иллюстрации.

Мы уже установили библиотеки на предыдущей иллюстрации. Еще одна библиотека, которую нам нужно установить, — это библиотека Python tiktoken. Напишите в терминале команду для его установки:

$ пип установить тиктокен

Пакет tiktoken представляет собой токенизатор Byte Pair Encoding. Он используется с моделями OpenAI и разбивает текст на токены. Это используется, потому что предоставленные строки иногда немного длиннее для указанной модели OpenAI. Итак, он разбивает текст и кодирует его в токены. Теперь займемся основным проектом.

от ленгчейн. вложения . опенай Импортировать OpenAIEmbeddings

модель '=' OpenAIEmbeddings ( openai_api_key '=' 'sk-ВАШ_API_KEY'

строки = ['
Этот является для демонстрация. ', ' Этот нить является также для демонстрация. ', ' Этот является другое демо нить . ', ' Вот этот является последний нить . ']

результат = model.embed_documents (строки)

печать (результат)

печать (длина (результат))

Класс OpenAIEmbeddings импортируется из пакета «langchain.embeddings.openai». В предыдущем примере мы установили ключ API в качестве переменной среды. Но для этого мы передаем его непосредственно конструктору. Таким образом, нам не нужно импортировать здесь модуль «os».

После вызова модели OpenAI, которая является OpenAIEmbeddings, мы передаем ей секретный ключ API. В следующей строке указываются текстовые строки. Здесь мы храним четыре текстовые строки в строках объекта. Это строки «Это для демонстрации», «Эта строка также для демонстрации», «Это еще одна демонстрационная строка» и «Это последняя строка».

Вы можете указать несколько строк, просто разделив их запятой. В предыдущем примере вызывается метод embed_text(), но мы не можем использовать его здесь, так как он работает только для одной текстовой строки. Для встраивания нескольких строк у нас есть метод embed_document(). Итак, мы вызываем его с указанной моделью OpenAI и текстовыми строками в качестве аргумента. Вывод сохраняется в объекте результата. Наконец, для отображения вывода используется метод Python print() с результатом объекта в качестве параметра. Кроме того, мы хотим видеть длину этих плавающих значений. Таким образом, мы вызываем метод len() внутри метода print().

Полученный результат представлен на следующем изображении:

Заключение

В этом посте обсуждалась концепция встраивания в LangChain. Мы узнали, что такое встраивание и как оно работает. Здесь показана практическая реализация встраивания текстовых строк. Мы выполнили две иллюстрации. Первый пример работал над извлечением встраивания одной текстовой строки, а во втором примере было показано, как получить встраивание нескольких входных строк с использованием модели встраивания OpenAI.