【その他メモ】
・コンテキストエンジニアリング→LLMが質の高い回答をできるよう、限られた入力領域において何を与え何を捨てるかをアプリケーション全体で構築する技術
・ニューラルネットワークやTransformerも機械学習の一部
・LLMでのトークン生成の仕組み→テキストを入力にそのあとに続く1つのトークンを出力し、入力+出力を次の出力に・・・という処理を繰り返す
・SelfAttentionでトークン同士の関係性から意味を調整し、FeedForwardで関連知識を付与する
・内部的に付与される特殊トークンにより立場を判断し会話的な出力をしている
・末尾>冒頭>中盤の順に入力を重視
・パブリッククラウドベンダのAPI→認証や閉域化がやりやすく信頼性が高い構築を組みやすい
・トレンドはすぐ変わるのでモデル比較に時間をかけすぎない
・APIは事前購入でスループットを確保したり予約で割安にできる
・自身の環境にデプロイ可能なモデルも有
・出力スキーマ定義、指示プロンプト、ツール定義、会話履歴の順でコンテキストが読み込まれる
・max_output_tokensの指定がないとリソースを大きく確保しようとする→空き待ちが発生しやすくなるなど有
・ツール利用
ツール定義をパラメータとしてLLMに渡す
ツール定義をコンテキストとして解釈し、必要なタイミングでツール実行に必要なパラメータを出力
ツール実行(LLMでなくアプリで実行し結果をLLMに返す)
結果から回答を生成
・ツールアクセスのロジックが独自実装となり無駄が大きい→MCPで標準化
・直前のプロパティや各変数名を分かりやすい名前にしておくことで出力精度を上げやすい
・指示プロンプトの指針 P83~
・Few-Shot-Promptingで会話履歴に例を持たせるとコンテキストの末尾により影響が大きくなる
・出力スキーマの中に中間出力のプロパティを含める ex)P107
・正規化処理や距離の計算は事前に行いオンラインでの探索効率を上げる
・リランク→LLMに検索結果を再評価してもらう
・精度向上にはハイブリッド検索やリランクをまずは試す
・フィルタ付き検索
・クエリ加工、拡張→タイプミス修正や知識補完、StepBack。また、複数クエリの生成。
・RAGのインデックス作成までの流れ P136
・データの世界はGarbage In, Garbage Out
・意味ある区切りでチャンク化
・チャンク内で文脈が漏れないようにする
・RAG評価→理想データを用意し回答を確認、LLMに評価させる(LLM as a Judge)
・CAG
・AIエージェント⇒目標指向、自律性、ツール利用、自己評価・修正
・ルールベース処理、シンプルなAI/ML処理、AIエージェントをコンポーネントとしてワークフローを構築
⇒まずは現行作業整理から
・単一プロンプトでいけるところまで試し制度が出ない場合に少しずつワークフロー化を検討
・ワークフロー設計 P186~
・途中経過を保存しておくことで中断の時の再開にも利用できる
・Skill→サンドボックス環境でコンテキストを必要に応じて段階的に読み込みつつタスクを実施
⇒使うかわからにタスクや後半でしか使わないコンテキストを段階的に読み込める
・情報の価値は次の判断に使うか
・バッチAPIの活用がコスト削減に寄与することも有