0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【やってみた】SLM+RAGでAIエージェント 3-1 ワークフロー作成

Last updated at Posted at 2025-10-30

SLM+RAGでAIエージェントを構築する

親記事

前記事

1. RAGチャットのワークフロー作成

  • 前記事の時点でLangflowまでAPIが疎通しているので、本項ではLangflowのRAGチャットワークフロー作成だけを扱います。
    (そこまでは紆余曲折あったので、興味がおありの方は親記事から、適当に見たいところをご覧ください)

  • 前提として、この記事までにWSL2を使ったUbuntu環境上(WD-Ubuntu-PC)にpython仮想環境(pc-env)が構築済みで、その環境内に必要なパッケージを全て登録してあります

  • なお、ワークフロー作成前に、前項で設定したLMStudioがAPIモードで起動している事が必要です。
    (ノートが一部、ここから情報を拾うので)
    image.png

① WSL環境へのログイン

  1. 管理者権限でのPowerShellを起動します。
  2. 以下のコマンドで実証環境(WSL)を起動し、wdadmin ユーザーでログインします。
    PS> wsl -d WD-Ubuntu-PC
    

② 仮想環境への切り替え

WSLターミナルにログイン後、Python仮想環境 pc-env に切り替えます。

# wslターミナル内で以下を実行
$ cd
$ source pc-env/bin/activate

③ Langflow起動

# wslターミナル内で以下を実行
$ langflow run

image.png
数件errorが出るが、google周りの外部モジュールであり、関係あるワークフローを組まない限り使わないのでOK
「Open Langflow」でURL(起動ポート番号含む)が出る

④ ブラウザを起動して、上記URLを開く

image.png

+New Flowをクリック
image.png

⑥ テンプレート中央「Vector Store RAG」を選択

(これは厳密にはRAGチャットだけではなく、RAGチャットへの書き込みも含むフローのテンプレート)

image.png

⑦ これで出てくるのは、OpenAII(クラウド)に接続し、astlaDB(同じくクラウド)を利用するフローなので、参考以上には意味がない。

(必要な部分を切り替えてみた結果を出します)

⑧ 必要なノードを作る。

最初、フローには「Compornents」(Langflowにさせたい動作の集合)が出ている。
image.png
これを「Discover more Compornent」に切り替える。
すると、非常に豊富なコンポーネントが出て来るので、ここから
image.png
Chromaをクリックで開き
image.png
ChromaDBをクリックして作る。
image.png
同じくLMStudioを開き、LM StudioとLM Studion Embeddingsをクリックして作る。
image.png

⑨-1 ノード接続(1)LMStudio

Promptの繋がる先を「LM Studio」に切り替え。
(OpenAIを消してLMStudioに)
image.png

繋ぎ方は、青や赤で指定されているポートをクリックして引っ張り、接続先に持って行くと自動で繋がります。
その次に「Base URL」を設定。
これは、前項でAPIを設定したLM Studioのエンドポイント(同じ環境でLM Studioが起動していれば取って来れる)。
image.png
Base URLを設定後、そこで「Model Name」を選択すると、自動的にBase URLからリストを引っ張って来て選択肢に入れてくれるので、使いたいモデル(SLM)を選ぶ。
この実証環境の場合、gemma-3n-e4bをダウンロードしてあるので、これを選択。
LM StudioのModel Response先をChat OutputのInputsにつなぐ。
image.png
なお、設定時はノードをクリック後、「…」ハンバーガーボタンをクリックして「Save」を選んでください。
image.png
設定変更と見做された時は以下の表示が出るので「Replace」で上書きしてください
image.png

これで、OpenAIの有料サービスに繋がる代わりに、ローカルで起動しているモデルに繋がっています。

⑨-2 ノード接続(2)ChromaDB

Chat InputのChat MessageをChroma DBのSearch Queryに
image.png
さらに、Persist Directoryを/home/wdadmin/pc-env以下(この場合はshare等)に設定
これはChromaDBのデータファイルが収まる場所です。起動したユーザーの権限で書ける場所になるので、
/home/wdadmin配下ですが、仮想環境から起動しているのでさらにその下に置きました。
そして、DataFrameをParserのDataFrameに接続。
これが意味するのは「ユーザーが入力したプロンプトをChromaDBに流して検索し、その結果をParserに流して新しいプロンプトにし、モデルに流すという仕組み」です。

さらに、EmbeddingにLM Studio Embeddingsを接続します。
image.png

ここで「Embeddings」に特別な注意が必要です。
キーワード検索などでは必要ないのですが、ベクトル検索を行うデータベースをノードに選んだ場合、
入力には普通のテキストをベクトルデータに変換するためのモデルが別途、必要になります。
このモデルは、LMStudioでロードしておかねばなりません。
つまり「ベクトルでRAGを行うには、モデルが同時に2つ必要になるのです」。
但し、これらが働くタイミングはそれぞれ違うので、同時にGPUを占領する事なく、RAG実行中に衝突する事はありません。
これをするための、特別に教育されたモデルは、名前に「embed」を冠しています。
LMStudioで、API画面で選ぶと複数のモデルをロードする事が出来ます(事前にダウンロードしておく必要がありますが/ダウンロード方法は前項を参照)
image.png
今回はテストなので、非常に小型のnomic-embedding-embed-text-v1.5を選択しました
image.png
これがロード済みの状態なら、先のLM Studioのノードと同じく、LM Studio Embeddingsのノードにも、モデルを正しく設定できます。
image.png

これで、RAGチャット自体の準備は出来ています。

⑨-3 ノード接続(3)ChromaDB(データ登録用)

このワークフロー設定には、RAGチャット用以外に、RAGチャットのためのデータを登録するフローがもう一つあります。

こちらも、⑨-2のように設定したLMStudio EmbeddingsとChromaDBのノードを作り、接続してください。
image.png
※これらはもう1組作って繋いでください(さっき使ったノードを使うと、フローが混乱しますので)。

Split Textのchankを、Input Dataに繋いでください。
このフローは、テキストファイルを登録すると動き、チャンクに分解したデータをChromaDBに入れるためにあります(今回はテスト予定がないですが・・・)

⑩ RAGチャットテスト

「Playground」のボタンを押下
image.png
チャット画面が出て来るので
image.png
Hello Worldには応答しました。
image.png
日本語は分かるか、と聞いたら少しわかるそうです(笑)。
image.png

一応、RAGチャットのRAGそのものは試していないのですが、「RAGチャット可能な」ワークフローは作れて、実行も出来たので、次のテストはまた、日とフローを改めて行う事にします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?