前回の「Semantic Kernel: Embeddingでカスタマーサービス(RAG)」では、Redisをベクトルデータベースとして使いました。今回は、PostgreSQLを使用して実装する方法を見てみましょう。
まず、Nugetパッケージを導入する必要があります:
Microsoft.SemanticKernel.Connectors.Postgres
PostgreSQLを標準インストールした場合、ベクトル化をサポートしていないため、拡張機能をインストールする必要があります。以下はgithub上のPostgreSQLのベクトル拡張機能のリンクで、この拡張機能は自身でソースコードを編集してインストールする必要があります。公式の手順は図一に示されています。ですが、この手順は少し不明瞭なので、簡単にまとめた手順を共有します。
githubアドレス:https://github.com/pgvector/pgvector
pgvectorのコンパイル
-
Visual Studioをインストールし、C++開発キットをインストールします。以下のbatファイルを実行して、コンパイル環境を確認できます:
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat
-
次に、nmakeとPGROOTの2つの環境変数を設定します:
-
nmake.exeのパスをPathリストに追加します:
C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.42.34226\bin\Hostx86\x64
-
PostgreSQLのライブラリパスを設定します:
PGROOT=C:\Program Files\PostgreSQL\16
-
-
pgvectorのソースコードをダウンロードします。gitを使ってクローンするか、直接ダウンロードして任意のパスに配置します。
-
最後に、
x64 Native Tools Command Prompt for VS 2022 Preview
を使用してコンパイルとインストールを行います。- Visual Studioのインストールディレクトリ内にある「x64 Native Tools Command Prompt for VS 2022 Preview」を開きます。このショートカットのプロパティからも詳細を確認できます。
ターゲットは以下のように設定されています:
%comspec% /k "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
ここで指定されている
vcvars64.bat
スクリプトファイルが、Visual C++開発用の環境変数を設定するためのバッチファイルです。これにより、コンパイルに必要なパス、ライブラリ、ツールチェーンが設定されます。 -
x64 Native Tools Command Prompt for VS 2022 Preview
を開いて、pgvectorが保存されているディレクトリに移動し、以下のコマンドでコンパイルします:nmake /F Makefile.win
pgvectorのインストール
以下のコマンドを使用してpgvectorをインストールします:
nmake /F Makefile.win install
インストールが完了すると、以下の3つの場所に対応するファイルが配置されます:
-
A、動的ライブラリ
vector.dll
:C:\Program Files\PostgreSQL\16\lib
-
B、35個のベクトル拡張ファイル:
C:\Program Files\PostgreSQL\16\share\extension
-
C、3つのタイプ定義ファイル:
C:\Program Files\PostgreSQL\16\include\server\extension\vector
PostgreSQLでvector拡張をインストール
最後のステップとして、PostgreSQLを開いてvector拡張をインストールします:
CREATE EXTENSION vector;
拡張がインストールされると、以下の図八の赤い部分のように結果を確認できます。
もし直接vector拡張をインストールしたい場合、以下のアドレスから対応するファイルをダウンロードし、対応するパスに配置してインストールできます:
データ保存後の結果
(Translated by GPT)