LangChain でキャッシュを使用するにはどうすればよいですか?

Langchain Dekyasshuwo Shi Yongsurunihadousurebayoidesuka



キャッシュは、モデルから最新のデータまたは頻繁に使用されるデータを保存および取得するプロセスであり、常に再計算する必要はありません。テキスト埋め込みを使用してテキスト データを数値に変換し、それにキャッシュ技術を適用するとモデルの効率を向上させることができます。 LangChain を使用すると、開発者は CacheBackedEmbeddings ライブラリを使用してキャッシュ モデルを構築できます。

この投稿では、LangChain でキャッシュを使用するプロセスを説明します。







LangChain でキャッシュを使用するにはどうすればよいですか?

テキスト埋め込みモデルでの LangChain のキャッシュは、ベクター ストア、メモリ内データ、ファイル システムからのデータなど、さまざまなデータセットを通じて使用できます。キャッシュ メソッドを適用すると、出力を迅速に取得でき、モデルはデータに対して類似性検索をより効果的に適用できます。



LangChain でキャッシュを操作するプロセスを学ぶには、リストされている手順を実行するだけです。



ステップ 1: モジュールをインストールする
まず、必要なモデルをインストールして、キャッシュを使用するプロセスを開始します。ここでの最初のモデルは、プロセスに必要なすべてのライブラリを含む LangChain です。





ピップ インストール ラングチェーン

FAISS モジュールは、ユーザーが提供した入力に基づいて出力を抽出または生成するための類似性検索を実行する必要があります。



ピップ インストール フェイスGPU

このガイドでインストールが必要な最後のモジュールは、OpenAIEmbeddings() メソッドを使用してデータの埋め込みを作成するために使用できる OpenAI です。

ピップ インストール オープンナイ

すべてのモジュールをインストールしたら、「」を使用して OpenAI 環境の API キーを使用して環境をセットアップするだけです。 あなた ' そして ' ゲットパス ” ライブラリ:

私たちを輸入してください
getpass をインポートする

OS.環境 [ 「OPENAI_API_KEY」 = getpass.getpass ( 「OpenAI API キー:」 )

ステップ 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() メソッドを使用してキャッシュを適用します。

fs = ローカルファイルストア ( '。/キャッシュ/' )

cached_embedder = CacheBackedEmbeddings.from_bytes_store (
基礎となる埋め込み、fs、 名前空間 =underlying_embeddings.model
)

単純に埋め込みのリストを取得します。今のところ、埋め込みはリストに保存されていないため、リストは空です。

リスト ( fs.yield_keys ( ) )

ステップ 4: ベクター ストアの作成
ファイル ライブラリを使用してローカル システムからファイルを取得し、「 ファイルの選択 コードを実行した後:

google.colabインポートファイルから
アップロードされた = ファイル.アップロード ( )

ここで、ドキュメントの名前を指定した TextLoader() メソッドを使用して、埋め込みの保存に使用できるベクター ストアを作成するだけです。その後、チャンクのサイズに応じてテキスト分割メソッドを適用し、データをより小さなチャンクに分割します。

raw_documents = テキストローダー ( 「組合の状態.txt」 ) 。負荷 ( )
text_splitter = 文字テキストスプリッター ( チャンクサイズ = 1000 チャンク_オーバーラップ = 0 )
ドキュメント = text_splitter.split_documents ( raw_documents )

テキストを分割した後、データを データベース FAISS ライブラリを使用して変数を使用し、類似性検索方法を使用して出力を取得します。

db = FAISS.from_documents ( ドキュメント、cached_embedder )

ここで、データベースにエンベディングを保存した後に再度エンベディングのリストを取得し、出力を 5 つのインデックスのみに制限します。

リスト ( fs.yield_keys ( ) ) [ : 5

ステップ 5: インメモリ キャッシュの使用
次のキャッシュは、InMemoryStore() メソッドを通じてストア変数を定義するために使用できます。

ストア = InMemoryStore ( )

OpenAIEmbeddings() メソッドと CacheBackedEmbeddings() メソッドを使用し、モデル、ストア、名前空間をパラメータとしてキャッシュ モデルを構築します。

基礎となる_embeddings = OpenAIEmbeddings ( )
embedder = CacheBackedEmbeddings.from_bytes_store (
基礎となる埋め込み、ストア、 名前空間 =underlying_embeddings.model
)

ドキュメントからデータを取得するためにキャッシュ埋め込みを使用せずに、保存されたドキュメントに埋め込みを適用します。

embeddings = embedder.embed_documents ( [ 'こんにちは' 'さようなら' )

ここで、埋め込みにキャッシュを適用して、ドキュメントからデータをすばやくフェッチします。

embeddings_from_cache = embedder.embed_documents ( [ 'こんにちは' 'さようなら' )

キャッシュされた埋め込みを embeddings 変数に保存して、embeddings 変数にキャッシュされた埋め込みが保存されるようにします。

embeddings == embeddings_from_cache

ステップ 6: ファイル システム キャッシュの使用
ファイル システム ストアを使用して、test_cache ドキュメントから埋め込みにキャッシュを適用する最後の方法:

fs = ローカルファイルストア ( 「./test_cache/」 )

埋め込みモデル、データ ストア、名前空間をパラメータとして CacheBackedEmbeddings() メソッドを使用して埋め込みを適用します。

embedder2 = CacheBackedEmbeddings.from_bytes_store (
基礎となる埋め込み、fs、 名前空間 =underlying_embeddings.model
)

キャッシュされたデータが格納された embeddings 変数を使用して、embedder() メソッドを呼び出します。

embeddings = embedder2.embed_documents ( [ 'こんにちは' 'さようなら' )

ここで、パラメータとして言及されている上記の 2 つの世界の埋め込みを取得します。

リスト ( fs.yield_keys ( ) )

LangChain でキャッシュを構築して操作するプロセスは以上です。

結論

LangChain の埋め込み用のキャッシュ技術を使用するには、FAISS、OpenAI などの pip コマンドを使用して必要なモジュールを取得するだけです。その後、LangChain でキャッシュを構築して操作するためのライブラリをインポートします。さまざまなストアに保存されているエンベディングを効率的に取得します。開発者は、ベクトル ストア、ファイル システム、インメモリ ストアなどの埋め込みを保存するデータベースとして複数のストアを使用できます。このガイドでは、LangChain でキャッシュを使用するプロセスを説明しました。