広告枠を募集中 ご相談ください

Cohere Coral と Cohere Rerank がエンタープライズ RAG の検索結果を精査しハルシネーションを根絶する仕組み

365Finds Editorial
Wiki 記事 11,430 本収録

あなたの AI で 365 Wiki を使う

下のプロンプトをコピーして、普段使っている AI に貼り付け、そのまま質問してください。

完全版 Skill をダウンロード

まずはプロンプトでお試しください。よく使う場合は完全版 365Wiki Skill をインストールすると、毎回貼り付ける必要がありません。普段使う AI がなければ、Gemini や Microsoft Copilot のウェブ版でも使えます。

エンタープライズ環境における検索拡張生成(RAG: Retrieval-Augmented Generation)の運用において、LLM が誤った事実を出力する「ハルシネーション(幻覚)」が発生する根本的な要因は、大規模言語モデル自体の推論能力不足ではありません。その真因の多くは、検索パイプラインがノイズや無関係な文書チャンク、文脈の欠落した断片をモデルのコンテキストウィンドウに流し込んでしまうことにあります。金融コンプライアンス、法的調査、医療判断などのミッションクリティカルな現場では、誤った検索結果に基づくもっともらしい誤答は重大なガバナンスリスクとなります。

Cohere は、エンタープライズナレッジアシスタント「Cohere Coral」およびその RAG アーキテクチャにおいて、この課題を解決するために「2段階検索(Two-Stage Retrieval)」を採用しています。初期検索と生成モデルの間に専用の Cohere Rerank を組み込み、クロスエンコーダー(Cross-Encoder)による精密な全単語交差アテンション計算で候補ドキュメントを再評価・フィルタリングします。さらに、Command シリーズによる根拠付け生成(Grounded Generation)と文字単位のインライン引用(Citations)を組み合わせることで、情報入力の段階からハルシネーションを遮断します。


根本原因:単一のベクトル検索がハルシネーションを誘発する理由

多くの初期的なエンタープライズ RAG 実装は、密ベクトル(Bi-Encoder: バイエンコーダー)によるベクトルデータベース検索のみに依存しています。ベクトル検索は数百万件のデータに対してミリ秒単位の類似度検索を実現しますが、以下のような本質的な弱点が存在します。

  1. バイエンコーダーの独立埋め込みに伴う限界:バイエンコーダーは、ユーザーの質問(クエリ)とドキュメントをそれぞれ独立してベクトルに変換します。コサイン類似度の計算時には、クエリ内の単語とドキュメント内の単語が直接相互作用しないため、同一分野の用語を含みながら質問の文脈とは全く異なる段落が高い類似度スコアを獲得してしまいます。
  2. コンテキスト過多とノイズ注入:再現率(Recall)を担保しようとするあまり、Top-20 や Top-50 のチャンクを一度に生成モデルへ入力すると、大量の無関係なトークンがプロンプトを埋め尽くし、モデルが誤った前提を学習してしまいます。
  3. 「迷子の文脈(Lost in the Middle)」現象:LLM はコンテキストウィンドウの先頭と末尾にある情報に強く注意を払う一方、中間に配置された事実を見落としやすい特性があります。正解となる単一の文が多数のノイズチャンクの中間に埋もれると、モデルは文書を無視して自身のパラメータ記憶から嘘を生成し始めます。
  4. 型番・条項番号・表形式データの識別不能:純粋なベクトル検索は、厳密な製品コード、契約条項番号、日付条件(「2023年度」と「2024年度」の差異)、JSON や表データに対して脆弱であり、これが数値やファクトの捏造を直接引き起こします。

Cohere Rerank のアーキテクチャ:クロスエンコーダーへの転換

Cohere Rerank は既存の検索システムを置き換えるのではなく、初期検索の下流に位置する「高精度セマンティックフィルター」として機能します。

[ユーザーの質問]
    │
    ▼
[第1段階:広域リコール](ベクトル検索または BM25 ハイブリッド検索により 50〜100 件を抽出)
    │
    ▼(候補チャンク Top 50-100)
