😸

NLWeb サーバーをローカルで動かしてみた

に公開

こんにちは、酒井です!
株式会社 EGGHEAD(エッグヘッド)という「製造業で生成 AI を活用したシステム開発」をしている会社の代表をしております。

https://egghead.co.jp?utm_source=zenn&utm_medium=social&utm_campaign=normal

Microsoft Build 2025でMicrosoftがNLWebという新しいプロジェクトを発表されたようなので実際にサンプルコードを動かしてみました。

https://github.com/microsoft/NLWeb

NLWebの概要については以下の記事も併せてどうぞ!
https://zenn.dev/galirage/articles/what-is-nlweb

以下では、下記の手順でローカル環境で Qdrant ベクターデータベースと RSS フィードを組み合わせて NLWeb サーバーを立ち上げる手順を書いています!

前提条件

  • Python 3.10 以上がインストールされていること
  • OpenAI API キーを取得し、環境変数 OPENAI_API_KEY に設定済みであること

セットアップ手順

  1. リポジトリのクローン
    ターミナルで以下を実行し、NLWeb のソースコードを取得します。

    git clone https://github.com/microsoft/NLWeb
    cd NLWeb
    
  2. 仮想環境の作成と有効化
    Python の仮想環境を用意し、アクティベートします。

    python -m venv venv
    source venv/bin/activate
    
  3. 依存パッケージのインストール
    プロジェクト直下の code ディレクトリに移動し、必要なライブラリをインストールします。

    cd code
    pip install -r requirements.txt
    
  4. 環境変数ファイルの準備
    .env.template をコピーし、OpenAI API キーを .env に設定します。

    cp .env.template .env
    

    .env ファイル内で以下のように編集してください:

    OPENAI_API_KEY=<あなたの OpenAI API キー>
    

    ※ Qdrant ローカル用の設定はデフォルトのままで問題ありません。

  5. 設定ファイルの更新(code/config フォルダ内)
    各 YAML ファイルの provider を以下のように設定します。

    • config_llm.yaml

      provider: openai
      
    • config_embedding.yaml

      provider: openai
      
    • config_retrieval.yaml

      provider: qdrant_local
      
  6. RSS フィードの読み込み
    Zenn の「生成AI」トピックフィードを Qdrant にロードします。

    python -m tools.db_load "https://zenn.dev/topics/%E7%94%9F%E6%88%90ai/feed" "Zenn-生成AI"
    
  7. サーバーの起動
    以下のコマンドでアプリケーションを立ち上げます。

    python app-file.py
    
  8. 動作確認
    ブラウザで http://localhost:8000/ を開くと、以下のようなチャット画面が表示されます。

まとめ

ここまで読んでいただきありがとうございました!

まだあまり解像度は高くないですが、Webページに標準でチャットボットが搭載されるようなイメージなんですかね。もう少し調べて分かったら追記していこうと思います。

参考

https://github.com/microsoft/NLWeb/blob/main/HelloWorld.md

GitHubで編集を提案
EGGHEAD テックブログ

Discussion