Create_RAG

背景 gmailの返答を自動化するプロジェクトを推進しています。 そこで、RAGですね。もうだいぶ時間が経っていますが、しっかりやっていきたいと思う。 RAG = 「Retrieval-Augmented Generation」 これを理解できればもう仕組みを理解したも同然です。 が一応説明しておきます。 RAGの仕組み めっちゃ簡単にいうと、 ベクトルデータベースに保存されたナレッジから 問い合わせと類似するナレッジを検索し引っ張り出し それを元にGEN AIに回答を作らせる という流れになります。 1でベクトルデータベースにナレッジを保存する時には、元の自然言語をベクトル表現に変換した物を格納する必要があります。 このベクトル変換器のことを「Embedding model」と言います。 x: 自然言語 f: Embedding model とすると y = f(x) で得られたy(とそれに対応するx)をベクトルDBに格納しておくわけですね。 x_q: 問い合わせが来た時 y_q = f(x_q) から得られるy_qと類似しているy_1, y_2, y_3, ,,, y_nを検索し、 それに対応するx_1, x_2, x_3, ,,, x_n を出力し、 ans = LLM(x_1, x_2, x_3, ,,, x_n) とう感じで回答を作らせるという流れです。 Embedding modelsの選定 こちらの記事に書いてある通り、Embedding modelの選定がRAG全体の回答生成性能に大きく影響する。 まあ、chatGPTに聞いた結果これが一番いいのかな。 BAAI/bge-base-en 今回RAGを構築するにあたり使うソフト vector DB: qdrant embedding model: BAAI/bge-base-en LLM: phi4 14b on ollama (@ rtx 3060 12g) Langchainなどの統合的なライブラリは使わない。なぜなら自由度が低いから。 vector DBでの検索も普通にREST APIでできるので問題なさそう。 ...

June 6, 2025 · 2 min · 265 words · Me

Googleapi Gmail Autoreply

背景 受託開発先の方からLLMを使って問い合わせや予約業務の自動化ができないかと聞かれた。 もちろんできますよ、と僕は答えたわけです。 しかし、一回gmailの内容をローカルに持って来ないと始まりませんよね?? なので、gmailのメールをサーバに持ってくるためにgoogle apiを叩きます。 構成 webフロントエンド -> サーバ(アプリ) -> google api google apiの設定方法 1. プロジェクト作成 https://console.cloud.google.com/ にアクセス 以下の写真のgoogle cloudロゴの隣にあるボタンをクリック。この画像で言うと、gmail api access(ここから新しいプロジェクトを作る) プロジェクト名(例:gmail-auto-reply)を入力し、「作成」 2. Gmail API を有効にする google cloudロゴの隣にあるボタンから、先ほど作ったプロジェクトにプロジェクトを変更する 左側メニュー「APIとサービス」 → 「ライブラリ」を押す 検索ボックスに Gmail API と入力し、クリック。 enableボタンを押す 3. OAuth 同意画面を設定する 左側メニュー「APIとサービス」→「OAuth同意画面」 次のような画面が出てくる。get startedを押す 以下の情報を入力する ユーザータイプ 外部(基本はこれでOK) アプリ名 任意(例:Auto Mailer) サポートメール 自分のGmailでOK 開発者連絡先情報 自分のメールアドレス 4. 認証情報を作成(OAuth 2.0 クライアントID) 左メニュー「認証情報」→「+認証情報を作成」→「OAuth クライアントID」 以下を入力する アプリケーションの種類 → 「Web アプリ」 名前は何でもOK(例:auto-mail-backend) 「承認済みのリダイレクトURI」に以下を追加: http://localhost:3000/auth/google/callback https://yourdomain.com/auth/google/callback (実際に使うサーバ) 作成ボタンを押す。クライアントシークレットが表示されるのでめももしくはダウンロード 5 スコープを追加(必要なら) ここまでで設定が完了。次にやることは以下。 ...

May 10, 2025 · 2 min · 363 words · Me

LocalLLM

何の記事 ローカルホストにLLMをインストールし、性能を検証。 またapiを介して利用可能にする方法を検証。 最後に、社内のことを学ばせて、こういう質問が来たらこう答えてねってのを教え込ませる。 背景 自宅には計算資源がたくさんある。 それをネットワーク越しに使えるということがわかったので、LLM等の重い処理も自宅で動かして、軽量なフロントエンドと連携させる、 みたいなことが非常に簡単にできるということがわかった。 LLMで何をしたいか??お客さんからの問い合わせに自動で答えるチャットボットを作りたいのよね。 うん、社内の情報とかを学ばせないといけない。その辺のファインチューニングの仕方も知りたい。 参考記事 [ollamaについて] (https://bhrtaym-blog.com/?p=407) [ローカルLLMをGPUで動かす] (https://zenn.dev/giana12th/articles/7fc22c8cbdbb5e) ollama公式サイト ollamaのgithub proxmoxで動かすための下準備 GPUをパススルー必要がある。 あと、一番大きいモデルでは何倍とメモリが必要なんだっけ? 64GB以上あれば問題ないらしい。のでとりあえずそれをインストールしようと思う。 あとは、ProxmoxでGPUをパススルーする方法。 あー、「ホストマシンのBIOSにて、VT-x, VT-d を有効にする。(VT-d は PCI Passthrough で必須)」 する必要があるらしい。 しかし、実はCPUの仮想化をした時点でGPUの仮想化もできるようになってたっぽい。 でした準備は完了した。がメモっておくか proxmoxのコンソールから、add hardware PCIeを選択し、GPUを入れる。 nvidia-driverをインストール nvidia-smiが使えるか確認。認識されているかも確認 ちなみに、ここでcudaのバージョンが出てくるけど、これは対応しているcudaのバージョンを示しているだけで実際にcudaがインストールされたわけではありません。そこを気を付けてください。 cuda(ランタイム)をインストール しかし、これはdocker等で、cudaが入ったコンテナを配ってもらえれば終わる話なので、無視でいいのかな??ちょっと調べてみよう。 proxmoxのCPUのtypeをhostに変える。これをやらないとavx命令が使えない。これゆえGPUが使われなくなってしまう。 ollamaのインストール dockerもある。 ollama on docker これを参考にnvidia-container-toolkitをインストールする感じか。 docker install後の苦戦 docker上のollama上で、llama3を動かすことには成功したんですよ。しかし、どうやらGPUでは動かせていいない。これはなんでかわかりました。 time=2024-07-19T00:29:37.242Z level=WARN source=gpu.go:225 msg="CPU does not have minimum vector extensions, GPU inference disabled" required=avx detected="no vector extensions" CPUがavx命令をサポートしていないとGPUにオフロードされないみたいですね。 ほかのところでも同じことが言われていました。 GPU support requires the AVX instruction set, check your CPU model. つまり、ProxmoxでどうにかしてavxをOnにする必要があるということです。 これのやり方ですが、cpuのtypeをホストにしたら解決するようです。ってことで変えて再起動します。 ...

July 7, 2024 · 1 min · 199 words · Me