生成ai
あるFB投稿より。
この内容はかなり妥当性があるように見える。そして、そのことが、生成AIにフレーム問題を扱ってもらうことが依然として不可能であることを証明しているのだと思う。
ベクトル検索の手段として、Chromaが急速に台頭している。無料であるばかりか、オープンソースなので自由度が高く、データレイクの製品種類による制約がない。Chromaを使ったテキストと画像の組合せを条件にしたベクトル検索RAGというニーズもあるだろうが、そのような利用が可能である。
Chromaを使って色々な実験を行っていると、RAG検索でハルシネーションが起きる理由が明確に見えてきます。複数の画像や文章の特徴量ベクトル間の内積(類似度)が1(=100%)に近ければ、RAG検索で該当項目として選択されてしまうわけですが、例えば、Chromaを使って実験していると、コンロの画像でその回転レバーを時計の針と類似していると勘違いして、コンロを時計と見做してしまうケースもあるのです。つまり、時計の画像を選ぶようにRAG検索しても、コンロの画像が選ばれてしまうわけです。これは決して嗤うべきことではなく、必然的な現象であると理解しなければなりません。円形の枠の中に針のようなものがあるものは時計だとRAG検索エンジンが理解してしまえば、コンロも時計になってしまうのです。では、どうすればこのような誤答を避けることが出来るでしょうか。円盤の中にあるかどうか、針のようなものがあるかどうかという点以外にも、例えば回転軸の中心点が実際に存在するかどうかどうか、時刻を表示する数字があるかどうか、といった特徴量の次元を追加していく必要があるわけです。他にも動物の画像をRAG検索するのに、ふさふさとした毛糸の付いたスリッパの画像を抽出してきてしまったケースもありました。これもふさふさとした毛があれば小動物だとRAG検索が理解してしまっていることから起きるハルシネーションです。実際に手足や尾があるかどうか、頭部があってそこに耳や鼻や口があるかどうかといった点を特徴量ベクトルに追加しておけば、このようなことは防げます。内積を計算する時には、まず個々のテキストや画像に対して、その特徴を表すベクトルを割り当てるわけですが、それらのベクトルの要素の内容や次元を決めるのは、生成AIではなく、生成AIを設計し、利用するする人間の側です。そのベクトルの成分が見せかけの類似性を排除できるほど十分に高い次元を持っていない場合には、生成AIとしては、本来関係の無い物を類似性のあるものと見做して、RAG検索で抽出してしまうのです。これでハルシネーションやRAG検索の失敗の本質が明確になりましたね。ハルシネーションは、まがいもの、低次元の特徴量空間における見せかけの内積の高さから起きる現象だということが解かるのです。