FileMaker 2024では、大規模言語モデル(LLM)と連携することにより、文章などが入ったフィールドを対象に、意味が近いレコードを検索できるようになります。
ここで、今回新しく登場する概念を紹介します。
・セマンティック検索
セマンティック(semantic)は「意味論の」という意味で、セマンティック検索は、文章などの意味による検索を指します。従来の「キーワード検索」の対義語として位置づけられます。
・埋め込み
埋め込み (embedding)は、大規模言語モデル(LLM)によって定義された意味空間の中での、ある文章の位置を、数値の配列として表現したデータです。ベクトルデータ、ベクターデータなども同じものを指しています。「意味の索引」と考えると理解しやすいかも知れません。
今までのFileMakerの検索は、基本的にすべて文字列や数字の一致によってのみ行われていました。データベースで似たレコードを探すためには、人間が取り決めたキーワード(群)をあらかじめキーワードフィールドに入力していましたが、セマンティック検索はそれを置き換える技術となります。
埋め込みデータの取得
埋め込みの情報はLLMに問い合わせることで取得でき、多くの場合、検索対象となるレコードにあらかじめ保存しておきます。
そのために、スクリプトステップ
[埋め込みを挿入]
[対象レコードに埋め込みを挿入]
や、関数
GetEmbedding()
が導入されました。
これらを使って、フィールドに入っている文章などをOpenAIなどのAPIに問い合わせて、「埋め込み」のデータを準備したフィールドに挿入します。
これらの機能は、外部サービスのLLMを利用することで実現可能です。外部APIとの接続で使用する[AIアカウント設定]スクリプトステップは、OpenAIのAPIにネイティブで対応しています。
このスクリプトステップにおいて、
アカウント名には任意の文字列を設定して、後工程でのAI関連ステップでこのアカウント名を指定します。
モデルプロバイダは、「OpenAI」か「カスタム」から選択します。(カスタムを選択した場合はここでエンドポイントも設定します。)
そして、APIキーを設定します。
OpenAI APIを使う場合は、有料での契約が必要になります。管理画面でAPIキーが取得できます。
埋め込みのデータは、テキストかオブジェクトとして保持することが可能で、[埋め込みを挿入]、[対象レコードに埋め込みを挿入]では、ターゲットフィールドにテキストフィールドかオブジェクトフィールドを指定することで、保存形式が変わります。
なお、フィールドの代わりに挿入先として変数を指定すると、オブジェクト形式で保存されます。
また、関数
GetEmbeddingAsFile(),
GetEmbeddingAsText()
でも、テキスト形式とバイナリ形式の間の変換に対応します。
セマンティック検索を実行
その保存されたベクトル情報に対して、スクリプトステップ
[セマンティック検索を実行]
で、検索をおこないます。
以下の検索の例では、コサイン類似度が0.2以上のレコードを検索しています。
2つの埋め込みのデータを比較して、そのコサイン類似度を求める関数
CosineSimilarity()
も追加されました。
また、LLMとのやり取りを[AI呼び出しログ設定]というスクリプトステップで、ログに記録することができます。
([エラー処理]と同じように、必要なところでオンにして、記録を停止するところでオフにします。)
以下は、セマンティック検索を実行したときのログです。
このログは、LLM とのやり取りの詳細を記録し、デバッグや検索精度のチューニングなどで役に立ちます。上の例は、セマンティック検索を実行して、4件のレコードが検索された結果を示しています。使用されたトークン数や、検索条件に一致した各レコードのコサイン類似度の値が記録されています。
最後に
セマンティック検索は、今までの FileMaker では提供されていなかった、まったく新しい技術です。これからいろいろな応用例が出てくることでしょう。
小さく始めることはすぐにでも可能ですので、ぜひ一度トライしてみてはいかがでしょうか?
今後は、各スクリプトステップや関数について深堀りしたブログの投稿や Webセミナー も計画していきますので、ご期待ください。
本記事の注目度
本記事の注目度を測りたく、下記のクリック数を集計しております。
本ブログをご覧いただけた方は下記リンクより Claris 製品ページをご覧いただけると幸いです。