Давайте рассмотрим, как кэшировать встраивания для эффективного поиска документов. Мы будем использовать 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")

Теперь самое интересное — кеширование!

6. Использование CacheBackedEmbeddings