[第2段階:Cohere Rerank](Cross-Encoder による全トークン交差アテンションと関連度スコアリング)
    │
    ▼(厳選された Top 3-5 件の高純度コンテキスト+信頼度スコア)
[根拠付け生成](Command R / Command R+ による厳格なコンテキスト制約付き推論)
    │
    ▼
[検証可能な文字単位インライン引用付き回答]

バイエンコーダーとクロスエンコーダーの技術比較

比較項目第1段階:ベクトル検索(Bi-Encoder)第2段階:Cohere Rerank(Cross-Encoder)
入力処理クエリと文書を独立して固定長ベクトル化クエリと文書を連結し単一シーケンスとして一括入力
トークン間アテンション相互作用なし;内積またはコサイン類似度のみクエリと文書の全トークンにまたがる多頭自己注意(Self-Attention)
意味解像度大まかなトピック類似度;意味のズレが生じやすい厳密な論理包含、条件の一致、否定構文の正確な判定
レイテンシ特性大規模インデックスに対して数ミリ秒で実行可能計算コスト大;候補集合(50〜100件)の再評価に特化
対応データ構造自然言語テキスト中心半構造化データ、表、JSON、コード、YAML 形式にネイティブ対応

Cohere Rerank(rerank-v3.5 や rerank-v4.0-pro など)では、クエリの各トークンがドキュメントチャンクのすべてのトークンと同時にアテンションを交差させます。「第4条第2項に別段の定めがある場合を除く」といった除外条件や特定期間の財務数値など、単なるキーワードやベクトル類似度では捉えきれない意味関係を把握し、信頼性の高い relevance_score を出力します。


ハルシネーションを抑制する3つのメカニズム

Cohere Coral と Rerank の連携は、以下の3つの具体的なメカニズムを通じてエンタープライズ RAG におけるハルシネーションを極小化します。

1. コンテキストの大幅な圧縮と高 S/N 化(50件から3件へ)

初期検索で抽出された 50 件以上のチャンクを Rerank が再評価し、真に関連性の高い上位 3〜5 件(Top-K)のみに絞り込みます。無駄なトークンを 90% 以上削ぎ落とすことで「Lost in the Middle」問題を解消し、LLM のアテンションを決定的な証拠のみに集中させます。

2. 信頼度スコアによるゲート制御(Confidence Threshold Gating)

Cohere Rerank が出力する relevance_score は 0 から 1 の間で正規化された意味的確信度です。開発者はパイプライン内にしきい値判定を設けることができます。

3. 表形式・半構造化データに対するネイティブ処理能力

企業の重要文書は、CSV、財務諸表、システム設定など、表形式や JSON で記述されているケースが多大です。Cohere Rerank は最大 4,096 トークンの単一文書長に対応しており、YAML や JSON に整形されたデータをそのままスコアリングできるため、表頭とセル値の関連性が失われることによる数値の捏造を防ぎます。


原生的な根拠付け生成と検証可能なスパン単位の引用

高純度な文書を渡すだけでなく、生成モデルがコンテキストに忠実であり続ける設計が必要です。Cohere は Rerank で絞り込んだ文書を、RAG 用途に特化して訓練された Command シリーズ(Command R、Command R+)に引き渡します。

Cohere Chat API(v2)に documents パラメータを指定してリクエストを送信すると、レスポンスの message.citations に文字単位の引用情報が返却されます。

{
  "citations": [
    {
      "start": 0,
      "end": 38,
      "text": "契約金額が10万ドルを超える調達案件は副社長の承認が必要です。",
      "sources": [
        {
          "type": "document",
          "id": "doc_procurement_policy_2024",
          "document": {
            "title": "2024年度調達管理規程",
            "snippet": "100,000米ドルを超えるすべてのソフトウェア契約更新には、担当副社長の事前承認を要する。"
          }
        }
      ]
    }
  ]
}

スパン単位の引用が持つエンタープライズ価値


実装ガイド:Cohere V2 SDK による2段階 RAG パイプライン

以下は、初期候補ドキュメントの再ランク付け、信頼度ゲート、インライン引用付きの回答生成を行う Python 実装例です。

