初めてのRAGシステム構築

初めてのRAGシステム構築

💎 鉱石の採掘からインサイトの発掘へ

Core Keeper(コアキーパー) の地下バイオームを探索しているときでも、スモールビジネスの複雑なスプレッドシートと格闘しているときでも、「情報過多」は私たちのラスボスです。

RAG(検索拡張生成、Retrieval-Augmented Generation) システムは、AIに専用のガイドブックを渡すようなものです。一般的な学習データに頼るのではなく、ゲームのWikiや研究ノート、法的な契約書といった「あなた独自のデータ」を参照することで、ピンポイントで正確な答えを出してくれます。

ここでは、Gemma 3 4BEmbeddingGemma を使って、プライベートなローカルナレッジベースを構築する方法をご紹介します。

🛠️ 「クラフト」ステーション(技術スタック)

これを作るにあたって、「ローカルファースト」のアプローチをとります。つまり、データがあなたのPCから外に出ることは決してないということです。秘密基地の座標(あるいは大切なクライアント情報)を安全に保つには完璧ですね。

  • 頭脳(LLM): gemma3:4b - Googleのコンパクトで非常に効率的なモデルです。
  • 司書(エンベッダー): embeddinggemma - 検索できるようにデータを「インデックス化」する特化型モデルです。
  • サーバー: Ollama - 自分のPCでこれらのモデルを動かすためのエンジンです。
  • インターフェース: AnythingLLM - チャット画面のような見た目ですが、文書保存などの面倒な作業をすべてこなしてくれる使いやすいアプリです。

メモ:2026年のローカルAIの最高の魅力の一つは、ツールが「プラグアンドプレイ」であることです。技術的なスキルに合わせて、サーバーとUIを自由に組み合わせて使うことができます。たとえば、Ollamaの代わりにLM Studioを使ったり、AnythingLLMの代わりにOpen WebUIを使ったりすることも可能です。色んなツールを試してみてください!

📖 ステップ1:素材を集める

まずは、「信頼できる情報源(Source of Truth)」を特定しましょう。

  • ゲーマーなら: ボスの攻略法やクラフトのレシピをまとめるために、Core Keeper Wiki を使ってみましょう。
  • プロフェッショナルなら: PDFのフォルダやプロジェクトのログ、あるいは専門的なウェブサイトなどが該当します。

⚙️ ステップ2:ワークショップの準備(Ollama)

(ちょっとしたヒント:このような4Bモデルをスムーズに動かすには、約8GBのVRAMがあると良いですよ!)

Ollamaをダウンロードして、ターミナルで以下の2つのコマンドを実行し、「モデル」をダウンロードしてください。

# Download the language model
ollama pull gemma3:4b

# Download the embedding model
ollama pull embeddinggemma

🖥️ ステップ3:インターフェースの設定(AnythingLLM)

AnythingLLMを開き、以下の手順に従ってモデルを連携させます。

[Read more]

GeminiとGemma、まだどっちがどっちか混乱していませんか?

GeminiとGemma、まだどっちがどっちか混乱していませんか?

GoogleのAIニュースを追っていると、「Gemini(ジェミニ)」 という名前も聞くし、「Gemma(ジェンマ)」 という名前も聞きますよね? 名前があまりにも似ていて、まるで双子の兄妹みたいだし、一体何が違うのか首をかしげたくなることがあります。

技術的に言えば、GeminiはGoogle DeepMindが開発した巨大なマルチモーダルAIモデル群で、GemmaはGeminiと同じ技術で作られた軽量化されたオープンモデルです……が!

こんな説明だと堅苦しいですよね? そこで私はいつも、周りの人にこの二つの違いを説明するとき、ラーメンに例えているんです。今日はその「美味しい」例え話を皆さんにもお届けしますね。

Gemini(ジェミニ):大企業が運営する高級ラーメン専門店

まずGeminiは、Googleという巨大企業が直接運営している最高級ラーメンレストランだと考えてください。

