概要
- 独自文書質疑でよく使われる、OpenAI Embedding(Ada v2)ベクトル変換の特徴を見た
- 文章の先頭ほど重視される事が分かった
- HTMLのタグである程度制御できることが分かった
ポイント
HTMLファイルの前処理で、タグはある程度残すのも選択肢
HTML以外でも、重要箇所のマーカーとしてembeddingの際に付けるのもアリかもしれない
背景
前回の記事で、OpenAI Embedding(Ada v2)には、文書の先頭ほど重視される癖があることが分かった。
だがしかし、先頭以外に重要箇所がある場合もあるはず。それをAIに分からせる方法はないのか?という事で追加で調べてみた。検証環境などは前回参照。
結果
クエリ文
今日、私は田中とカラオケで遊んだ。
検索対象1(1行目がクエリ文)
今日、私は田中とカラオケで遊んだ。
昨日、兄は鈴木とドライブに行った。
明日、妹は両親と遊園地で楽しむ。
検索対象2(2行目がクエリ文)
昨日、兄は鈴木とドライブに行った。
今日、私は田中とカラオケで遊んだ。
明日、妹は両親と遊園地で楽しむ。
検索対象3(3行目がクエリ文)
昨日、兄は鈴木とドライブに行った。
明日、妹は両親と遊園地で楽しむ。
今日、私は田中とカラオケで遊んだ。
検索対象3の修飾例
昨日、兄は鈴木とドライブに行った。
明日、妹は両親と遊園地で楽しむ。
<title> 今日、私は田中とカラオケで遊んだ。 </title>
文章末に検索クエリがあるため、近い距離でHitしない検索対象3を、検索クエリに近くできるほど、その修飾はOpenAI Embedding的に強調効果があったことになる。
ポイント
- HTMLのstrongタグが最強。 文頭クエリ文の検索対象1までの距離を半分詰めている
- HTMLのtitle/h1なども効いているが、効果が弱くなるのと、本来の意味は強調ではないので、副作用が無いか気になるところ
- Markdownの強調表現は、効かない
- テキストで「重要」とか書いても、ベクトル強調の意味では効かない