Как работать с кешированием в LangChain?

Kak Rabotat S Kesirovaniem V Langchain



Кэширование — это процесс хранения и извлечения самых последних или часто используемых данных из модели, поэтому их не нужно постоянно пересчитывать. Встраивание текста можно использовать для преобразования текстовых данных в числа, а применение к ним методов кэширования может повысить эффективность модели. LangChain позволяет разработчикам создавать модель кэширования с использованием библиотеки CacheBackedEmbeddings.

В этом посте будет продемонстрирован процесс работы с кешированием в LangChain.







Как работать с кешированием в LangChain?

Кэширование в LangChain в моделях внедрения текста можно использовать с помощью различных наборов данных, например, с использованием векторного хранилища, данных в памяти или данных из файловых систем. Применение методов кэширования позволяет быстро получить выходные данные, а модель может более эффективно применять поиск по сходству к данным.



Чтобы изучить процесс работы с кэшированием в LangChain, просто пройдите перечисленные шаги:



Шаг 1. Установите модули
Для начала запустите процесс работы с кэшированием с установки необходимых моделей. Первая из них — LangChain, которая содержит все необходимые для процесса библиотеки:





пункт установить Лангчейн

Модуль FAISS необходим для выполнения поиска по сходству для извлечения или генерации выходных данных на основе входных данных, предоставленных пользователем:



пункт установить Faiss-GPU

Последний модуль этого руководства, который необходимо установить, — это OpenAI, который можно использовать для создания вложений данных с помощью метода OpenAIEmbeddings():

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

После установки всех модулей просто настройте среду, используя ключ API из среды OpenAI, используя команду « ты ' и ' получить пропуск » библиотеки:

импортируйте нас
импортировать getpass

os.environ [ 'ОПЕНАЙ_API_KEY' ] = getpass.getpass ( «Ключ API OpenAI:» )

Шаг 2. Импорт библиотек
После завершения настройки просто импортируйте библиотеки для работы с методами кэширования в LangChain:

из langchain.storage импортировать InMemoryStore
из langchain.embeddings импортировать CacheBackedEmbeddings
из langchain.storage импортировать LocalFileStore
из langchain.embeddings импортировать OpenAIEmbeddings
из langchain.document_loaders импортировать TextLoader
из langchain.embeddings.openai импортировать OpenAIEmbeddings
из langchain.text_splitter импортировать CharacterTextSplitter
из langchain.vectorstores импорт FAISS

Шаг 3. Построение модели кэширования
После импорта библиотек просто вызовите метод OpenAIEmbeddings(), чтобы построить модель и сохранить ее в переменной:

базовый_embeddings = OpenAIEmbeddings ( )

Теперь примените кеш, используя метод LocalFileStore() и методы CacheBackedEmbeddings() с несколькими аргументами:

фс = локальное хранилище файлов ( './кэш/' )

cached_embedder = CacheBackedEmbeddings.from_bytes_store (
базовые_эмбеддинги, фс, пространство имен =underlying_embeddings.model
)

Просто получите список вложений, и на данный момент список пуст, поскольку вложения в нем не сохраняются:

список ( fs.yield_keys ( ) )

Шаг 4. Создание хранилища векторов
Получите файл из локальной системы, используя библиотеку файлов, и нажмите « Выберите файлы » после выполнения кода:

из файлов импорта google.colab
загружено = files.upload ( )

Теперь просто создайте векторное хранилище, которое можно будет использовать для хранения вложений, используя метод TextLoader() с именем документа. После этого примените методы разделения текста с размером кусков и разбейте данные на более мелкие куски:

raw_documents = TextLoader ( 'state_of_the_union.txt' ) .нагрузка ( )
text_splitter = Разделитель текста символов ( размер_куска '=' 1000 , chunk_overlap '=' 0 )
документы = text_splitter.split_documents ( raw_documents )

После разделения текста сохраните данные в БД переменную, используя библиотеку FAISS, чтобы получить результат, используя метод поиска по сходству:

db = FAISS.from_documents ( документы, кэшированный_embedder )

Теперь снова получите список вложений после сохранения их в базе данных и ограничьте вывод только 5 индексами:

список ( fs.yield_keys ( ) ) [ : 5 ]

Шаг 5. Использование кэширования в памяти
Следующее кэширование можно использовать с помощью методов InMemoryStore() для определения переменной хранилища:

магазин = InMemoryStore ( )

Создайте модель кэширования, используя методы OpenAIEmbeddings() и CacheBackedEmbeddings(), указав в качестве параметров модель, хранилище и пространство имен:

базовый_embeddings = OpenAIEmbeddings ( )
embedder = CacheBackedEmbeddings.from_bytes_store (
базовые_вложения, магазин, пространство имен =underlying_embeddings.model
)

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

встраивания = embedder.embed_documents ( [ 'привет' , 'до свидания' ] )

Теперь примените кеш к встраиваниям, чтобы быстро получать данные из документов:

embeddings_from_cache = embedder.embed_documents ( [ 'привет' , 'до свидания' ] )

Сохраните внедрения кэша в переменную embeddings, чтобы в переменной embeddings хранились кэшированные внедрения:

встраивания == встраивания_из_кэша

Шаг 6. Использование кэширования файловой системы
Последний метод применения кеширования во вложениях из документа test_cache с использованием хранилища файловой системы:

фс = локальное хранилище файлов ( './test_cache/' )

Примените внедрения с помощью метода CacheBackedEmbeddings() с моделью внедрения, хранилищем данных и пространством имен в качестве параметров:

embedder2 = CacheBackedEmbeddings.from_bytes_store (
базовые_эмбеддинги, фс, пространство имен =underlying_embeddings.model
)

Используйте переменную embeddings с хранящимися в ней кэшированными данными для вызова метода embedder():

встраивания = embedder2.embed_documents ( [ 'привет' , 'до свидания' ] )

Теперь получите вложения для двух вышеупомянутых миров, упомянутых в качестве параметров:

список ( fs.yield_keys ( ) )

Вот и все, что касается процесса сборки и работы с кешированием в LangChain.

Заключение

Для работы с методами кэширования вложений в LangChain просто получите с помощью команды pip необходимые модули, такие как FAISS, OpenAI и т. д. После этого импортируйте библиотеки для сборки и работы с кэшированием в LangChain. Он эффективно получает вложения, хранящиеся в разных хранилищах. Разработчики могут использовать несколько хранилищ в качестве баз данных для хранения вложений, таких как векторные хранилища, файловые системы или хранилища в памяти. В этом руководстве продемонстрирован процесс работы с кэшированием в LangChain.