問いから「経理課の2023年度」という条件を取り出しても、効かせ方を間違えると意味がありません。
上位10件を取ってから条件で絞ると、必要な3000件のうち2634件が消えました。
条件を後から当てると、条件に合う文書が候補に残っていません。順番で結果が変わります。
セルフクエリで取り出した条件をいつ効かせるかで、結果が大きく変わります。実際に走らせて測りました。
文書2万件に、部署5種と年度7種の条件を持たせました。1つの組み合わせに当たるのは全体の約2.9%です。
問い300件で、条件に合う文書の中から上位10件を取りたい状況にしています。取れるはずの合計は3000件です。
やり方 1問の比較 取れた件数 取りこぼし 取りこぼし率 探してから絞る(上位10) 20000件 366件 2634件 87.8% 探してから絞る(上位100) 20000件 1126件 1874件 62.5% 探してから絞る(上位1000) 20000件 3000件 0件 0.0% 絞ってから探す 20571件 3000件 0件 0.0% 条件に合う文書は1問あたり平均 571件。全体の 2.9%
上位10件を取ってから条件で絞ると、残ったのは366件です。1問あたり1.2件しか残りません。
条件に合う文書は全体の2.9%しかありません。無作為なら上位10件に0.3件ですが、実測は1.2件でした。それでも9割近くは条件の外から埋まっています。
上位100件まで広げても取りこぼしは62.5%です。1000件まで広げて、ようやく0.0%になりました。
条件の当たる割合が2.9%なので、10件を確保するには350件前後が要ります。条件が細かくなるほど、広げる幅も増えます。
出典もこの必要性を対象の特徴をすべて埋め込みで表すことができない場合、追加の条件を設けることが重要になると述べています。
条件を後から当てると、候補にほとんど残っていない。
Setting additional conditions is important when it is impossible to express all the features of the object in the embedding.原文Qdrant「Filtering」 この内容の有効期限2027-02-18
問いの文から、絞り込みの条件と探すための語を分けます。分けた条件を検索側へ渡します。
セルフクエリは、利用者の問いから条件を取り出す仕組みです。取り出した条件は、検索の絞り込みに渡します。
「経理課が2023年度に出した出張の規程」という問いなら、条件は部署と年度、探す語は出張の規程です。
条件のほうを埋め込みに混ぜると、うまく効きません。年度のような値は、近さでは表せないからです。
出典も検索側の受け口を点を検索または取得するときに条件を設定できると説明しています。条件は別の口から渡します。
3番目を落とすと、条件を付けた瞬間に項目のない文書が全部消えます。付けられない文書の扱いを先に決めます。
問いに条件が含まれていない場合もあります。そのときは条件なしで探すのが素直な動きです。
困るのは、間違った条件を取り出した場合です。条件に合う文書が0件になり、結果が空になります。取り出した条件は記録に残します。
With Qdrant, you can set conditions when searching or retrieving points.原文Qdrant「Filtering」 この内容の有効期限2027-02-18
条件の照合は軽い処理です。索引を張っておけば、先に絞るほうが速くなります。
セルフクエリで先に絞ると遅くなる、という心配をよく聞きます。この計測では増えていません。
絞ってから探した場合の比較は1問あたり20571件でした。全件を探す20000件と比べて2.9%の増です。
増えたぶんは、条件に合った571件のベクトル比較です。条件の照合そのものは、ベクトルの比較より軽い処理です。
軽いと言えるのは、条件の列に索引が張ってある場合です。出典も絞り込みの性能を出すには、絞り込みに使う予定の項目に索引を作ることを挙げています。
索引がないと、条件の照合が全件走査になります。2万件なら気になりませんが、桁が増えると効いてきます。
条件が細かいほど、残る母数が小さくなります。この計測では平均571件でしたが、条件を1つ足すごとに割り算されます。
残りが10件を切ると、上位10件を取ること自体ができません。絞ったあとの件数を記録しておくと、この状態に気づけます。
索引を分けている場合は、さらに減ります。ベクタシャーディングの記事では、分けたときの再現率を測っています。
条件は先に効かせる。照合の費用は小さい。
条件は部署と年度を一様に割り振ったものです。実際の文書は特定の部署や年度に偏るので、条件に合う割合はもっと大きくも小さくもなります。比較件数も、条件の照合を1件1回として数えた単純な形です。ここで見せているのは、条件の当たる割合が小さいほど、後から絞る方式が成り立たなくなるという関係です。
For performant filtering, create payload indexes for the fields you plan to filter on.原文Qdrant「Filtering」 この内容の有効期限2027-02-18
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る