LangChain のthreshold(しきい値)とは|ベクトル検索における「信用のボーダーライン」設計
作成日:2025-05-31
更新日:2025-09-15

thresholdで
ボーダーライン
ボーダーライン

threshold?

敷居とする値のこと
threshold(しきい値)とは
「ユーザーの質問」と「資料から得たテキスト(チャンク)」とが、どれくらい類似しているか(cosine類似度)を数値としたもの
設定された数値より高ければOK、それ以下なら無視するという基準とするもの。
類似度スコア(cosine類似度)とは
- ユーザーの質問と資料の文章の「意味の近さ」を、cosine類似度(-1〜1)で表した数値。
- 1に近いほど似てて、0に近いほど似てない。
threshold(しきい値)が高いと?低いと?
設定 | 内容 | メリット | デメリット |
---|---|---|---|
高い(例:0.8) | 厳選モード | 精度が高くなる | 該当なしで沈黙することも |
低い(例:0.3) | ゆるゆるモード | 関連情報は拾いやすい | 関係ない情報まで混ざることも |
threshold(しきい値)はどこで使う?
- ユーザーの質問に対し、
どのチャンク(テキストのかたまり)を参考にして回答を作るか を選ぶとき
similarity_search()
やsimilarity_search_with_score()
などで
どのチャンクを参考にするか選ぶとき。- LangChainで使うときの例:
docs = vectorstore.similarity_search_with_score(
query="月の起源は?",
score_threshold=0.75,
k=5
)
なぜ、threshold(しきい値)の設計が大事?

「どこまでを“意味が近い”と見なすか」を設計する
信頼性の調整
「どれくらい意味が近かったら、そのチャンクを信用していいか?」
を決める“フィルターの強さ”。
- 高いしきい値(例:0.8)→ 厳選!関係ありすぎるやつだけ通す
- 低いしきい値(例:0.3)→ ゆるゆる!ちょっと似てたら通す
なにに影響する?
- 回答の正確さ
- 回答の有無
- 誤情報を拾う危険性
OpenAI
との関係
threshold
は LangChainの機能。OpenAIではない!
- OpenAIはベクトルをくれるだけ
- 選ぶ基準はLangChainが担当する
要素 | 提供元 | 役割 |
---|---|---|
OpenAI | OpenAI社 | テキスト → ベクトル化(embedding)だけ |
FAISS | Meta社 | ベクトルの類似検索をするエンジン |
LangChain | LangChain社 | embedding・検索・しきい値設定をつないでくれるラッパー |
OpenAI API(ChatGPTとか)
- Embedding(埋め込みベクトル)を出してくれるだけ。
- たとえば
text-embedding-ada-002
でベクトルが得られる。 - 類似度の計算やしきい値の制御はしてくれない
LangChain
- ベクトル検索(FAISSとか)で、
- 類似度を計算(cosine similarity)
score_threshold=
みたいにしきい値を自分で設定できる。
- これは
similarity_search_with_score(threshold=0.7)
とかの形で使う。
まとめ|しきい値ってどこで使う?
LangChainの検索フェーズで、どこまでを“類似”と見なすかの基準
OpenAIとLangChainのつなぎ方
- OpenAI で「テキスト」→「ベクトル」に変換(埋め込み)
- LangChain 経由でそのベクトルを FAISS に保存
- ユーザーの質問をまたベクトル化して、FAISS で類似ベクトルを検索!
もし OpenAI
単体で使うなら、自分で類似度計算して、しきい値チェックも手動でしなければならない
まとめ
しきい値は「答えの信用ライン」。
設計者がコントロールする、賢さと柔らかさの境界線
ベクトル検索では「意味が近いかどうか」を数値で表現する。
その数値が「このくらい以上なら使ってええで」というボーダーライン=しきい値。
しきい値が高すぎるとスルーされ、低すぎると関係ない情報まで拾ってしまう。
つまり、しきい値は「信用できる根拠ラインの設計」そのもの。
設計者の“答えの厳しさ”を決めるスライダーみたいなもの。
補足:しきい値とは、文字通り「敷居」のこと
しきい値って、「閾値」って難しい漢字になってるけど、実は「敷居」のこと。
「敷居をまたぐ値」という意味。
またいだら“使える”、またげなかったら“無視”。
2025-05-31
編集後記:
この記事の内容がベストではないかもしれません。
記事一覧
-
[FAISS]forfast vector search. 検索エンジンのFAISSとは|似てるものを超高速で探してくれる機能 -
[What's AI?]Attentionas a spotlight 【AIの仕組み】Attentionは言葉に光を当てるスポットライト -
dotenv: yourprivate keyhole dotenv+venvで始めるGPT開発|Python×OpenAI API接続の最小構成ログ -
Why Pythonfor AI? なぜAI開発はPythonでおこなうの? -
[AI Bot]作ってみるFeeling-to-Words Python×OpenAI|感情の言語化ボットを作ってみる -
[What's AI?]TransformersEmbedding Transformers & Embedding|the Tech Behind LLMs