import cohere

# Cohere クライアントの初期化(API v2)
co = cohere.ClientV2(api_key="COHERE_API_KEY")

def enterprise_grounded_rag(user_query: str, raw_candidates: list[dict]) -> dict:
    """
    エンタープライズ向け 2段階 RAG パイプライン:
    1. Cohere Rerank で候補ドキュメントを再評価
    2. 信頼度しきい値ゲートによりハルシネーションを遮断
    3. Command R による引用付き根拠付け回答の生成
    """
    candidate_texts = [doc["snippet"] for doc in raw_candidates]
    
    # 第2段階:クロスエンコーダーによる再ランキング
    rerank_result = co.rerank(
        model="rerank-v3.5",
        query=user_query,
        documents=candidate_texts,
        top_n=5
    )
    
    # 信頼度しきい値の設定(業務要件に応じて調整)
    CONFIDENCE_THRESHOLD = 0.50
    verified_documents = []
    
    for item in rerank_result.results:
        if item.relevance_score >= CONFIDENCE_THRESHOLD:
            orig = raw_candidates[item.index]
            verified_documents.append({
                "data": {
                    "id": orig.get("id", f"doc_{item.index}"),
                    "title": orig.get("title", "社内文書"),
                    "snippet": orig.get("snippet", "")
                }
            })
            
    # 安全なしきい値を満たす文書がない場合は即座にフォールバック
    if not verified_documents:
        return {
            "response": "社内ナレッジベース内に対象の問い合わせを検証可能な信頼性の高い情報が見つかりませんでした。",
            "citations": [],
            "grounded": False
        }
        
    # 第3段階:厳選されたドキュメントに基づく根拠付け生成
    messages = [{"role": "user", "content": user_query}]
    chat_response = co.chat(
        model="command-r-08-2024",
        messages=messages,
        documents=verified_documents
    )
    
    return {
        "response": chat_response.message.content[0].text,
        "citations": chat_response.message.citations,
        "grounded": True
    }

本番導入時のトレードオフと設計上のベストプラクティス

エンタープライズ RAG システムに Cohere Rerank を組み込む際は、以下の運用ポイントを考慮してください。

  1. 第1段階でのハイブリッド検索の必須化:Rerank への入力には純粋なベクトル検索だけでなく、BM25(または Elasticsearch)によるキーワード検索を組み合わせたハイブリッド検索を採用してください。固有名詞やエラーコードの取りこぼしを防ぎ、Rerank に渡す候補集合の質を最大化できます。
  2. レイテンシとスループットの設計:50 件のドキュメントをクロスエンコーダーで再評価する場合、通常 50ms〜120ms の処理時間が追加されます。リアルタイムチャットで極めて高い応答性が求められる場合は、精度を維持しつつスループットを約 3 倍に向上させた rerank-3-nimble モデルの採用を推奨します。
  3. チャンク分割の最適化:Cohere Rerank は 1 文書あたり最大 4,096 トークンに対応しているため、テキストを 100〜200 トークン単位に細分化する必要はありません。512〜1,024 トークン程度の適度なサイズを維持することで文脈の分断を防ぎ、モデルの理解精度を高められます。
  4. 推論コストとトークン消費の劇的な削減:Rerank API の呼び出しコストが発生するものの、生成モデルに渡すトークン数が 50 チャンク(約 2 万トークン)から 3 チャンク(約 1,200 トークン)へと 90% 以上削減されるため、LLM 全体の推論コストと応答開始時間(TTFT)は大幅に改善されます。

まとめ

Cohere Coral と Cohere Rerank が実現するハルシネーション抑制の本質は、明確なアーキテクチャの役割分担にあります。初期検索が広い候補を集め、Cohere Rerank がクロスエンコーダーによって意味のノイズを除去して信頼度ゲートを形成し、Command モデルが厳格に精査された証拠のみを引用付きで要約します。この一連のパイプラインにより、企業は厳格なコンプライアンス要件を満たしながら、信頼性の高い AI ナレッジ基盤を構築できます。


参考資料