前回紹介した Domino IQ の RAG サポートのセットアップですが最初の手順は『Embedding model をダウンロードして llm_models フォルダに配置』 でした。
Embedding Model の知識は全くない状態だったので、作業にあたり Chat-GPT 先生の助けを借りながら理解を進めました。新しいことはすぐに忘れちゃうので、記録しておきます。
このような背景から、誤解や間違いがあるかもしれません。予めご了承ください。
Embedding Model の役割
DominoIQ の RAG の動作をざっくりまとめると下図のようになります。
Embedding Model の利用シーンは大きく2つあります。
一つは、対象の文書をベクトル化しデータベースに登録する処理で、もう一つは、質問をベクトル化して、ベクトルデータベースへ問い合わせする際に利用します。後者では、ヒットした結果を LLM に渡して回答を得る処理につながります。
Embedding Model は、与えた文書や質問をベクトル化する処理を担当します。これが RAG サポートで、LLM のほかに Embedding Model のセットアップが必要な理由となります。
Qdrant のセットアップは不要
ちなみに、前回紹介した RAG サポートのセットアップには、ベクトルデータベース(Qdrant)は登場しませんでした。その理由は、Domino IQ RAG Support のドキュメントに記載があます。
『The DominoIQ task starts the embedding model using the llama-server and the vector database server locally on the Domino IQ server.』
Qdrantは「セットアップするもの」というより「DominoIQが内部で起動するもの」なんですね。
Embedding Model の選び方
HCL の技術情報 では、いきなり4つの候補が紹介され、bge-m3 でセットアップすることが決まっています。
- mxbai-embed-large
- bge-m3
- nomic-embed-text
- snowflake-arctic-embed
◇ bge-m3
技術情報内のモデルダウンロードリンクをクリックすると[Files and versions]タブが開きます。その左に[Model card]タブがあり、モデルの情報が確認できます。
残念ながらここには詳しい情報はなく、詳細は最後のリンク見るように指示があります。そのリンクを開くと書いてありました。今度は素人には詳しすぎる情報だったのですが、先頭にばっちり書いてありました(画像は Chrome で翻訳済み)。『多機能性、多言語性、多粒度性といった汎用性の高さが際立つ』モデルだそうです。
◇ mxbai-embed-large
検索ボックスを使用して探し出し、モデルカードを翻訳してみました。
他のモデルも調べてみたのですが、似たような感じでよくわかりませんでした...。各モデルで書き方がバラバラなので、ミリしらのシロートが読んでも比較はできないですね。仕方がないので、Chat-GPT 先生にこの4つのモデルを一般的な比較指標とともに特徴をまとめてもらいました。
今回候補として挙げられたモデルのバージョンを調べた範囲では、bge-m3が多言語対応という点で日本語環境に適していると判断しました。長文に対応している点も Notes/Domino にマッチした特徴を持っていると思います。
Embedding Model のダウンロード
bge-m3 のダウンロードページ には複数のファイルがリストされています。
ファイル名の Q の後の数字は、モデルの学習済みパラメータを何 Bit 程度で量子化するかを表しており、ざっくりいうとモデルの圧縮度合いを表します。数字が小さいほどファイルサイズを小さくできるそうです。
K は K-quants という量子化方式だそうです。
S / M / L は Small / Medium / Large を表し、同じQ系でも、どの部分をどの程度の精度で保持するかなどの違いによってサイズが変わります。
なお、F16は16bit浮動小数点形式であることを表し、このモデルの基本形となります。いわば「無圧縮」に近い状態と考えてよさそうです。
とはいっても、現時点ではよくわからないので、技術情報の通り『bge-m3-Q6_K.gguf』をダウンロードすることにしましょう...
ダウンロードしたファイルは llm_models フォルダに配置します。
Embedding Model のサイズ
この記事の最初に『Embedding Model は文書をベクトル化』すると紹介しました。これだけだとアルゴリズム(プログラム)になるので、なぜ先ほどの圧縮でモデルのサイズが変わるんだろう?と疑問を持ったので調べてみました。
結果はアルゴリズムだけはなく、データも含むことがわかりました。
|
Embedding Model = ベクトル化のプログラム + 学習済みの巨大な「重み」データ
|
モデルの比較表にまとめた通り、bge-m3 は 約 568 M パラメータのモデルで、その結果が重みデータとしてモデル内に組み込まれており、このデータの圧縮の仕方で複数のファイルが存在したというわけですね。
まとめ
最初に書いた通り、知識がない状態からのスタートだったので、少しずつ理解を進める過程をまとめてみました。まだまだ分からないことだらけなので、少しずつ理解を進め記事にしていきたいと思います。
このような背景からモデルの選定は、技術情報に倣って bge-m3-Q6_K.gguf を選択しました。いつか自分で判断して選択できるようになりたいですね。
0 件のコメント:
コメントを投稿