Techカンファレンスのセッション情報を話すRAGを作ってみた話
- RAGは「検索」と「回答文生成」の2つで構成されている
- RAG = Retrieval Augmented Generation = 検索拡張生成
- RAGを体験するには、ChatGPTで「次の情報を元に、以下の質問に回答しなさい」として、引用した文章を張り付け、それを元にした回答を求める
- 長すぎる文書をAPIに投げると、トークン数を使い切り、会話を続けられない
- 回答につながる文章のみ残し、余分な文章を削り文字数を減らす
{context}
に効率よく、細かすぎず荒すぎず分割した参考情報を盛り込む- Webページをcontextにする場合は、HTMLタグや無駄な改行、ALTタグがない画像が余分な情報を除去してMarkdownで再構成をした
LangChain.js
でも整形- まずは、10件から20件程度で試すのが良い
設計について
- 回答生成処理の実装
- 検索結果をプロンプトにべた書き
- どんな文章をプロンプトに入れるべきか?を検証する
- データ前処理・インデックス
- ほしいフォーマットテキストをインデックス
- ベクトルの次元やチャンクサイズを検証
- 結合・Retrieverを作りこむ
retrievalの評価ツール「ranx」を使ってRAGの改善をやってみる話
- RAGの評価は「RAGパイプライン評価」が多い
- 小さくテストをしたい = Retrieval の評価をする
- 正解データ(Qrel)と実際の検索結果データ(Run)を用意し、ranxを通して評価結果を得る
- クエリとクエリに返すコンテキストそれぞれにIDを付与し、その一覧をTSVファイルに用意
- 使用するデータや実装により、結果は大きく変わる。必ず、自分のデータでするのが良い。
- ranxはシンプル。学習コストが低い、必要なファイルはTRECのみ、フレームワークに依存せず、柔軟性が高い。
- ranxは低コスト、実績ある評価手法
- デメリットはある。generationの評価は別途必要
- フレームワーク、プラットフォーム等の事例が少ない
- 評価メトリクスの知識は必要
非エンジニアの税理士が学んだこと
- AIに奪われる職業ランキングで必ず税理士が入っている = 税理士の業務で効率化ができるのでは?
ChatGPTで入力業務が効率化できるのか
- ChatGPT 4のOCR機能なら、レシートの読み込みが可能。くしゃくしゃにしてもちゃんと読める。
- ChatGPTに頼った場合、税法上での正しい答えが返ってこない懸念はある
LLMを使って占いができるのか
- 生年月日などのデータを与えて回答させるとハレーションを起こす
- LLMではなく、ロジックをプログラミングして回答させるほうが精度が高い。
- RAGで出てくる回答は定型文。占いの需要に対して十分ではない
AIで生成したものをAIでチェックしてる話
- DROBEのカルテに記すスタイリストからのコメントにフォーカス
- ストアにてユーザー宛に表示するメッセージについて、パーソナライズで対応するスタイリストが使うコメントを汎用的にして活用することを考えた
- スタイルが似たユーザーのコメントから、パーソナライズのコメントを削除し、使える文章パターンを用意したい
- パーソナライズの文章から、個人情報やサービスの表記が消えた万人向けになったか?をGPT4とGPT3.5の2つで検証
- 人の手を介さないので、修正漏れがあるかもしれない
- GPT4で生成したメッセージをGPT4で検証しても見逃す懸念
- GPT3.5でも検証すると精度が高まると仮説を立てた
- トークンを大量に消費する
- 表現を頑張ってほしいところはある
- プロンプトで制約を加えて伝え、精度を高めている
Kong AI Gateway – LLMと上手く付き合うためのKong流アプローチ
- API Gateway の会社が AI の話をする
- AIを使う場合にAPIがついて回る
- 異なるLLMモデルにアクセスする場合、それぞれに認証、認可が必要。それをAPIで束ねる
- プラグインで機能拡張。AIの機能を追加した
- LLMでの結果をもとに、他のLLMを参照する
- AI Proxy
- ヘッダでLLMを変えるのみで、利用するLLMが切り替わる
- AI Prompt Decoder
- プロンプトで回答する言語を指定することができる
- AI Prompt Template
- プロンプト内にテンプレートを用意し、外から入るパラメータを含めて精度の高いプロンプトを投げることができる。
生成AIエージェントの時代
- 「AIエージェント」とは、環境を認識し、目標を達成するために自律的に行動する存在。
- 自分でやることを考え、様々なツールを活用し、目標に向かって進む
- 完全自律型エンジニアAIエージェント「Devin」が出てきた
- 生成AIは、ちゃんとした説明をしないとちゃんとした回答が得られない
- AIエージェントなら、使う人の能力にかかわらず、AI自身がプロンプトを生成して期待する回答が得られる
- AIエージェントは、個性、記憶、計画、行動で構成される
- タスク分解能力がある。カレーライスを作る例だと、工程を分解して必要な作業を把握することができる
- Generative Agents
- LLMに25人分の性格付けをして生活させる社会シミュレーションをした論文
- 創発現象がおこった
- ChatDev
- LLMによるマルチエージェントでソフトウェア会社でチャットアプリケーションを作るシミュレーションをしたところ、協働による成果が発生し、実際にチャットアプリケーションが開発された
- MAGIS
- LLMによるマルチエージェントを用いて、GitHubのイシューを解決させた
- 生成AIの始め方
- 技術面
- 関数呼び出し(Function Calling)による外部実行性を試す
- フレームワークを試す(AutoGPT, BabyAGI…)
- 論文に当たる
- 事業企画
- 生成AIエージェントの技術面と社会性の側面を分けて考える
- エージェントらしさの理解 → GPT4oでマインクラフトを例に
- GPT4oが直接マインクラフトを触る = 技術面で可能かもしれない
- 人間がマインクラフトを触る楽しさを考慮する = GPT4oは直接操作しない
- 技術面の観点 or 社会性の観点に分けて考える必要がある
- 人間同士の関係性と同じくらいバラエティに富んだ関係性
- エージェントらしさの理解 → GPT4oでマインクラフトを例に
- マルチエージェントによる協調動作の可能性について考える
- 生成AIエージェントの技術面と社会性の側面を分けて考える
- 技術面
ChatGPTでなんか作ってみた
- Google I/O 2024 が公開された
- ARグラスでデモ
- INMO Air2 Android 10 端末
- コントローラー Galaxy Watch 4 + WowMouse アプリでマウス
- 手軽に作れる
- スマートウォッチによるインターフェイスはとても良い
- GPT4o画像認識の精度がとても良い
- カメラの視野と画像は少しずれる
- 音声認識の速度が遅い
- UI開発が難しい
- FunctionCallでもっとアシスタント的なことができそう
- 記憶するパーソナル機能を加えたい