文書を代表するベクトルをRRFから外したら、検索の精度が上がった

English

この記事の目次

本記事の概要

個人会社で開発している、長い専門文書を検索するサービスで、文書のどこを埋め込むかを比べた実験の記録である。比べた案は3つである。新しい案である本論の案は、文書の作成者が中心の主張を述べる本論のセクションだけを、チャンクに分割して埋め込む。本論の案では、文書1件につき1本、文書を代表する埋め込みも作る。この埋め込みを代表ベクトルと呼ぶ。ラベル付きの案は、定型の書式と添付の資料を除くすべてのセクションを、チャンクに分割する。各チャンクの先頭に、セクションの種別のラベルを付けて埋め込む。検索のときは本論のセクションのチャンクに絞り込む。全文を一律に分割する案は、文書の全文を800字ずつ、200字を重ねてチャンクに分割して埋め込む。

比較の3回目までの本論の案は、代表ベクトルの検索の一覧を、等しい重みのRRFの3本目の一覧として常に入れていた。RRFは、複数の検索が返した文書の一覧を、一覧ごとの順位から計算した値の合計で、1つの順位の一覧にまとめる方法である。この比較の条件を、代表ベクトルを常にRRFに入れる形と呼ぶ。代表ベクトルを常にRRFに入れる形は、比較の3回目まで、ラベル付きの案を測った比較の条件を、nDCG@10の点推定で下回った。比較の3回目の相手は、ラベル付きの案を定義のとおりに絞り込んで測った、本論に絞り込む対照条件だった。比較の最終の値は、代表ベクトルを常にRRFに入れる形が0.635で、本論に絞り込む対照条件が0.685だった。比較の最終の値は、768次元で、検索結果の上位10件まで関連度を判定した後に、計算し直した値である。

比較の4回目で追加した比較の条件では、代表ベクトルの検索の一覧をRRFに入れない。ほかの組み立ては、代表ベクトルを常にRRFに入れる形と同じである。この比較の条件を、代表ベクトルをRRFに入れない形と呼ぶ。代表ベクトルをRRFに入れない形のnDCG@10は0.687だった。代表ベクトルを常にRRFに入れる形の0.635との差は+0.051で、差の95%区間はゼロを含まなかった。差の+0.051は、丸める前の値の0.6865と0.6352から計算した値である。本論に絞り込む対照条件の0.685との差は+0.002で、差の95%区間はゼロを含んだ。実験の記録は、差の95%区間がゼロを含む場合を、統計的に同等と書いている。

開発を主導するAIエージェントは、誤っていた部分を、代表ベクトルを等しい重みのRRFに常に入れる組み立てだと判断した。設計の文書には、測っていない使い方が2つ書いてある。一覧に重みを付けてまとめる使い方と、まとめた後の上位だけを代表ベクトルで並べ直す使い方である。この判断は2つの使い方には及ばない。

本文では、最初に、代表ベクトルをRRFに入れない形と、対照条件の比較の結論を、nDCG@10の差と95%区間の表で示す。次に、比べた3つの案と、6つの比較の条件の検索の組み立てを説明する。続けて、評価に使った検索文と、関連度の判定を説明する。その後に、比較の結果を記録する前に設計の文書に書いた、合否の条件を説明する。さらに、比較の1回目から3回目と、比較用のプログラムへの重大度Highの3件の指摘を書く。そのうえで、比較の4回目で切り分けた、nDCG@10の差の由来を説明する。続けて、本論に絞り込む対照条件と統計的に同等でも、本論の案を採用した理由を説明する。最後に、この実験で測っていない範囲と、コーパス全件での比較と、検索の設計を比べる実験で使える3つの手順を書く。

記事から得られること

キーワード検索とベクトル検索を一緒に使う検索を、設計している方と、評価している方に向けた記事である。次の4つが分かる。

この記事は、個人会社で開発しているサービスの実験の記録に基づく、設計の考察である。