Кэширование — это процесс хранения и извлечения самых последних или часто используемых данных из модели, поэтому их не нужно постоянно пересчитывать. Встраивание текста можно использовать для преобразования текстовых данных в числа, а применение к ним методов кэширования может повысить эффективность модели. 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.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(), чтобы построить модель и сохранить ее в переменной:
Теперь примените кеш, используя метод LocalFileStore() и методы CacheBackedEmbeddings() с несколькими аргументами:
фс = локальное хранилище файлов ( './кэш/' )cached_embedder = CacheBackedEmbeddings.from_bytes_store (
базовые_эмбеддинги, фс, пространство имен =underlying_embeddings.model
)
Просто получите список вложений, и на данный момент список пуст, поскольку вложения в нем не сохраняются:
список ( fs.yield_keys ( ) )
Шаг 4. Создание хранилища векторов
Получите файл из локальной системы, используя библиотеку файлов, и нажмите « Выберите файлы » после выполнения кода:
загружено = 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() для определения переменной хранилища:
Создайте модель кэширования, используя методы 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 с использованием хранилища файловой системы:
Примените внедрения с помощью метода CacheBackedEmbeddings() с моделью внедрения, хранилищем данных и пространством имен в качестве параметров:
embedder2 = CacheBackedEmbeddings.from_bytes_store (базовые_эмбеддинги, фс, пространство имен =underlying_embeddings.model
)
Используйте переменную embeddings с хранящимися в ней кэшированными данными для вызова метода embedder():
встраивания = embedder2.embed_documents ( [ 'привет' , 'до свидания' ] )Теперь получите вложения для двух вышеупомянутых миров, упомянутых в качестве параметров:
список ( fs.yield_keys ( ) )
Вот и все, что касается процесса сборки и работы с кешированием в LangChain.
Заключение
Для работы с методами кэширования вложений в LangChain просто получите с помощью команды pip необходимые модули, такие как FAISS, OpenAI и т. д. После этого импортируйте библиотеки для сборки и работы с кэшированием в LangChain. Он эффективно получает вложения, хранящиеся в разных хранилищах. Разработчики могут использовать несколько хранилищ в качестве баз данных для хранения вложений, таких как векторные хранилища, файловые системы или хранилища в памяти. В этом руководстве продемонстрирован процесс работы с кэшированием в LangChain.