私たちがこのラーメンを食べるにはどうすればいいでしょうか? 直接そのお店(gemini.google.com)に行くか、出前を頼む必要があります。厨房の中でどんな秘伝のスープを使っているのか、火加減はどうしているのか、私たちが見ることはできません。

でも、席に座りさえすれば、プロのシェフが最高の材料とノウハウで作った完璧なラーメン一杯が、目の前にサッと提供されます。私たちはただ美味しく楽しむだけでいいんです。味と品質は、その会社が誇る最高レベルが保証されています。

Gemma(ジェンマ):家に持ち帰れる名店の袋麺

一方で、Gemmaはそのお店が出している家庭用袋麺です。

お店で出される出来立てのラーメンほど豪華ではないかもしれません。でも重要なのは、あの有名店の同じレシピと技術を元に作られているという点です。おかげで、袋麺の中でも圧倒的な美味しさを誇ります。

何より最大の魅力は、無料で家に持ち帰れること。自分のコンピュータにダウンロードさえすれば、ネットが切れてもいつでも調理できます。

この「袋麺(Gemma)」の本当の面白さは、家に持ち帰ってから始まります。(Gemma model fine-tuning

  • 好みを尊重(LoRA Fine-tuning): 基本の味も素晴らしいですが、自分の好みに合わせてネギを刻んで入れたり、卵を落としたりすることもできます。特定の分野に特化するように、ちょっとしたチューニング(味付け)をするわけです。
  • 新しい創造(Full Model Tuning): いっそのこと、麺やスープを使ってラポッキ(ラーメン+トッポギ)やプデチゲ(部隊鍋)のような、全く新しい料理に作り変えてしまうことだって可能です。

Geminiというお店では決まったメニューしか食べられませんが、Gemmaという袋麺なら、皆さんが好きなように味を変える自由が与えられているわけですね。

Gemmaverseに行けば、こうした様々な美味しい試みを見ることができますよ。

でも、注意点もあります!

もちろん、袋麺を作るにはいくつか準備が必要です。

  1. 自分だけのキッチン: ラーメンを作る鍋と火力の強いコンロ、つまり高性能GPUを積んだコンピュータが必要です。
  2. 調理器具: お玉や箸といった道具、つまりフレームワークやツールといった環境が整っていなければなりません。
  3. 料理の腕前: 何より一番大事なのは、水をどれくらい入れて何分茹でるべきかを知っている料理(開発)の知識が必要だという点です。料理が全くできないと、美味しい袋麺も「絵に描いた餅」になってしまうかもしれませんから。

まとめると

  • Gemini(ジェミニ): 「面倒なことは抜きで、Googleシェフが作ってくれる一番美味しいラーメンを今すぐ食べたい!」😋
  • Gemma(ジェンマ): 「自分の鍋を使って、自分の口にぴったり合う自分だけのラーメンを直接作ってみたい!」🧑‍🍳

さて、GeminiとGemmaの違い、少し身近に感じられましたか? 快適にサービスを楽しみたいならGeminiを、自分だけのAIをDIYしてみたいならGemmaを選んでみてください。

今日も皆さんのキッチン(PC)で、美味しいコーディングができますように!

4コマ漫画の裏話

今回の記事と一緒にご紹介した4コマ漫画、いかがでしたか?

実は、この漫画が誕生するまでにはちょっとした裏話があるんです。皆さん、Google JapanのX(Twitter)で誕生した、あのかわいいChromeのキャラクターを見たことはありますか?

あの子を見ているうちに、ふと「うちのGeminiとGemmaにも、あんなキャラクターがいたらいいのになぁ」と思ったんです。そこで、少し恥ずかしいですが、私の拙い画力を総動員して、まずはとても簡単なラフを描いてみました。

Gemini and Gemma character draft

(本当に「簡単」なラフですよね?あはは😅)

次に、この不格好なキャラクタースケッチとおおよそのストーリーを持って、「ナノバナナ」という愛称がついているGeminiの画像生成機能のところへ行きました。「この子たちを使って、こんなストーリーの4コマ漫画を描いて!」とお願いしたんです。

そうしてAIの力を借りて素敵な絵が完成しましたが、最後に重要な作業が残っていました。私のブログは3ヶ国語で運営されています。

世界中の読者の皆さんにこの可愛い子たちの物語を楽しんでもらえるよう、各言語に合わせて吹き出しのセリフを翻訳・修正して、最終的な漫画を完成させました。

Gemini and Gemma translate

楽しんでいただけたら嬉しいです!

[Read more]

玉を紡ぐ心で:AI時代のコーディング

玉を紡ぐ心で:AI時代のコーディング

「三斗の玉も綴じてこそ宝(どんなに立派な玉も、糸でつなげなければ宝にはならない)」(韓国の諺)

Geminiを使って何かを作るたび、ふとこの古い諺を思い出します。

今のGeminiは、私に「コード」という名の玉を際限なく差し出してくれます。かつては一つひとつ丹精込めて削り出さなければならなかった貴重な玉が、今や足元に転がるほどありふれたものになりました。

しかし、それらが散らばったままであれば、ただのデータのかけらに過ぎません。結局、それを一つの完成された「形」へと紡ぎ上げるのは、やはり私の役目なのだと感じています。

だからこそ最近、私は自分を 「クリエイター」 と定義したくなるのです。

「OK」ボタン以上の価値

もちろん、AIが書いたコードを見ながらエンターキーや OK ボタンを押していると、妙な自己嫌悪に陥ることもあります。

「私はただご飯を食べてOKボタンを押すだけの、(生産的な)うんこ💩 製造機に過ぎないのだろうか?」

だからこそ、より一層気を引き締めようと努めています。Geminiが差し出す玉の中からどの色を選び、どの順番で繋げば美しいネックレスになるのかを考えること。自分のすべての感覚と知性を、その 「企画」と「意図」 に集中させるべきだと自分に言い聞かせています。

そうでなければ、自分が本当に人間の開発者なのか、それともデータを与えれば結果を吐き出す生産的アルゴリズムに過ぎないのか、苦悩の沼にハマってしまいそうだからです。(まあ、何にせよ結果は出ているので「非常に生産的な存在だ」と自分を励ましてはいますが 😄)

コードが消えた場所に「意図」だけが残る

生成AIがコーディングのコストをゼロへと収束させている今、多くの人が共感する言葉があります。

「誰もがクリエイターになれる時代。重要なのは『How(どう作るか)』ではなく『What(何を作るか)』だ」

先日、とても興味深いGitHubリポジトリを見つけました。whenwords という場所なのですが、驚いたことにコードは一行もなく、ただ「仕様書(Spec)」だけで構成されたオープンソースライブラリなのです。

これを見て、私も似たような実験を始めてみたくなりました。名付けて history-of-video-game です。

🔗 Github: bebechien/history-of-video-game

ゲームの「設計図」という玉を集める

私が最初に手にした玉は、古典の名作 Pong です。

このリポジトリが今後どのようなネックレスになるかは、私にもまだ分かりません。ですが、かつてリリースされたゲームたちの仕様書を一つずつ集めてみようと思っています。

実際にこの仕様書がどうやって「宝」に変わるのか気になる方は、Geminiが直接実装した こちらのリンク をクリックしてみてください。

PONG built by Gemini

今の技術でこれを作る方法は、驚くほど簡単です。gemini.google.com「Canvas」 機能をオンにし、ゲームの仕様書(pong.md)を渡すだけ。そして一言、 「このゲームを作って(Build this game)」 と頼めば、魔法のようにコードが完成します。

Canvas in Gemini

Prompt to Gemini

コードはAIがいつでも、何度でも書き直せる時代です。だからこそ、そのゲームが 「どのようなルールで動くべきか」 という本質的なロジックこそが、より大切になるのだと信じています。

Pull Requestでも、新しいゲームのリクエストでも、小さな貢献でも大歓迎です。一緒に玉を紡いでくださる方を待っています。

私たちが迎える未来

もしかすると未来には、アプリストアから完成されたゲームをダウンロードすること自体が昔話になるかもしれません。

SNSで友達が投稿したゲームの「仕様」を見て、「あ、このルール面白そう」とその場で取り込み、自分なりのスタイルにアレンジして遊ぶ。そんな文化が一般的になるのではないでしょうか。

すでに Astrocade のようなサービスが、そんな実験的な未来を見せてくれています。

玉があふれるこの時代、皆さんは今日、どんな宝物を紡いでいますか?

[Read more]

超軽量AIで、自分好みの記事だけが届くフィードをDIYした話。(皆さんもできます!)

超軽量AIで、自分好みの記事だけが届くフィードをDIYした話。(皆さんもできます!)

正直、ノイズが多すぎませんか?

AI関連のニュースを追いかけるのは本当に大変です。「技術っぽくて面白そう」なタイトルを斜め読みするのに膨大な時間を費やしても、結局自分が求めている情報とは全然違ったりしますし…。キーワードフィルターも便利ですが、微妙なニュアンスまでは拾ってくれません。

僕が欲しかったのは、単なる正規表現の文字列ではなく、「雰囲気」でニュースをフィルタリングする方法でした。

そこで最近、EmbeddingGemma Tuning Lab というツールで遊んでいます。これは、Googleの embeddinggemma-300m モデルをファインチューニングして、自分だけの好みを理解させる新しい Hugging Face Space です。

バイブス・チェック (The Vibe Check)

このプロジェクトの一番の魅力は、巨大なLLMのプロンプト戦略に頼っていないところです。代わりに EmbeddingGemma という、3億(300M)パラメータの軽量モデルを使用しています。これは埋め込み(Embedding)モデルなので、テキストをベクトルに変換してくれます。モデルの仕組みやトレーニング方法について詳しく知りたい方は、僕のブログ記事をチェックしてみてください。

核心となるアイデアはユニークですが効果的です。このシステムは、MY_FAVORITE_NEWS(私のお気に入りのニュース)というハードコードされたアンカーフレーズに対する「意味的類似度(Semantic Similarity)」のスコアに基づいています。

デフォルトの状態では、モデルはそのフレーズが何を意味するのか知りません。しかし、ファインチューニングを行うことで、モデルが認識する世界を少しだけ歪めることができます。あなたが 実際に 好きな記事はその魔法のフレーズに数学的に近づき、嫌いな記事は遠ざけられるようになるのです。

「EmbeddingGemma Tuning Lab」: 3つの実行モード

EmbeddingGemma Tuning Lab は単なるトレーニングスクリプトではありません。実験スタイルに合わせて選べる3つの異なるアプリが含まれています。

  1. トレーナー (Gradio): ここで魔法がかかります。Gradioアプリを立ち上げると、現在の Hacker News のトップ10ストーリーが表示されるので、気に入ったものにチェックを入れるだけ。「Fine-Tune」をクリックすると、裏側で MultipleNegativesRankingLoss を使ってモデルが更新されます。検索結果がリアルタイムで自分の好みにシフトしていく様子を見るのは結構楽しいですよ。
  2. ターミナルビューワー (CLI): 真のターミナル愛好家のためのツールです。ライブフィードをスクロールできるインタラクティブなCLIアプリで、モデルのスコアに基づいて記事が色分けされます。「良いバイブス」なら緑、スキップなら赤といった具合です。
  3. ウェブビューワー (Flask): モデルの仕上がりに満足したら、軽量な Flask アプリを使ってみましょう。ローカルサーバー上でスタンドアロンの「ムードリーダー」としてデプロイすれば、自分だけのパーソナライズされたフィードをバックグラウンドで流しておけます。

試してみてください

ニュースの無限スクロールをやめて、ニュースの「バイブスチェック」を始めたいなら、ぜひこのSpaceをチェックするかコードを入手してください。データの取得、トレーニングループ、可視化まで全部やってくれます。

  • Spaceをチェック: EmbeddingGemma Tuning Lab
  • コードを見る: リポジトリには、データセットのエクスポートや、ファインチューニング済みモデルをZIPでダウンロードするために必要なものがすべて揃っています。

それでは、良いチューニングライフを!

[Read more]

AI時代、それでも「つくる喜び」について

AI時代、それでも「つくる喜び」について

機械の方が速くできるとしても、それでも私たちが「つくる」理由。

私は文章を書き連ねることが好きです。特に、難しくて複雑な概念を、誰にでも分かるように柔らかく噛み砕いて説明できた時に喜びを感じます。

絵を描くことも楽しみの一つです。いわゆる「エンジニアの絵」レベルのアマチュアな腕前ですが、百の言葉よりも一枚のすっきりとしたダイアグラムの方が、はるかに強力だと信じているからです。

そして何より、私はコーディングを愛しています。自分の指先から、実際に動く何かが生み出されるそのプロセスが本当に好きなのです。

生成AIという巨大な波に足を浸したのは2023年、Stable Diffusionが流行し始めた頃でした。それ以前からゲームAIの分野を覗き見してはいましたが、今振り返ってみると、あの時に始まった変化がITエコシステム全体を根底から揺るがしているように思えます。

当時、私は西洋の画風を中心に学習されたモデルたちに、妙な渇きを感じていました。そこで自らデータセットを削り出し、朝鮮時代の画家・申潤福(シン・ユンボク)の筆致をAIに教え込む楽しさに、しばらくのめり込みました。

しかしふと、あまりにも手軽に溢れ出るハイクオリティな画像たちを前に、自分自身が限りなくちっぽけに感じる時期が訪れました。その圧倒的な感覚の中で私を支えてくれたのは、「新しい画風を教え、方向性を定めること」は依然として人間の領分であるという事実でした。

似たような無力感は、執筆においても訪れました。ChatGPTとGeminiへと進化するモデルたちを見ながら、AIの作文能力が私を遥かに追い越していく過程を目の当たりにしました。しかし結局のところ、何を書くかというテーマを決め、自分の名前で世に出る文章の重みに耐えながら最後のピリオドを打つのは「私」であるという点、その責任感だけはAIには奪えないのだと気づきました。

コーディングとて同じでしょうか。まだ私が直接タイピングする比重は高いですが、新しいモデルが出るたびに、その進化の速度には開いた口が塞がりません。

すでに文章や絵においては、私よりAIの方が上手(うわて)です。そのため、私が粗いドラフトを投げ、AIが滑らかに整え、私が最終的な検収と調整を行うという協業プロセスが日常に定着しました。モデルが賢くなればなるほど、私が手を加える部分は減り続けています。遠からず、コーディングもまたこのプロセスを辿ることになるだろうという予感がします。

昨日参加したAIワークショップで、誰かが私に重みのある質問を投げかけました。

「未来において、人間は一体何をすべきなのでしょうか?」

今もそうですが、これからはより多くのことがAIによって自動化されていくでしょう。

しかし、私のような人間は、依然として自らの手で何かを作りたいと願うはずです。たとえAIという強力なツールの力を借りたとしても、その創造の始点と意図は、依然として「人」にあるはずだからです。

AIが自ら作りたくて生成したものと、人が意図を持って作ったものは明確に区別されるでしょうし、その価値もまた異なる基準で測られることになるでしょう。

それはまるで、椅子が一つ必要な時に、私たちが取れる選択肢が多様であることと似ていないでしょうか?

もちろん、お金を払って快適な完成品を買うこともできます。しかしある人はIKEAで部品を買ってきて自分で組み立てる過程そのものを楽しみ、ある人は道具を揃えて木材を裁断しゼロから作り上げ、またある人は本当に原初に立ち返り、手作業で木を削る苦労を自ら買って出ることもあります。

今私たちが、工場で大量生産された既製品と、職人の手工芸品にそれぞれ異なる対価を支払っているように、未来の私たちも、単に結果物に含まれた「過程」と「価値」によって、互いに異なる意味を付与しながら生きていくことになる気がします。

[Read more]