1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

オンプレミスAgenticSearch(Windows+Python+Qdrant+OpenAI互換API)

1
Last updated at Posted at 2026-03-15

自分用保存のため

On-premise Agentic Search System

社内ドキュメント(PDF, Markdown, Text)を対象とした、オンプレミス完結型の AI 検索(RAG)エージェントシステムです。外部クラウドにデータが送信されることはありません。

構成アーキテクチャ

  • 推論 / Embedding サーバー: LM Studio (OpenAI互換API)
  • エージェントフレームワーク: LangGraph (ReActパターン)
  • ベクトルDB: Qdrant (Local Storageモード)
  • APIサーバー: FastAPI (OpenAI互換インターフェース)
  • フロントエンドチャットUI: Open WebUI
    image.png

主要機能

  • リアルタイム・ストリーミング: AI の回答を逐次表示し、待ち時間を短縮します。
  • パフォーマンス統計: トークン生成速度 (tokens/s) や生成時間を計測・表示します。
  • 正確なソース参照: 引用元ファイルを特定し、ダウンロードリンクを自動生成します。
  • 暗号化 PDF 対応: パスワード保護や特定の暗号化アルゴリズムが使用された PDF も読み込み可能です。

必要条件

  • OS: Windows (WSL不要)
  • Python: 3.11 必須
  • LM Studio: ダウンロードはこちら
    OpenAI互換APIが可能であればベースURLの調整で動くはず

セットアップ

1. リポジトリの準備

git clone https://github.com/yourusername/rag-test.git
cd rag-test

2. Agent サーバー環境の構築 (Python 3.11)

py -3.11 -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txt

3. Open WebUI 環境の構築 (Python 3.11)

py -3.11 -m venv .venv-webui
.venv-webui\Scripts\activate
pip install open-webui

使用方法

Step 1: LM Studio の起動

  1. LM Studio を開き、LLM (例: Qwen3.5-9B)Embedding (例: bge-m3) の両方をロードします。
  2. サーバーを起動します (デフォルト: localhost:1234)。
  3. config.py 内の LLM_MODELEMBEDDING_MODEL が LM Studio 上の Identifier と一致していることを確認してください。

Step 2: ドキュメントの取り込み (Ingest)

  1. docs/ フォルダに取り込みたいドキュメントを配置します。
  2. 重要: Agent サーバーが起動している場合は、一度停止させてください(後述)。
  3. 以下のコマンドを実行します:
    .venv\Scripts\activate
    python ingest.py
    

Step 3: 各サーバーの起動

  1. Agent サーバー: start_agent.bat を実行します (ポート 8000)。
  2. Open WebUI: start_webui.bat を実行します (ポート 3000)。

Step 4: Open WebUI の連携設定

  1. http://localhost:3000 にアクセスし、管理者アカウントを作成します。
  2. Settings > Connections > OpenAI API に以下を設定します:
    • URL: http://localhost:8000/v1
    • API Key: dummy
  3. モデル選択から agentic-search を選んでチャットを開始します。

運用上の注意点

  • Qdrant のストレージロック:
    ローカルモードでの Qdrant は、同時に1つのプログラムしかデータベースにアクセスできません。ingest.py を実行する際は、必ず server.py (Agentサーバー) を停止させてください。 停止させずに実行すると RuntimeError が発生します。
  • 統計情報の表示:
    Open WebUI で tokens/s 等を表示するには、UI 設定の Settings > Interface > Always show details (常に詳細を展開) をオンにすることを推奨します。

ライセンス

このプロジェクトは MIT ライセンスの下で公開されています。詳細は LICENSE ファイルを参照してください。

謝辞

このプロジェクトは以下のオープンソースソフトウェアを活用して構築されています:

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?