RAGコンテキストインジェクション設計

自動検索ルール

命式データから以下のRAGコンテキストを自動的に検索・注入する。

必須検索(毎回)

命式フィールド検索クエリカテゴリ
北の星”{星名} 解説 性格 特徴”canon-03, judai-education
南の星”{星名} 社会 仕事”canon-03, judai-education
大運の主星”{星名} 大運 時期”canon-04, junidai-education
天中殺”天中殺 {名前}“canon-06, tenchusatsu-education
総エネルギー”エネルギー {レンジ}“remoteRaw energy

相談ドメイン別の追加検索

ドメイン追加検索カテゴリ
ビジネス”{南の星} 仕事 キャリア”canon-07 処方
恋愛”{西の星} 恋愛 パートナー”canon-05 位相
家族”{北の星} 育て方 子供”canon-07 処方
健康”五行 {最弱五行} 健康 臓器”canon-07 処方

位相が検出された場合の追加検索

位相検索クエリ
”冲 正面衝突 変化 リセット”
支合”支合 結びつき 夫婦 縁”
”刑 争い トラブル”
”害 裏切り 不完全燃焼”
半会”半会 異次元融合 コラボ”

コンテキスト注入位置

[System Message]
  さくら先生の人格定義(固定)

[User Message]
  ## 命式データ
  {命式JSON}

  ## 関連知識
  {RAG検索結果(最大3000文字)}

  ## ユーザーの相談
  {ユーザーの発言}

検索クエリの自動生成

def build_queries(meisei, domain=None):
    queries = []
    queries.append(f"{meisei.yousen.north} 星 性格 本質")
    queries.append(f"{meisei.yousen.south} 星 社会 仕事")
    
    if domain == "business":
        queries.append(f"{meisei.yousen.south} キャリア 転職")
    elif domain == "love":
        queries.append(f"{meisei.yousen.west} 恋愛 パートナー")
    elif domain == "family":
        queries.append(f"{meisei.yousen.north} 育て方 親")
    
    # 大運の位相が冲なら
    if current_taiun.phase.get('west') == '冲':
        queries.append("冲 正面衝突 変化 人生")
    
    return queries