AI開発実践:API不要の完全ローカルRAG ── Ollama + ChromaDBで構築するAIアシスタント

AI

「AIを作ってみたいけれど、クラウド接続や課金設定でつまずいてしまった…」
そんな経験はありませんか?

2026年、AI開発のトレンドは「クラウド依存」から、プライバシーと自由度を両立した「完全ローカル完結型」が注目を集めつつあります。

シリーズ第3回となる今回は、外部APIを一切使わない、自分だけの「ローカルRAG」を構築します。
前回のChromaDB(記憶)に、強力なローカルLLM実行エンジン「Ollama(知能)」を合体。

あなたのPC内で全てが完結するため、機密情報の流出を恐れる必要も、利用制限に悩まされることもありません。
Anaconda環境を整え、「最強のプライベートAIアシスタント」への第一歩を踏み出しましょう。

第1章:はじめに ── クラウドAPIの壁と、ローカルLLMへの回帰

AI開発の第一歩として、Google GeminiやOpenAIのAPIを使ってみようとした方は少なくないかもしれません。
しかし、2026年現在のAI開発現場では、ある「変化」が起きています。

それは、クラウドAPI(外部サービス)への依存から卒業し、自分のPC内でAIを動かす「ローカルLLM」への回帰です。

1.1. なぜ今、ローカル完結が注目されているのか

これまで主流だったクラウドAPI連携には、特に初心者にとって無視できない「3つの壁」がありました。

  1. 環境の壁: APIキーの発行、支払い情報の登録、そして複雑な認証ライブラリのセットアップ。
  2. 制限の壁: 「429 Resource Exhausted(利用制限)」や「404 Not Found」といった、初心者には解決困難な外部エラーによる足止め。
  3. 安心の壁: 「自分のプライベートなデータや機密文書を、外部のサーバーに送信していいのか?」という心理的・セキュリティ的な懸念。

これらの壁を一度に飛び越えてくれるのが、今回の主役である Ollama(オラマ) を使ったローカル環境 LLM です。

1.2. 本記事のゴール:自身のPCが「自律型AI」に変わる

本記事では、前回の記事(第2回)で作成した「ChromaDB(記憶)」を、ローカルで動くAIの「脳」に直接つなぎ合わせます。

  • APIキー不要: 面倒な登録作業は一切ありません。
  • 完全無料・無制限: 何万回テストしても、1円もかかりません。
  • オフライン動作: インターネットを切断しても、あなたのPC内の知識を使ってAIが回答します。

「環境構築で躓いて、AI開発を諦める人を一人でも減らしたい」。
そんな思いを込めて、2026年時点で最も確実、且つ最も自由な「完全ローカルRAG」の構築手順を解説していきます。

第2章:環境の母港を整える ── AnacondaとIDEの「正しい」接続

AI開発に限らず、プログラム開発において、もっとも多くの人が挫折するのは「コードの書き方」ではなく、実のところ「環境構築」である場合が多いです。
「ライブラリを入れたはずなのに、エディタが認識してくれない」という問題は、プロの現場でも頻発します。

今回は、2026年現在の高機能エディタ(Antigravityなど)を使いこなしつつ、Python環境の「ねじれ」を完璧に防ぐ「プロンプト起動法」をマスターしましょう。

Pythonなどの開発環境の構築がお済みでない方は、まずは入門シリーズ 第1回記事を参照のうえ、環境構築の作業を完了させておいてください。

2.1. 仮想環境:プロジェクトごとに「専用の部屋」を持つ

Python開発では、システム全体の環境を直接いじるのはお勧めできません。
ライブラリ同士の衝突を防ぐため、まずは作成した専用の仮想環境を正しく使いこなす必要があります。

私の場合は、AI開発専用のフォルダ「ai_test」を作成しています。

2.2. 確実な手法:Anaconda Promptからエディタを起動する

この方法であれば、環境変数を設定したり、エディタの設定画面でPythonのパスを探し回る必要はなくなります。
「正しい環境を有効にしたプロンプトから、エディタを召喚する」のが最も安全で、確実な方法です。

  1. Anaconda Prompt を起動します。
  2. 以下のコマンドを実行し、環境を有効にします。
    • conda activate ai_test
  3. 以下のコマンドで、プロジェクトの作業ディレクトリへ移動します。
    黄色アンダーラインの個所は、自身の環境に合わせて読み替えてください)
    • cd c:\Users\(ユーザー名)\ai\ai_test
  4. ここがポイント! そのままAnaconda PromptからAntigravityを起動します。
    • antigravity .
    • ※ 「.」(ドット)は「現在のフォルダを開く」という意味です。

