最近、Windowsで動作するOllama for Windows (Preview)を使って、Local RAG(Retrieval Augmented Generation)を体験してみました。この記事では、そのプロセスと私の体験をステップバイステップで共有したいと思います。Local RAGはオフラインで動作するオープンソースのRAGで、ファイルを取り込んで大規模言語モデル(LLM)を活用した拡張生成を実現します。それでは、詳細に入りましょう。
Ollama for Windows (Preview)
まず最初に、Ollama for WindowsのPreview版を公式サイトからダウンロードしました。
インストールは非常に簡単で、ダウンロードしたファイルを実行し、画面の指示に従って進めるだけです。
インストールが完了すると、起動確認を行い、Windows上で問題なく動作することを確認しました。
Local RAGの特徴
Local RAGは、インターネットに接続せずにオフラインで動作するRAGです。これは、第三者の介入なく、また機密データがネットワーク外に流出することなく、オープンソースの大規模言語モデルを活用できるということを意味します。以下のような特徴があります:
- オフラインでの埋め込みとLLMのサポート(OpenAI不要!)
- ストリーミング応答
- 会話記憶
- チャットエクスポート
Docker-composeでの起動
Local RAGを利用するにあたり、Docker-composeを使用して環境を構築しました。これは、Local RAGとOllama for Windowsを統合し、効率的に動作させるための重要なステップです。
C:\Prj\local-rag>docker-compose up
[+] Running 10/10
✔ local-rag 9 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 339.0s
✔ e1caac4eb9d2 Pull complete 4.9s
✔ 51d1f07906b7 Pull complete 1.4s
✔ c0d8da8ab021 Pull complete 4.2s
✔ ce524da9d572 Pull complete 2.3s
✔ d0d45da63dd1 Pull complete 4.3s
✔ 7e4bf657f331 Pull complete 295.5s
✔ dbd4807657c5 Pull complete 5.1s
✔ 4f4fb700ef54 Pull complete 5.5s
✔ 8225ac29db65 Pull complete 6.0s
[+] Running 2/2
✔ Network local-rag_default Created 0.1s
✔ Container local-rag Created 0.4s
Attaching to local-rag
local-rag |
local-rag | You can now view your Streamlit app in your browser.
local-rag |
local-rag | URL: http://0.0.0.0:8501
local-rag |
Local RAGの使用方法
Local RAGの使用を開始するには、まず設定からOllamaのエンドポイントとモデルを設定します。その後、処理する文書をアップロードし、完了次第、アップロードした文書に基づいて質問をすることができます。設定では、「設定 > 詳細オプションを表示」をトグルすることで、RAGパイプライン内のすべてのオプションにアクセスできます。
Ollama設定
Ollamaでの設定は以下の通りです:
- Ollamaエンドポイント :ローカルにホストされたOllama APIの場所で、デフォルトは
http://localhost:11434
です。 - モデル :チャット補完を生成する際に使用する大規模言語モデルです。
- システムプロンプト :LLMを初期化する際に使用される初期システムプロンプトです。
- Top K :クエリに対する応答として取得する最も類似した文書の数で、デフォルトは3です。
- チャットモード :検索中に使用するLlama Indexチャットモードです。
埋め込み設定
- 埋め込みモデル :ファイルをベクトル化するために使用される埋め込みモデルです。
- チャンクサイズ :より小さなテキスト部分に焦点を当てることで、埋め込みの精度を向上させます。
Docker-compose経由でのOllama接続の変更
Local RAGをDocker-composeで起動し、ホストPC上で動作するOllamaに接続する際には、接続設定をhttp://localhost:11434
からhttp://host.docker.internal:11434
に変更する必要があります。この変更は、Dockerコンテナ内からホストマシン上のサービスにアクセスするために必要です。
Dockerコンテナはデフォルトで隔離されており、localhost
を使用しても、コンテナ内部のローカルホストを指します。そのため、ホストマシン上で動作しているサービスにアクセスするには、host.docker.internal
を使用して、Dockerが提供する特別なDNS名を介してアクセスする必要があります。
デモ動画
まとめ
このプロセスを通じて、Windows上でLocal RAGを利用することの可能性を探ることができました。特に、オフラインでセキュアにデータを処理する必要性が高まっている現代において、このようなオープンソースのソリューションは非常に価値があると感じています。
コメント