LangChainでPDFをベクトル化してローカルに保存してみた

はじめに

LangChainを使用して、PDF文書をベクトル化し、ローカルのベクトルストアに保存してみました。この方法により、一度ローカルに保存した後はベクトル化を再度行う必要がなくなり、回答時間を短縮することができます。LangChainを使った文書検索を開発している方におすすめです。

開発環境

  • Windows 11
  • Python 3.9.15
  • dotenv
  • LangChain
  • Azure OpenAI Embeddings
  • CharacterTextSplitter
  • FAISS
  • PyPDFLoader

実装

必要なパッケージのインストール

以下のコマンドで必要なパッケージをインストールします。

環境変数の設定と依存関係の読み込み

.envファイルを作成し、Azure Open AIの環境変数の設定をします。
ご自身の環境に合わせて設定してください。

.env

必要なライブラリをインポートします。

test.py

ベクトル化の準備

ベクトル化に使用するAzure OpenAI Embeddingsを定義します。

test.py

FAISSベクトルストアの初期化

FAISSを使用して、文書を高速に検索可能な形式に変換します。

test.py

ファイルの読み込みと処理

指定されたディレクトリ内のPDFファイルを読み込み、処理します。
dirnameはご自身のディレクトリ名に合わせてください。

test.py

テキストのベクトル化とストアへの保存

読み込んだPDF文書からテキストを抽出し、ベクトル化してストアに保存します。

test.py

これまでのPythonコードを上から順に記述し終わったら、Pythonファイルを実行します。
実行が完了すると、以下のようにvectorstoreディレクトリが作成されます。

image.png

おわりに

LangChainを使用して、PDF文書をベクトル化し、ローカルのベクトルストアに保存してみました。文書検索システム開発の際に便利です。ぜひ、試してみてください。

最後までお読みいただき、ありがとうございました! 記事に関する質問等ございましたら、コメントもしくは以下のDMにてよろしくお願いします。

https://twitter.com/t___tatsuki

参考文献

https://python.langchain.com/docs/integrations/vectorstores/faiss

この記事を書いた人

azure-recipe-user