この起動方法であれば、エディタは起動した瞬間の環境(ai_test)をそのまま引き継ぎます。
これで「エディタがライブラリを認識しない」という悲劇とはおさらばです。

2.3 ライブラリの最終点検

エディタ内のターミナルが正しく環境を認識しているか、最後の点検をしましょう。
今回の「脳」となる ollama ライブラリをインストールし、pip によってインストールされているライブラリの一覧を確認します。

# 環境が有効な状態で実行
pip install ollama

# ollamaがインストールされたことを確認
# ついでにchromadbの存在も確認しておく
pip list | Select-String "ollama|chromadb"

実行結果に ollamachromadb の名前が表示されれば、準備OKです。
あなたのPCの中に、RAGを動かすための「盤石な土台」が完成しました。

第3章:【知能】の召喚 ── OllamaによるローカルLLMのセットアップ

土台となる環境が整ったら、次はRAGの「思考」を司るAIモデルを導入します。
今回は、2026年現在、世界中で多くのエンジニアに愛用されているOllama(オラマ)を使います。

3.2. Ollama本体をインストールする

Ollama本体をインストールし、AIの「脳」となるモデルをダウンロードしましょう。

AntigravityとAnaconda Promptが起動している場合は、Ollamaのパスを認識させるため、いったん閉じておいてください。

  1. Ollama公式サイトからWindows版をダウンロードし、インストールします。
  2. インストール完了後、Anaconda Promptを起動し、そこからAntigravityを起動します。
  3. Anaconda Prompt(またはAntigravityのターミナル)で以下のコマンドを実行します。
    • ollama pull llama3.1
    • ※ このコマンドにより数GBのデータがダウンロードされるため、ある程度の時間がかかります。

2026年現在で、日本語の理解力と動作の軽さのバランスが最も良いのがこの llama3.1 です。

3.3. Pythonから声をかけてみる(疎通確認)

モデルの準備ができたら、PythonからAIに話しかけてみましょう。
これが成功すれば、RAGの完成は目の前です。

Antigravityで新しいPythonファイル(例:test_ai.py)を作成し、以下のプログラムをコーディングして実行してみてください。

test_ai.py
import ollama

# AIに話しかける
response = ollama.chat(model='llama3.1', messages=[
    {'role': 'user', 'content': 'こんにちは!自己紹介をしてください。'},
])

# 返答を表示
print("🤖 AIからの返信:")
print(response['message']['content'])

PCスペックによっては、返信が返ってくるまでにある程度の時間がかかる場合がありますが、実行してAIから以下のような自己紹介が表示されれば大成功です!

実行結果
🤖 AIからの返信:
私は仮想のAIです。自然言語処理が可能なChatbotです。
日本語や英語などのさまざまな言語に対応しています。
このチャットでご質問や相談がある方は 、お気軽にどうぞ!

どうでしょう、うまく動作しましたか?
もし、プログラムの実行に成功したならば、その感動はなかなかのものではないでしょうか。

第4章:【合体】RAGの心臓部を実装する ── 記憶と知能の結合

土台(環境)、記憶(ChromaDB)、知能(Ollama)がすべて揃いました。
いよいよこれらを連結して、RAG(検索拡張生成)の心臓部を動かします。

4.1. RAGの仕組みをおさらい

これから作成するプログラムは、以下の3ステップを自動で行います。

  1. 検索(Retrieval): ユーザーの質問に関係がありそうな知識を、ChromaDBから探し出す。
  2. 拡張(Augmentation): 見つけた知識を、AIへの指示文(プロンプト)に付け加える。
  3. 生成(Generation): 渡された知識を元に、Ollama(AI)が回答を生成する。

4.2. 記憶の「器」と「知識」を作成する

新しいデータベースを作成し、知識を覚えさせます。

以下のプログラム(create_db.py)をコーディングし、実行してください。

create_db.py
import os
import chromadb
import ollama

# 1. 失敗しないパス設定:プログラムがある場所にDBを作成
base_dir = os.path.dirname(os.path.abspath(__file__))
db_path = os.path.join(base_dir, "chroma_db")

client = chromadb.PersistentClient(path=db_path)
collection = client.get_or_create_collection(name="local_rag_demo")

# 2. 独自の知識をインプット(AIが知らない2026年の情報を覚えさせる)
collection.upsert(
    documents=["2026年のAI開発は、Ollamaによるローカル完結型RAGが主流となっています。"],
    ids=["doc1"]
)
print("✅ 記憶の器を作成し、知識をインプットしました。")

