Давайте рассмотрим, как кэшировать встраивания для эффективного поиска документов. Мы будем использовать CacheBackedEmbeddings
для хранения вложений и использования их для поиска по сходству.
1. Контекст и введение
Прежде чем мы перейдем к коду, давайте поймем важность кэширования вложений.
Зачем кэшировать внедрения?
- Производительность. Вместо того, чтобы каждый раз вычислять встраивания, вы можете извлекать их из кеша, что часто происходит быстрее.
- Экономия ресурсов. Снижает вычислительные затраты и затраты за счет отсутствия перерасчета внедрений.
Учитывая этот контекст, давайте углубимся в учебник.
pip install -U langchain vector_lake sentence_transformers
2. Настройка среды
Убедитесь, что у вас установлены все необходимые модули:
from langchain.document_loaders import TextLoader from langchain.storage import InMemoryStore, LocalFileStore from langchain.embeddings import OpenAIEmbeddings, CacheBackedEmbeddings from langchain.embeddings.sentence_transformer import SentenceTransformerEmbeddings from langchain.text_splitter import CharacterTextSplitter from vector_lake.langchain import VectorLakeStore
3. Загрузка ваших документов
Для начала загрузим документ (например, файл Readme.md) с помощью TextLoader:
loader = TextLoader("../Readme.md") documents = loader.load()
4. Подготовка хранилища кэша
Здесь мы используем LocalFileStore для создания локального кеша по указанному пути:
fs = LocalFileStore("./cache/")
Этот код инициализирует хранилище файлов в каталоге ./cache/.
5. Настройка встраивания
В этом примере мы используем SentenceTransformerEmbeddings:
embedding = SentenceTransformerEmbeddings(model_name="all-MiniLM-L6-v2")
Теперь самое интересное — кеширование!