4D Write Pro: AI による文書検索

多くの 4Dビジネスアプリケーションでは、ドキュメントが非常に重要です。テクニカルノート・レポート・マニュアル・社内用のガイドなどが用意されますが、正確な文言をユーザーが覚えていないと文書探しは時間がかかったり、イライラの原因になったり、最悪の場合は文書を見つけられなかったりします。

4D 20 R10 では、AIベクトルによるセマンティック検索がそれを変えます。キーワードを比較するのではなく、意味を比較させるのです。異なる単語や異なる言語で検索しても、ユーザーは正しい文書を見つけることができます。これは、文書に格納された知識によりスマートにアクセスする方法であり、高速かつ正確で、人が実際に検索するやり方に合っています。

具体的な例を考えてみましょう。あるユーザーが、4D Write Pro のドキュメントに画像を挿入する方法を説明したテクニカルノートを探したいとします。しかし、その文書で使われている正確なフレーズを思い出せないかもしれません。

HDI: 4D Write Pro: AIを使ったセマンティック検索

4D Write Proドキュメントの検索方法

データベースに保存されたドキュメントを検索することは、新しい概念ではありません。これまで、4D デベロッパーは文書検索の機能を実装するためにキーワードベースの検索に頼ってきました。しかし今日、人工知能は、はるかに柔軟で強力なアプローチへの扉を開いています: ベクトルを使用したセマンティック検索です。

両方のテクニックを詳しく見て、ベクトルが検索方法にどのような革命をもたらすかを見てみましょう。

キーワードを使った従来の検索方法

この方法では、文書のキーワードを抽出し、テキストフィールドに保存します。そして、ユーザーが入力した特定のキーワードと比較する検索クエリを実行します。

この方法は、クエリが文書の文言と正確に一致する場合に高速で効果的です。ただし、文言が少しでも異なると、検索は失敗します。たとえば、”画像の挿入” の検索では、”ピクチャーを追加する” が含まれた文書は見つかりません。

AIベクトルによるセマンティック検索

4D 20 R10 から、強力な新機能が利用可能になりました: AIベクトルのサポートです。これにより、人工知能によるセマンティック検索が可能になります。

キーワード検索とは異なり、セマンティック検索は、正確な単語ではなく、意味に焦点を当てます。これにより、ユーザーは同じ内容を異なる表現で記述した文書を見つけることができます。たとえば、”画像の挿入” や “ピクチャーを追加する” のようなフレーズは、同じ内容の異なる表現です。

また、ユーザーは、文書の内容とは異なる言語でクエリすることもできます。これは、キーワード検索ではできないことです。

仕組み

  1. 各ドキュメントは分析され、4D AIKit コンポーネントを使ってベクトルに変換されます。このベクトルはテキストの意味を表します。
  2. ユーザークエリもベクトルに変換します。
  3. クエリのベクトルとドキュメントのベクトルの類似度が計算されます。
  4. 関連性の高いものから低いものへとソートされたドキュメントが返されます。

実装例

この機能を紹介するために、HDI を作成しました。このサンプルデータベースには、いくつかの技術的な 4D Write Pro 文書が含まれています。

ステップ1 – 各文書のベクトル生成

ベクトルの生成は、文書がデータベースに保存されたときにトリガーすることができます。この例では、すべてのベクターを一度に生成するメソッドを作成しました:

var $document : cs.NoteEntity
var $documents:=ds.Note.all()
For each ($document; $documents)
  $txt:=WP Get text($document.Document)
  $document.Vector:=cs.AIManagement.new($apiKey).generateVector($txt)
  $document.save()
End for each

ステップ2 – ユーザークエリのベクトル生成

ユーザーが検索ボタンをクリックすると、ユーザーの入力内容からベクトルを生成します:

var $vector:=cs.AIManagement.new($apiKey).generateVector($prompt)

ステップ3 – ベクトルを比較し、類似度でソート

最後に、ユーザーのクエリとの関連性でソートされたドキュメントのリストを返します:

var $formula:=Formula(This.Vector.cosineSimilarity($vector)
$documents:=ds.Note.all().orderByFormula($formula); dk descending)

この例では、関連性の高いものから低いものへとランク付けされたすべての文書を返します。また、ユーザーに表示される結果を制限することもできます (たとえば、上位 5つまで)。

HDIの説明動画

まとめ

AIベクトルを活用したセマンティック検索は、4Dにおける文書ベースのデータとのユーザーインタラクションの在り方に、大きな進化をもたらしています。この技術は、厳格なキーワード一致に依存することなく、より高い柔軟性、より高い精度、そしてより直感的なユーザー体験を提供します。

内部メモ、ドキュメント、またはナレッジベースのいずれにおいても、ベクトル検索は、4Dアプリケーションに新たなレベルのインテリジェンスをもたらします。

4Dの新バージョンでは、大規模なデータセットの高速分析を可能にする特別なベクトルインデックスタイプが導入される予定です。

どうでしょう? このブログ記事で、プロジェクトのアイディアを思いつきましたか? どのようなタイプの文書にセマンティック検索が有効でしょうか? ぜひそのアイディアを試してみてください!

Vanessa Talbot
- プロダクトオーナー - Vanessa Talbotは、2014年6月に4Dプログラムチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。入社以来、4Dにおける主要機能の定義に関わってきました。プリエンプティブ/マルチスレッドの新機能の大部分と、非常に複雑なテーマである組み込みアプリケーションの新アーキテクチャに取り組んできました。VanessaはTelecom Saint-Etienneで学位を取得後、Criminal Research Institute でオーディオビジュアル部門の開発者としてキャリアをスタートさせました。また、メディアや医療の分野でも、技術サポートやプロダクションの分野で働いてきました。