実行して、以下のように結果が表示されればデータベース作成に成功しています。

実行結果
✅ 記憶の器を作成し、知識をインプットしました。

💡 コードのポイント

  • os.path.dirname(os.path.abspath(__file__))
    • これは「このプログラムファイル自体が置いてあるフォルダ」を指します。これを基準にすることで、読者がデスクトップで動かしても、ドキュメントフォルダで動かしても、必ず同じ場所に chroma_db フォルダが作られるようになります。
  • collection.upsert
    • add ではなく upsert(アップサート)を使うのがコツです。これは「なければ追加、あれば更新」という意味。これなら何度プログラムを実行しても、「データが重複してエラーになる」というトラブルを防げます。
  • documents=["..."]
    • ここに書いた文章が、AIの記憶、あるいはAIが後で「カンニング」するための教科書になります。

4.3. 実装:知識を元に回答するAIアシスタント

登録した知識を使ってOllamaに答えさせてみましょう。

以下のプログラム(rag_app.py)をコーディングし、実行してみてください。

rag_app.py
import os
import chromadb
import ollama

# 登録時と「全く同じパス」を見に行く
base_dir = os.path.dirname(os.path.abspath(__file__))
db_path = os.path.join(base_dir, "chroma_db")

client = chromadb.PersistentClient(path=db_path)

# 登録済みのコレクションを呼び出す
try:
    collection = client.get_collection(name="local_rag_demo")
except Exception:
    print("❌ コレクションが見つかりません。先に登録を実行してください。")
    exit()

# ユーザーの質問
query = "2026年のAI開発のトレンドは?"

# 検索
results = collection.query(query_texts=[query], n_results=1)
context = results['documents'][0][0]

# 生成
prompt = f"【参考知識】:\n{context}\n\n質問: {query}"
response = ollama.chat(model='llama3.1', messages=[{'role': 'user', 'content': prompt}])

print(f"\n🤖 AIの回答:\n{response['message']['content']}")
実行結果
🤖 AIの回答:
ローカル完結型RAGが主流です。

💡 コードのポイント

  • collection.query(query_texts=[query], n_results=1)
    • ChromaDBが最も得意とする仕事です。あなたの質問(query)と、保存されている文章を「意味の近さ」で比較し、最も似ているものを1通(n_results=1)だけ選んできます。
  • プロンプトの組み立て(f-string)
    • コードで言えば、「prompt = f”【参考知識】:\n{context}\n\n質問: {query}”」この1行がRAGの正体です。AIにただ質問するのではなく、「ここにヒント(context)があるから、これを読んで答えてね」という指示文に作り変えています。
  • ollama.chat
    • ここで初めてAIが登場します。AIはインターネット上の知識ではなく、あなたが直前のプロンプトで渡したヒントだけを見て、答えを生成します。

第5章:おわりに ── あなただけの自律型AI、ここがスタートライン

5.1. AI開発の基礎体力作りも大詰め

今回の構築、いかがでしたでしょうか。
Anaconda Promptからエディタを召喚する「母港」の確立や、プログラム自身の場所を基準にデータを読み書きする「絶対パス」の指定など、少しマニアックな技術も登場しました。

これらは一見遠回りに見えますが、実は「どんな環境でも、誰のPCでも100%動くアプリ」を作るために不可欠な工夫のひとつです。

この土台さえあれば、今後どんなに複雑なAIアプリを開発する際にも、足元が揺らぐことはありません。

5.2. 自由で安全な「ローカルRAG」の価値

今回構築したAIエージェントシステムは、あなたのPCの中だけで完結しています。

  • 安全性: あなたが覚えさせた知識も、AIへの質問も、一切外部に流出することはありません。
  • 自由度: インターネットがなくても、深夜でも、好きなだけAIと試行錯誤できます。
  • 無限の可能性: 今回は1行の知識でしたが、ここにお手持ちのPDFやドキュメントを流し込めば、それはもう「あなた専用の知能」です。

5.3 次回予告:AIと「会話」をしよう

さて、今回作成したプログラムがローカルLLM開発の土台知識となることに疑いの余地はありませんが、「決められた質問に答える」というレベルの、いわばRAGのテスト走行でした。

AIの真骨頂は「対話」にありますよね。
そこで次回は、プログラムを書き換えることなく、その場で自由に質問を投げかけられる「対話型インターフェース」の実装に挑戦します。

わずか数行のコードを追加するだけで、あなたのスクリプトは「使い捨てのコード」から「本物のAIチャットアプリ」へと進化を遂げます。

コメント

タイトルとURLをコピーしました