オープンソース RAG ナレッジ ベースのローカル展開ナニー レベルのチュートリアル: Ollama + AnythingLLM 民営化 Q&A
🛒 開発に関する深い知識のない運用および保守担当者およびビジネス担当者向けの、ゼロコードでプライベートナレッジベースを構築するための完全なチュートリアル。
チュートリアルの目的
このチュートリアルでは、2 つのオープン ソース コンポーネントを使用してローカル RAG ナレッジ ベースを構築します。このナレッジ ベースは、ドキュメントやソース付きの回答をアップロードすることで Q&A に使用でき、オフラインで実行できます。
- Ollama: 大規模なモデルをローカルで実行するための推論サービス。
AnythingLLM: インターフェイス (ベクトル ライブラリと Q&A を含む) を備えたワンストップのナレッジ ベース アプリケーション。
全プロセスでコードを記述する必要がなく、運用保守、運用担当者、ビジネス担当者に適しています。
準備チェックリスト
- [ ] コンピュータまたはサーバー: 16G 以上のメモリを推奨。 macOS/Linux/Windows が使用可能です。
- [ ] テストドキュメントを複数用意します(PDF/Word/TXT/Markdown可)。
- [ ] ネットワークが利用可能です (初回にモデルとソフトウェアをダウンロードする必要がありますが、それ以降はオフラインで使用できます)。
- [ ] 8 ~ 20G のディスク領域を予約します (モデルのサイズによって異なります)。
- [ ] (オプション) NVIDIA グラフィック カードにより、応答速度が大幅に向上します。
バージョンのヒント: 次のバージョン番号、モデル サイズ、ダウンロード アドレスは、公式リアルタイム ページの影響を受けます。モデル プル コマンドは Ollama 公式モデル ライブラリの対象となります。
ステップ 1: Ollama をインストールして構成する
Ollama 公式 Web サイトにアクセスして、対応するシステム インストール パッケージをダウンロードします (macOS の場合は [アプリケーション] に直接ドラッグします。Linux の場合はインストール スクリプトを使用します。Windows の場合はインストール パッケージを使用します)。インストール後、ターミナルを開いて次のことを確認します。
「」バッシュ オラマ --バージョン 「」
通常は、「ollama version 0.x.x」のようにバージョン番号が出力されます。
ステップ 2: ローカル モデルをプルする
ナレッジ ベースには 2 つのモデルが必要です。1 つは 回答の生成 用、もう 1 つは ドキュメントのベクトル化 (埋め込み) 用です。まず対話モデルをプルします。
「」バッシュ オラマ プル qwen2.5:7b 「」
次に、ベクトル化モデルをプルします。
「」バッシュ オラマプル nomic-embed-text 「」
モデルの準備ができていることを確認します。
「」バッシュ オラマリスト 「」
モデルのサイズが大きいため、ネットワーク速度によっては、初回のプルに時間がかかる場合があります。モデルの名前と利用可能なリストは、Ollama の公式リアルタイム ページに準拠します。
ステップ 3: AnythingLLM をインストールする
AnythingLLM公式サイトからデスクトップ版インストールパッケージをダウンロードしてインストールします(macOS/Windows/Linux対応)。初めて起動するときは、初期化ウィザードに入ります。
- 「ローカル ベクター ライブラリ」タイプを選択します (組み込みの LanceDB がデフォルトで使用され、追加のインストールは必要ありません)。
- LLM プロバイダーとして Ollama を選択します。
- Ollama アドレス「http://localhost:11434」を入力し、前の手順で取得した「qwen2.5:7b」を選択します。
- 埋め込みプロバイダーとして Ollama を選択し、モデルとして
nomic-embed-textを選択します。
設定を保存すると接続が完了します。
ステップ 4: ナレッジ ベースを作成し、ドキュメントをアップロードする
- AnythingLLM の左側にある [ワークスペース] をクリックし、「Company System」などの新しいワークスペースを作成します。
- ワークスペース→「ドキュメントのアップロード」に入り、用意した分割ドキュメントをドラッグします。
- [プロセス] をクリックし、ベクトル化が完了するまで待ちます。
ベクトル化が成功すると、各ドキュメントには「処理済み」ステータスが表示され、検索可能なベクトル ライブラリに入ったことを示します。
ステップ 5: Q&A を開始し、トレーサビリティを確認する
ワークスペースのダイアログ ボックスに「ドキュメントによると、払い戻しプロセスには何ステップかかりますか?」などの質問を入力します。
期待されるパフォーマンス:
- 回答の内容は、一般的な言葉ではなく、アップロードした文書に基づいています。
- 引用されたソースの断片は回答の下に表示されます。クリックすると、元のテキストの場所にジャンプできます。
AnythingLLM の「チャット」設定を開き、「引用を表示」をオンにして、すべての回答の出典を表示します。
ステップ 6: エフェクトのチューニング
答えが満足できない場合は、次の順序で試してください。
- チャンクの調整: チャンク サイズとオーバーラップは AnythingLLM 設定で構成できます (チャンク サイズは 500 ~ 1000、オーバーラップは 50 ~ 100 が推奨されます)。
- より強力なモデル (
ollama pull qwen2.5:14bまたはそれより大きなモデル) に変更します。 - より良いベクトル モデルに変更します。高次元の埋め込みモデルを使用し、構成を切り替えます。
- 補足文書: 不足している知識をナレッジ ベースに追加し、再度処理します。
ステップ 7: プロンプトの単語と回答スタイルをカスタマイズする
AnythingLLM を使用すると、システム プロンプト (システム プロンプト) をカスタマイズして、チームの雰囲気により適した回答を作成できます。たとえば、「チャット設定」に次のように入力します。
あなたは会社のナレッジアシスタントです。アップロードされた文書に基づいてのみ回答し、でっち上げないでください。
簡潔な中国語で答え、最初に結論を述べ、次に根拠を述べます。
証拠が見つからない場合は、「データベースに該当するコンテンツがありません」と明記されます。
「」
プロンプトの言葉をカスタマイズすると、回答をより「自分らしく」することができ、幻覚を軽減する効果的な手段でもあります。
## ステップ 8: データのバックアップとアップグレード
- バックアップ: AnythingLLM のデータ ディレクトリ (ベクター ライブラリと構成を含む) が定期的にコピーされます。毎日のバックアップ タスクにこれを含めることをお勧めします。
- アップグレード: アップグレード前にバックアップし、ソフトウェア バージョンを更新して Q&A を再確認します。
- ドキュメントの更新: ドキュメントの内容が変更された後、古いバージョンと新しいバージョンの間の競合を避けるために、古いバージョンを削除して再アップロードします。
## 検証方法
- 検証 1: `ollam a list` は対話モデルとベクトル モデルを参照できます。
- 検証 2: ドキュメントをアップロードすると、ステータスが「処理済み」になります。
- 検証 3: 文書内で事実に基づく質問をすると、回答には対応する出典が引用されます。
- 検証 4: 外部ネットワークから切断しても、Q&A は引き続き利用可能です (ローカル推論であることを確認します)。
- 検証 5: プロンプトの言葉をカスタマイズすると、根拠のない質問が正しく拒否されるようになります。
## よくある間違いと注意事項
1. ドキュメントの形式がわかりにくいため、最初に選択可能なテキストに統一し (最初にスキャンしたドキュメントを OCR)、次にバッチでインポートします。
2. ブロックが大きすぎます。単一のブロックがモデル コンテキストを超えると、検索の歪みが発生します。推奨値に従って調整してください。
3. 多言語の混在: 知識ベース内の言語を統一するか、言語ごとに作業領域を分割するようにしてください。
4. 参照をオンにするのを忘れた場合: 設定で「参照ソースを表示」を必ずオンにしてください。これは受け入れがたいアイテムです。
## よくある質問とトラブルシューティング (FAQ)
1. AnythingLLM が Ollama に接続できない場合はどうすればよいですか?
まず `ollamaserve` が実行中であることを確認し (`ollamaserve` はデフォルトで 11434 をリッスンします)、次にブラウザを使用して `http://localhost:11434` にアクセスして確認します。構成内のアドレスには余分なスラッシュを含めないでください。
2. モデルのダウンロードが遅い、または失敗しますか?
ネットワークが制限されている場合は、ミラー アドレスを使用するか、別の時間に再試行してください。 GGUF モデルをダウンロードして手動でインポートすることもできます。
3. 回答は文書をまったく引用していません。くだらない雑談のように?
埋め込みがローカル Ollama モデルとして構成されているかどうかを確認します。構成されていない場合、ドキュメントを正しく取得できません。
4. アップロードした PDF は文字化けしているか、認識が不完全ですか?
AnythingLLM は組み込みパーサーに依存します。スキャンした PDF は、最初に OCR 変換して選択可能なテキストに変換する必要があります。
5. メモリ不足で動作が遅い?
より小さい量子化モデル (「qwen2.5:3b」など) に変更し、他の大きなメモリ プログラムを閉じます。 7B モデルは 16G 以上のメモリを推奨します。
6. 複数のコンピュータがナレッジ ベースを共有するにはどうすればよいですか?
AnythingLLM を Docker サーバーとしてデプロイし、クライアントが LAN 経由でアクセスできるように共有データ ボリュームを構成します。
## 概要と次のステップ
この時点で、「ローカル モデル + ローカル ナレッジ ベース + 追跡可能な質問と回答」の RAG アプリケーションのセットがすでに完成しています。推奨される次のステップ: まず、実際のビジネス ドキュメントを 1 ~ 2 週間の小規模トライアルに使用して、高頻度の問題を収集し、盲点を検索します。次に、モデルをアップグレードするか、ベクトル ライブラリを切り替えるか、複数のユーザーに展開するかを決定します。
## 進歩と拡大
- FastGPT / Flowise への変更: ビジュアルなワークフローと複雑なブランチが必要な場合に移行します。
- ベクトル ライブラリのアップグレード: ドキュメントの量が多くなったら、LanceDB を Milvus などの専門的なベクトル ライブラリに置き換えます。
- ハイブリッド検索: キーワード検索とベクトル検索を同時に有効にして、ロングテール質問のヒット率を向上させます。
- マルチユーザー権限: サーバーを展開し、アカウント システムにアクセスして、部門レベルの知識の分離を実現します。
- エージェントへのアクセス: ナレッジ ベースをエージェントの検索ツールにし、作業指示書、顧客サービス、その他のビジネス プロセスをリンクします。
ユーザーレビュー