Joy to the world

とある中小企業のしがない技術者でクリスチャンな人が書く日記。実はメビウス症候群当事者だったり、統合失調症のパートナーがいたりする。

ローカルでRAGをやる

最近はAI熱下がり気味だけど、ふと思い立ってローカルLLMをやってみた。

というのも、Jan-v1なるLLMが軽いけど高性能という話を聞き、LM Studioからモデルをインストールし、Anything LLMでRAGとWebスクレイピングをやってみた。

システム構成

あとから実現するためのメモを残しておく。

LLM:Jan-v1-4b 埋め込みモデル:mixedbread-ai/mxbai-embed-large-v1

構築手順

  1. LM Studioをインストールする
  2. 上記のモデルをダウンロードする
  3. APIを有効にする
  4. コンテキストウィンドウをGPUメモリの上限まで上げとく
  5. Anything LLMをインストールする
  6. Anything LLMでLM Studioを使うように設定する
  7. エージェントの設定でAPI関連の設定をしておく

使用感

今までの軽量モデルは正直使いどころが無いレベルだったけど、Jan-v1-4bはまあ使えなくはないかなと思えるレベル。Perplexity Proと同等レベルの性能を謳っているが、全くの嘘っぱちというわけではなさそうだ。

今まで、内蔵GPUだったりエントリーレベルのグラボで使えるLLMというのは、日本語が変だったりツール使うのが下手くそだったりで正直使いどころがなかったが、これならちょっとした調べ物くらいには使えるかなといった印象だ。

流石に快適とは言い難いが、11世代のノートPCのiGPUでこれだけ動くのだから、倍くらいの性能があれば結構実用的に動くのではないかと思う。

そういうわけで、ちょうど家のデスクトップPCのグラボ(GT710という化石)の性能に嫌気が差していたので、GeForce GTX 1050 Tiを中古で買ってみた。どうせ古いPCなので、最新のグラボを買ってもボトルネックになるだけなので、あえて古い中古GPUを購入してみた。7000円位でお買い得だったので。

3DMark Time Spyのスコアでは、会社で使ってるCore 5 Ultra 245の内蔵GPUと同じくらいのスコアなので、このGPUでそれなりに動いたら、会社でローカルLLMを使うときの指標になるかなとは思う。

まあVRAMが4GBなので、どのみち4Bくらいのモデルを使わざるを得ないのは分かりきっているので、前述した組み合わせのRAGやWeb検索してまとめる作業が速くなればいいかなくらいの期待度ではあるが。

RAGってあまりモデル性能と結果の質が比例しない気がしていて、クラウドのモデルを使っても結果が微妙だったりするので、RAGやWeb検索についてはローカルLLMでいいんじゃないかなとは思っている。

それにしても、リーズニングモデルである程度まともに動くLLMが、こんな型落ちノートPCだったり中古の化石グラボだったり、最新CPUの内蔵グラフィックでそれなりに動くというのは、時代の変化を感じて久しぶりにワクワクした。

追記メモ

しばらく使っていて思ったが、Perplexity的な使い方をする場合はLM Studioから使ったほうがいい。Anything LLMだと進捗がわかりにくい。

MCPは下記の通り。

{
  "mcpServers": {
    "github.com/marcopesani/mcp-server-serper": {
      "command": "npx",
      "args": [
        "-y",
        "serper-search-scrape-mcp-server"
      ],
      "env": {
        "SERPER_API_KEY": "Your_API_Key"
      }
    }
  }
}

逆に、RAGをやるならAnything LLMにしたほうがいい。

と思ったが、どのみち量子化モデルで性能が微妙なので、LM Studioの簡易的なRAGで十分な気もしてきた。