「あああ いいい ううう」が0.604。ベクトル検索の点数は、なぜ0にならないのか
意味のない文字列が、意味のある無関係な質問より高い類似度を出し、しきい値を突破しました。なぜそうなるのかを768次元の実測で分解し、対処まで書きます。
意味のない文字列が、意味のある無関係な質問より高い類似度を出し、しきい値を突破しました。なぜそうなるのかを768次元の実測で分解し、対処まで書きます。
自社サービスworry.teamのコーチ紹介で動いているRAGを、実測した類似度スコアごと公開します。単語が一致しなくても見つかる仕組みと、関係ない相談に「答えさせない」しきい値の決め方まで。
社内RAGの相談で最初に確認するのは「社内の文書を外に送っていいか」です。ここの答えで選べる構成が変わり、しかもあとから変えるのがとても高くつきます。ネット接続あり/社内ネットワーク完結/PC1台完結の3段階で、それぞれ何ができて何ができなくなるかを整理しました。
社内RAGをAWS Bedrockのマネージドで組むか、pgvectorで自前に持つか。「マネージドは楽、自前は安い」という説明をよく見ますが、両方を本番まで作ってみると、楽な部分と面倒な部分がきれいに入れ替わるだけでした。判断を決める3つの問いと、実際に差が出た4つの場所を書きます。
RAGの構築費用は、工数より「毎月かかり続けるもの」と文書の状態で決まります。固定費を作らない構成、見積もりが外れる理由、後から足せない権限とモデル差し替え、小さく始める順番までまとめました。
専用のベクトルDBを契約せず、すでに動いているPostgreSQLにpgvectorを入れてRAGを組む構成。次元数が後から変えられない理由、e5系のプレフィックス、HNSWとIVFFlatの選び分け、しきい値をギャップで切る方法、そして最も重い「埋め込みモデルを差し替える日」の入れ替え手順まで、Djangoの実コードで解説します。
ベクトル検索は「意味が近いか」しか見ていないため、閲覧権限のない文書も平気で返してきます。社内RAGが本番直前に必ずぶつかるこの壁を、Django+pgvectorの事前フィルタでどう塞ぐか。後フィルタが破綻する理由、絞り込むと件数が足りなくなるHNSWの罠、そして実装後も残る3つの漏洩経路まで書きます。
もうひとつの選択肢 / 自前構成 専用サービスを使わず、既存のPostgreSQ… 続きを読む »【前編】DjangoからAWS Bedrock Knowledge Bases (RAG) を呼び出す実装例
今やビジネスや日常生活で欠かせない存在となったAIアシスタント。しかし、「Cha… 続きを読む »RAGとChatGPTの違いとは?AIアシスタントの新時代が到来!