---
title: "Oracleに尋ねる"
description: "サイト内のAIアシスタントの仕組み — ドキュメント上のRAG、あなたの自社のOllamaで提供されています。"
---

各ページのコーナーにあるアンバー色のボタンは、**Nibiru Oracle** です — このドキュメンテーションに基づいたAIアシスタントです。ルーティング、モジュール、CLI、Smartyレイヤー、`pageAction()` の意味について尋ねることができます。それはそのソースを引用します。

## それが動いているのは何ですか

デフォルトでは、Oracleは**あなたのインフラストラクチャ上で完全に動作します**：

| レイヤー | バックエンド | デフォルトモデル |
|---|---|---|
| チャット（回答生成） | Ollama on `https://api.neuronetz.ai` | `qwen2.5-coder:14b` |
| エンベディング（RAG検索） | Ollama on `https://api.neuronetz.ai` | `nomic-embed-text` |

有料のAPIキーはありません。データはあなたのネットワーク内に留まります。既に実行している5-GPUのOllamaクラスターが負荷を処理します。

有料プロバイダを使用したい場合は、Claude（チャット）とOpenAI（埋め込み）を設定します。`LLM_PROVIDER=anthropic` および/又は `EMBED_PROVIDER=openai` を設定し、対応するAPIキーも追加してください。コードパスは同一です。

## 仕組み
```mermaid
flowchart LR
  A[User question] --> B[Embed via Ollama<br/>nomic-embed-text]
  B --> C[Cosine search<br/>against pre-computed<br/>doc-chunk index]
  C --> D[Top-K chunks]
  D --> E[Ollama chat<br/>qwen2.5-coder:14b<br/>system + retrieved context]
  E --> F[Answer + source list]
  F --> G[Render in chat UI]
```
1. **ビルド時に**、ドキュメントサイトはすべてのMarkdownページを走査し、H2/H3境界で約600トークンずつに分割し、各チャンクに`nomic-embed-text`で埋め込み、結果を`public/oracle-index.json`に書き出します。データベースは必要ありません。
2. **リクエスト時に**、ユーザーの質問も同じように埋め込み、コサイン類似度で最も近いチャンクを取り出し、それらをチャットモデルのシステムプロンプトに組み立てます。
3. **チャットモデルは**、ユーザーの言語で回答し、ソースチャンクをURLで引用します。

## ファイル

| ファイル | 機能 |
|---|---|
| `scripts/lib/providers.mjs` | 共有チャット + 埋め込みアダプター (Ollama / Anthropic / OpenAI)。 |
| `scripts/build-oracle-index.mjs` | ビルド時に `public/oracle-index.json` を構築します。 |
| `public/oracle-index.json` | コミットされた/ビルド出力の埋め込みインデックスです。 |
| `src/pages/api/oracle.ts` | チャットウィジェットが POST する SSR エンドポイント。診断用の GET も提供しています。 |
| `src/components/CosmicHeader.astro` | フローティングランチャー + チャット UI です。 |

## ニューロネットワークの初期設定

Oracleが使用する2つのモデルを取得します：
```bash
curl https://api.neuronetz.ai/api/pull -d '{"name":"qwen2.5-coder:14b"}'
curl https://api.neuronetz.ai/api/pull -d '{"name":"nomic-embed-text"}'
```
`qwen2.5-coder:14b` は既にインストール済み（確認済み）。`nomic-embed-text` が不足している；これがないと、Oracle はチャットのみ（RAGなし）モードで動作します。

## 設定を行う

Oracleは環境変数から設定を読み込みます。適切なデフォルト値が組み込まれています。
```bash
# Default mode (Ollama on neuronetz.ai)
LLM_PROVIDER=ollama                                 # default
OLLAMA_BASE_URL=https://api.neuronetz.ai            # default
OLLAMA_CHAT_MODEL=qwen2.5-coder:14b                 # default
OLLAMA_EMBED_MODEL=nomic-embed-text                 # default

# Optional fallbacks
LLM_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-...
ANTHROPIC_MODEL=claude-haiku-4-5-20251001

EMBED_PROVIDER=openai
OPENAI_API_KEY=sk-...
OPENAI_EMBED_MODEL=text-embedding-3-small

# Behaviour
ORACLE_TOP_K=6
ORACLE_MAX_TOKENS=800
```
## ディアグノスティックエンドポイント

`GET /api/oracle` は現在の構成（シークレットなし）を返します：
```bash
curl https://nibiru-framework.com/api/oracle
{
  "status": "ok",
  "llm":   { "provider": "ollama", "ollamaUrl": "https://api.neuronetz.ai",
             "model": "qwen2.5-coder:14b" },
  "embed": { "provider": "ollama", "ollamaUrl": "https://api.neuronetz.ai",
             "model": "nomic-embed-text" },
  "index": { "present": true, "chunks": 177,
             "provider": "ollama", "model": "nomic-embed-text" }
}
```
新しくデプロイされたコンテナが予想したバックエンドを使用していることを確認するのに便利です。

## プライバシー

- 質問と会話履歴は、あなたのOllamaサーバーに送られます。デフォルトのOllama設定では、ドキュメントサイトやAnthropic/OpenAIによって**保存されません**。
- OpenAIキー（使用されている場合）は、埋め込みのみで呼び出されます。
- Oracleウィジェット自体では、分析情報やクッキーが設定されません。

## Nibiruトレーニングモデルを使用する理由は何ですか？

ロードマップ（[AI Roadmap](/en/ai/roadmap/)を参照）は、[Training Corpus](/en/ai/corpus/)のエクスポートでLoRAを微調整することです。これにより、チャットモデル自体がNibiruネイティブになります。それが準備でき次第、Oracleの`OLLAMA_CHAT_MODEL`が微調整されたモデルに切り替わり、システムプロンプトが単純化されます。同じコードですが、より賢い回答が得られます。

## 試してみましょう

オラクル（アンバーの惑星、右下）を開き、以下のいずれかを試してみてください。

- *"新しいモジュールを作成する方法は?"*
- *"`pageAction`は何をするの?"*
- *"JSONエンドポイントを処理する方法を示してください."*
- *"Wie schreibe ich eine Migration?"* (Deutsch funktioniert.)
- *"認証フローを教えて"* (日本語でも機能します.)
