【第5回】社内AIチャットシステムOla-UIを構築しよう!- ナレッジデータの準備とAI活用Q&A化編
はじめに
「社内AIチャットシステムOla-UI構築シリーズ」の第5回へようこそ!
前回(第4回)では、システムプロンプトを使ってAIの性格をカスタマイズする方法を学びました。今回は、実際の業務データをナレッジファイルとして準備し、AIを活用してQ&A形式に整形する実践的なテクニックを紹介します。
これまでのおさらい
第1〜3回
✅ Ollama環境構築
✅ PHP環境構築
✅ Ola-UI本体の設置と起動
第4回: システムプロンプトでAIの性格作り
✅ システムプロンプトの基本
✅ 部門別プロンプトの作成
✅ プロンプトのテストと切り替え
今回は、Ola-UIの心臓部であるナレッジデータを充実させます。
本記事の目標
第5回では、生の業務データをナレッジファイルに変換し、AIで効率的にQ&A化する方法を学びます。
所要時間
- 📅 約40〜60分
学べること
- ナレッジデータの収集と整理
- AIを使ったQ&A自動生成
- ナレッジセットの設定
- ベクトル化とインデックス作成
- 検索精度の向上テクニック
STEP 1: ナレッジデータとは?
1.1 ナレッジデータの種類
Ola-UIで活用できるナレッジデータには、以下のようなものがあります:
📄 社内文書
- 業務マニュアル
- 製品仕様書
- 社内規則・規定
- FAQ集
- 議事録
💼 業務データ
- 顧客情報(氏名、企業名、連絡先、取引履歴)
- 製品情報(型番、仕様、価格)
- プロジェクト情報
- 営業実績データ
📚 知識・ノウハウ
- 技術ドキュメント
- トラブルシューティング事例
- ベストプラクティス
- 業界知識
1.2 ナレッジファイルの形式
Ola-UIでは、シンプルなテキストファイル(.txt)を使用します。
推奨フォーマット
# 大見出し
## 中見出し
本文の内容...
### 小見出し
詳細な説明...
💡 Tip: Markdown形式を使うと、階層構造が明確になります!
STEP 2: 既存データの収集と整理
2.1 データソースの特定
まず、社内のどこにデータがあるかを確認します。
よくあるデータの保管場所
- 📁 共有フォルダ(ファイルサーバー)
- 📧 メール(過去の問い合わせ対応)
- 🌐 社内Wiki・イントラネット
- 📊 Excel/Wordファイル
- 💬 チャットツール(Slack、Teamsなど)
2.2 データの抽出例
例1: Excelの顧客データ
元データ(Excel):
顧客ID | 企業名 | 担当者 | 連絡先 | 取引開始日
-----|-------------|---------|-----------------|------------
001 | 株式会社ABC | 山田太郎 | 03-1234-5678 | 2025-01-15
002 | XYZ商事 | 佐藤花子 | 06-9876-5432 | 2025-03-20
テキスト化(コピー&ペースト):
顧客ID: 001
企業名: 株式会社ABC
担当者: 山田太郎
連絡先: 03-1234-5678
取引開始日: 2025-01-15
顧客ID: 002
企業名: XYZ商事
担当者: 佐藤花子
連絡先: 06-9876-5432
取引開始日: 2025-03-20
例2: PDF資料からのコピー
PDF文書をコピーして、テキストファイルに貼り付けます。
2.3 データのクリーニング
コピーしたデータには、不要な情報が含まれることがあります。
削除すべき要素
- ヘッダー・フッター
- ページ番号
- 余分な改行
- 特殊文字(文字化け)
- 画像の代替テキスト
STEP 3: AIを使ったQ&A形式への変換
3.1 なぜQ&A形式が効果的か?
RAGシステムでは、Q&A形式のデータが最も検索されやすい形式です。
メリット
- ✅ ユーザーの質問とマッチしやすい
- ✅ 検索精度が向上
- ✅ 回答が明確で分かりやすい
- ✅ ベクトル検索との相性が良い
3.2 AIによる自動Q&A生成の手順
Ola-UI自身を使って、生データをQ&A形式に変換します!
ステップ1: 変換用プロンプトの作成
メモ帳で以下の内容の system_prompt_qa_generator.txt を作成:
あなたは「ナレッジQ&A生成AI」です。
【役割】
提供されたテキストデータから、想定される質問とその回答をQ&A形式で生成します。
【生成ルール】
1. 1つのトピックに対して3〜5個の質問を生成
2. 質問は実際のユーザーが聞きそうな自然な表現
3. 回答は簡潔で分かりやすく
4. 重要な数字や固有名詞は正確に記載
5. 以下の形式で出力:
Q: (質問文)
A: (回答文)
【質問のバリエーション】
- 基本的な質問(「〜とは何ですか?」)
- 手順に関する質問(「〜するにはどうすればいいですか?」)
- 詳細に関する質問(「〜の詳細を教えてください」)
- 比較に関する質問(「〜と〜の違いは何ですか?」)
- トラブルに関する質問(「〜がうまくいかない場合は?」)
【例】
元データ: 経費精算は毎月25日が締め切りです。経理部に申請書を提出してください。
生成結果:
Q: 経費精算の締め切りはいつですか?
A: 経費精算の締め切りは毎月25日です。
Q: 経費精算はどこに提出すればいいですか?
A: 経理部に申請書を提出してください。
Q: 経費精算の手順を教えてください
A: 申請書に必要事項を記入し、毎月25日までに経理部に提出してください。
ステップ2: Ola-UIでプロンプトを適用
-
config.iniを編集:ini [SystemPrompt] default_file = system_prompt_qa_generator.txt -
サーバーを再起動
ステップ3: 生データを入力
Ola-UIのチャット画面に、以下のように入力:
以下のデータからQ&Aを生成してください:
---
製品名: Ola-UI RAGシステム
価格: 初期費用20万円、月額保守費用なし
特徴: ローカル環境で動作、複数のナレッジセット対応、ハイブリッド検索
導入期間: 約1週間
サポート: 初期設定サポート、カスタマイズ相談、運用サポート
実績: 大企業の知財管理、製造業の技術文書管理、金融機関のコンプライアンス管理
---
ステップ4: AI生成結果を取得
AIの出力例:
Q: Ola-UI RAGシステムの価格はいくらですか?
A: 初期費用は20万円で、月額保守費用は不要です。
Q: Ola-UIの特徴を教えてください
A: 主な特徴は以下の3つです:
1. ローカル環境で動作するためセキュア
2. 複数のナレッジセット対応で部門別に活用可能
3. ハイブリッド検索(ベクトル + BM25)で高精度
Q: 導入にはどのくらいの期間がかかりますか?
A: 約1週間で導入が完了します。
Q: どのようなサポートが受けられますか?
A: 初期設定サポート、カスタマイズ相談、運用サポートを提供しています。
Q: 導入実績はありますか?
A: 大企業の知財管理、製造業の技術文書管理、金融機関のコンプライアンス管理など、多数の実績があります。
Q: Ola-UIはどこで動作しますか?
A: ローカル環境(社内のサーバーやPC)で動作します。外部のクラウドサービスは不要です。
ステップ5: 結果を保存
生成されたQ&Aをコピーして、knowledge_products.txt として保存します。
STEP 4: ナレッジファイルの作成
4.1 ファイルの命名規則
knowledge1.txt ← 会社概要・基本情報
knowledge2.txt ← 製品情報
knowledge3.txt ← 営業ナレッジ
knowledge4.txt ← 技術サポート
knowledge5.txt ← 経理・総務
knowledge6.txt ← 顧客情報
knowledge7.txt ← FAQ
knowledge8.txt ← 社内規則
knowledge9.txt ← プロジェクト情報
knowledge10.txt ← その他
4.2 実践例: 製品情報ナレッジの作成
knowledge2.txt(製品情報)
# 製品情報ナレッジ
## Ola-UI RAGシステム
### 基本情報
Q: Ola-UI RAGシステムとは何ですか?
A: 社内データと対話できるAIチャットシステムです。ローカル環境で動作し、セキュアで低コストを実現します。
Q: Ola-UIの価格はいくらですか?
A: 初期費用は20万円で、月額保守費用は不要です。一度導入すれば、追加コストなしで継続利用できます。
### 技術仕様
Q: どのような技術を使っていますか?
A: Ollama(ローカルLLM)、ベクトル検索、BM25検索を組み合わせたハイブリッド検索を採用しています。
Q: 必要なスペックを教えてください
A:
- CPU: Intel Core i7以上(Ryzen 7以上)
- メモリ: 16GB以上(32GB推奨)
- GPU: NVIDIA RTX 3060以上(RTX 4060推奨)
- ストレージ: SSD 50GB以上
Q: どのOSで動作しますか?
A: Windows 10/11(64bit)で動作します。将来的にはLinux、macOSにも対応予定です。
### 導入・サポート
Q: 導入期間はどのくらいですか?
A: 標準的な構成で約1週間です。カスタマイズが多い場合は2〜3週間かかることがあります。
Q: サポート内容を教えてください
A: 以下のサポートを提供しています:
- 初期設定サポート
- ナレッジファイル作成支援
- カスタマイズ相談
- 運用サポート
- トラブルシューティング
Q: トライアルはできますか?
A: 2週間の無料トライアルをご利用いただけます。詳しくはお問い合わせください。
### 導入効果
Q: どのような効果が期待できますか?
A:
- 時間短縮: 情報検索時間が90%削減(30分→2分)
- コスト削減: 年間3,600万円削減(100名規模の場合)
- ROI: 1.2ヶ月で投資回収
Q: 導入実績はありますか?
A: 以下のような実績があります:
- 大企業の知財管理システム
- 製造業の技術文書管理
- 金融機関のコンプライアンス管理
- WebサイトのFAQシステム
### 競合との比較
Q: クラウド型RAGシステムとの違いは何ですか?
A:
【Ola-UI(ローカル型)】
- 初期費用: 20万円
- 月額費用: 0円
- セキュリティ: 高(社内完結)
- カスタマイズ: 自由
【クラウド型】
- 初期費用: 0〜50万円
- 月額費用: 50〜200万円
- セキュリティ: 中(外部サービス依存)
- カスタマイズ: 制限あり
Q: ChatGPTと何が違いますか?
A: ChatGPTは汎用的な知識を持つAIですが、Ola-UIは社内の専門的なデータに特化しています。機密情報も安心して扱えます。
### トラブルシューティング
Q: 応答が遅い場合はどうすればいいですか?
A: 以下を確認してください:
1. GPUが正しく認識されているか
2. メモリが十分か(32GB推奨)
3. config.iniのtop_k設定を下げる(10→5)
Q: 検索精度が低い場合は?
A:
1. ナレッジファイルの内容を充実させる
2. similarity_thresholdを調整(0.3→0.25)
3. Q&A形式でデータを整備する
STEP 5: ナレッジセットの設定
5.1 knowledge_manager.json の編集
各ナレッジファイルにメタデータを設定します。
C:\ola-ui\knowledge_manager.json を編集:
{
"datasets": [
{
"id": 1,
"name": "会社概要",
"description": "会社の基本情報、沿革、組織図など",
"file": "knowledge1.txt",
"enabled": true,
"category": "基本情報",
"tags": ["会社概要", "基本情報", "組織"]
},
{
"id": 2,
"name": "製品情報",
"description": "Ola-UIシステムの仕様、価格、導入事例",
"file": "knowledge2.txt",
"enabled": true,
"category": "製品",
"tags": ["製品", "価格", "仕様", "導入事例"]
},
{
"id": 3,
"name": "営業ナレッジ",
"description": "営業手法、顧客対応、提案書テンプレート",
"file": "knowledge3.txt",
"enabled": true,
"category": "営業",
"tags": ["営業", "提案", "顧客対応"]
},
{
"id": 4,
"name": "技術サポート",
"description": "トラブルシューティング、技術FAQ",
"file": "knowledge4.txt",
"enabled": true,
"category": "技術",
"tags": ["技術", "サポート", "トラブル"]
}
]
}
5.2 dataset_metadata.json の更新
検索用のメタデータを設定します。
{
"1": {
"fields": ["会社名", "設立日", "所在地", "代表者", "事業内容"],
"date_fields": ["設立日"],
"description": "会社の基本的な情報"
},
"2": {
"fields": ["製品名", "価格", "特徴", "スペック", "導入期間"],
"date_fields": [],
"description": "製品に関する詳細情報"
},
"3": {
"fields": ["顧客名", "担当者", "案件名", "進捗状況", "金額"],
"date_fields": ["商談日", "契約予定日"],
"description": "営業活動の記録"
},
"4": {
"fields": ["問題", "原因", "解決策", "対応日時"],
"date_fields": ["対応日時"],
"description": "技術サポートの履歴"
}
}
STEP 6: ベクトル化とインデックス作成
6.1 自動ベクトル化スクリプトの実行
第3回で作成した initialize_vectors.php を実行します。
cd C:\ola-ui
php initialize_vectors.php
実行結果例:
=== ベクトルストア初期化 ===
Ollama Endpoint: http://127.0.0.1:11434
埋め込みモデル: mxbai-embed-large
ナレッジファイル数: 10
[1] 📄 knowledge1.txt を処理中...
[1] チャンク数: 15
...
[1] ✅ 完了: vector_store1.jsonl(15件のベクトル)
[2] 📄 knowledge2.txt を処理中...
[2] チャンク数: 42
..................
[2] ✅ 完了: vector_store2.jsonl(42件のベクトル)
...
=== 初期化完了 ===
合計: 120件のベクトルを生成
6.2 ベクトルストアファイルの確認
C:\ola-ui\
├── vector_store1.jsonl ← knowledge1.txtのベクトル
├── vector_store2.jsonl ← knowledge2.txtのベクトル
├── vector_store3.jsonl
└── ...
各ファイルは以下の形式:
{"id":0,"text":"Q: Ola-UI RAGシステムとは何ですか?\nA: 社内データと対話できる...","embedding":[0.123, -0.456, 0.789, ...]}
{"id":1,"text":"Q: Ola-UIの価格はいくらですか?\nA: 初期費用は20万円で...","embedding":[0.234, -0.567, 0.890, ...]}
STEP 7: 検索精度の向上テクニック
7.1 Q&A形式の最適化
❌ 悪い例
Ola-UIは20万円です。
✅ 良い例
Q: Ola-UIの価格はいくらですか?
A: Ola-UI RAGシステムの初期費用は20万円です。月額保守費用は不要です。
7.2 キーワードのバリエーション
同じ内容でも、複数の表現でQ&Aを作成します。
Q: Ola-UIの料金を教えてください
A: 初期費用は20万円で、月額費用は0円です。
Q: Ola-UIはいくらで導入できますか?
A: 20万円で導入可能です。追加の月額費用はかかりません。
Q: Ola-UIのコストはどのくらいですか?
A: 初期投資20万円のみで、ランニングコストは不要です。
7.3 コンテキスト情報の追加
単独で意味が分かるように、背景情報を含めます。
❌ 不十分
Q: 価格は?
A: 20万円です。
✅ 十分
Q: Ola-UI RAGシステムの価格はいくらですか?
A: Ola-UI RAGシステムの初期費用は20万円です。この金額には、システム本体、初期設定サポート、導入トレーニングが含まれます。月額保守費用は不要で、一度導入すれば追加コストなしで利用できます。
7.4 数字と単位の明記
❌ たくさん削減できます
✅ 年間3,600万円削減できます(100名規模の場合)
❌ すぐに使えます
✅ 約1週間で導入完了し、すぐに使い始められます
❌ 効率が上がります
✅ 情報検索時間が90%削減(30分→2分)
STEP 8: ナレッジの動作確認
8.1 Ola-UIサーバーの起動
cd C:\ola-ui
start_server(ローカルの場合の起動バッチ).bat
8.2 ナレッジ管理画面で確認
- ブラウザで
http://localhost:8000/knowledge_manager.htmlを開く - 各ナレッジセットの状態を確認
- 有効化されているか確認
8.3 検索テスト
テスト1: 基本的な質問
Ola-UIの価格を教えてください
期待される応答:
Ola-UI RAGシステムの初期費用は20万円です。月額保守費用は不要です。
【参考情報】
- 初期費用: 20万円
- 月額費用: 0円
- 含まれるもの: システム本体、初期設定サポート、導入トレーニング
【出典】
製品情報ナレッジ(knowledge2.txt)
テスト2: 詳細な質問
Ola-UIとクラウド型RAGシステムの違いを教えてください
期待される応答:
Ola-UIとクラウド型RAGシステムの主な違いは以下の通りです:
【Ola-UI(ローカル型)】
- 初期費用: 20万円
- 月額費用: 0円
- セキュリティ: 高(社内完結)
- カスタマイズ: 自由
【クラウド型】
- 初期費用: 0〜50万円
- 月額費用: 50〜200万円
- セキュリティ: 中(外部サービス依存)
- カスタマイズ: 制限あり
【コスト比較(3年間)】
- Ola-UI: 20万円
- クラウド型: 1,800〜7,200万円
Ola-UIは3年間で最大7,000万円以上のコスト削減が可能です。
【出典】
製品情報ナレッジ(knowledge2.txt)
テスト3: ナレッジ絞込機能のテスト
- 「ナレッジ絞込」セクションを展開
- キーワード「価格」を入力して絞込
- 絞り込まれた結果のみが検索対象になります
STEP 9: ナレッジの継続的な更新
9.1 記憶機能を使った追加
チャット中に新しい情報を記憶させることができます。
使い方
この情報を記憶してください:
Ola-UIは、2026年10月の大改修(バージョン2.0相当の進化)を提供済みです。
新機能として、音声入力とマルチモーダル対応が追加されます。
AIが応答:
承知しました。以下の情報を記憶しました:
【記憶内容】
- リリース時期: 2026年4月
Ola-UIは、2026年10月の大改修(バージョン2.0相当の進化)を提供済みです。
- 製品: Ola-UI バージョン2.0
- 新機能: 音声入力、マルチモーダル対応
この情報はナレッジに追加され、今後の質問で活用されます。
9.2 定期的なベクトル再生成
ナレッジファイルを更新したら、ベクトルストアを再生成します。
cd C:\ola-ui
php initialize_vectors.php
9.3 バージョン管理
ナレッジファイルは定期的にバックアップします。
C:\ola-ui\backups\
├── knowledge2_20260129.txt ← 2026年1月29日版
├── knowledge2_20260205.txt ← 2026年2月5日版
└── ...
STEP 10: 大量データの効率的な処理
10.1 バッチ処理スクリプト
大量のExcelデータをQ&A化するスクリプトを作成します。
batch_qa_generator.php
<?php
/**
* バッチQ&A生成スクリプト
*/
// Excelファイルからデータを読み込み(簡易版: CSV想定)
$csv_file = 'customer_data.csv';
$output_file = 'knowledge6_generated.txt';
if (!file_exists($csv_file)) {
die("Error: {$csv_file} が見つかりません\n");
}
$fp_out = fopen($output_file, 'w');
fwrite($fp_out, "# 顧客情報ナレッジ(自動生成)\n\n");
$fp_in = fopen($csv_file, 'r');
$header = fgetcsv($fp_in); // ヘッダー行をスキップ
$count = 0;
while (($row = fgetcsv($fp_in)) !== false) {
$customer_id = $row[0];
$company = $row[1];
$contact = $row[2];
$phone = $row[3];
$start_date = $row[4];
// Q&A生成
$qa = <<<EOT
## 顧客ID: {$customer_id}
Q: 顧客ID {$customer_id} の企業名を教えてください
A: {$company} です。
Q: {$company} の担当者は誰ですか?
A: {$contact} です。連絡先は {$phone} です。
Q: {$company} との取引開始日はいつですか?
A: {$start_date} から取引を開始しました。
EOT;
fwrite($fp_out, $qa);
$count++;
}
fclose($fp_in);
fclose($fp_out);
echo "✅ 完了: {$count}件の顧客データをQ&A化しました\n";
echo "出力ファイル: {$output_file}\n";
?>
実行方法
php batch_qa_generator.php
トラブルシューティング
Q1: ベクトル化が失敗する
原因: Ollamaが起動していない、またはメモリ不足
解決策:
1. ollama serve を実行
2. 他のアプリケーションを終了してメモリを解放
3. knowledge.txtのサイズを小さくする(分割する)
Q2: 検索精度が低い
原因: Q&A形式になっていない、またはキーワードが不足
解決策:
1. AIを使ってQ&A形式に変換
2. キーワードのバリエーションを増やす
3. config.iniのsimilarity_thresholdを下げる(0.3 → 0.25)
Q3: 日本語が正しく検索されない
原因: トークナイザーの問題
解決策:
1. JapaneseTokenizerLib.php が存在するか確認
2. 日本語専用の埋め込みモデルを使用(nomic-embed-text等)
Q4: ナレッジが多すぎて遅い
原因: ベクトル検索の対象が多すぎる
解決策:
1. ナレッジセットを分割(部門別など)
2. 不要なナレッジセットを無効化
3. top_k を減らす(10 → 5)
まとめ
本記事で学んだこと
✅ ナレッジデータの種類と収集方法
✅ AIを使ったQ&A自動生成
✅ ナレッジファイルの作成とフォーマット
✅ ナレッジセットの設定
✅ ベクトル化とインデックス作成
✅ 検索精度向上のテクニック
✅ 記憶機能を使った継続的更新
✅ 大量データのバッチ処理
所要時間
- ⏱️ データ収集・整理: 約15分
- ⏱️ Q&A生成: 約20分
- ⏱️ ベクトル化: 約10分
- ⏱️ 動作確認: 約15分
- ⏱️ 合計: 約60分
シリーズ完結!
おめでとうございます!🎉
これで、Ola-UIシステムの構築から実践的な活用までを完全にマスターしました!
全5回のまとめ
第1回: Ollama環境構築編
- AIの心臓部をインストール
第2回: PHP環境構築編
- Webサーバーの準備
第3回: Ola-UI本体の設置と起動編
- システムの完成と初起動
第4回: システムプロンプトでAIの性格を作る編
- AIのカスタマイズ
第5回: ナレッジデータの準備とAI活用Q&A化編(本記事)
- 実践的なデータ活用
今後の発展
さらに学びたい方へ
- カスタマイズ編: PHPコードの改造、API連携
- 運用編: 大規模ナレッジの管理、パフォーマンスチューニング
- 応用編: 複数部門での活用、外部システム連携
参考リンク
著者: Ola-UI サポートチーム
公開日: 2026年1月29日
更新日: 2026年1月29日
カテゴリ: チュートリアル, ナレッジマネジメント, AI, Ola-UI
💬 この記事への質問・コメント
シリーズを最後までご覧いただき、誠にありがとうございました!
ご質問やご意見がありましたら、以下までお気軽にお問い合わせください:
📧 Email: support@ola-ui.com
🐦 Twitter: @OlaUI_Official
💼 LinkedIn: Ola-UI
タグ
#OlaUI #ナレッジマネジメント #RAG #AI #Q&A生成 #データ整備 #チュートリアル #完結