これはPGroonga 2.0.0以降用のドキュメントです。PGroonga 1.Xを使っているならPGroonga 1.Xのドキュメントを見てください。
pgroonga_language_model_vectorize 関数4.0.5で追加
まだ実験的な機能です。
pgroonga_language_model_vectorize関数は指定されたテキストの正規化されたエンべディングを返します。
この関数の構文は次の通りです。
float4[] pgroonga_language_model_vectorize(model_name, target)
model_nameは使用する言語モデルの名前です。型はtextです。
model_nameにはHugging FaceのURIが指定できます。Hugging FaceのURIを指定するとモデルのダウンロードと配置を自動で行うのでおすすめです。モデルはPostgreSQLのデータベースのデータディレクトリに保存されます。
初回実行時にはモデルをダウンロードします。そのため時間がかかります。2回目以降は、ダウンロード済のローカルモデルファイルを使うため、ダウンロードの時間はかかりません。
targetは入力テキストです。型はtextです。
pgroonga_language_model_vectorizeは正規化されたエンべディング(float4の配列)を返します。
Hugging FaceのURI(hf:///groonga/all-MiniLM-L6-v2-Q4_K_M-GGUF)を指定して、エンベディングを生成する例です。
CREATE TABLE memos (
content text
);
INSERT INTO memos VALUES ('I am a king.');
INSERT INTO memos VALUES ('I am a queen.');
SELECT (pgroonga_language_model_vectorize(
'hf:///groonga/all-MiniLM-L6-v2-Q4_K_M-GGUF',
content))[1:3]
FROM memos;
-- pgroonga_language_model_vectorize
-- ----------------------------------------
-- {-0.027845971,0.04939433,-0.006889274}
-- {0.088152654,-0.027521685,0.051739622}
-- (2 rows)
エンベディングのすべてを表示するとかなり長いので [1:3] で先頭の3つのみ表示していています。