<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Ollama on Ingenboy.inc</title>
    <link>https://blog.ingenboy.com/tags/ollama/</link>
    <description>Recent content in Ollama on Ingenboy.inc</description>
    <image>
      <title>Ingenboy.inc</title>
      <url>https://blog.ingenboy.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</url>
      <link>https://blog.ingenboy.com/%3Clink%20or%20path%20of%20image%20for%20opengraph,%20twitter-cards%3E</link>
    </image>
    <generator>Hugo -- 0.152.2</generator>
    <language>en</language>
    <lastBuildDate>Fri, 06 Jun 2025 17:50:17 +0900</lastBuildDate>
    <atom:link href="https://blog.ingenboy.com/tags/ollama/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Create_RAG</title>
      <link>https://blog.ingenboy.com/post/create_rag/</link>
      <pubDate>Fri, 06 Jun 2025 17:50:17 +0900</pubDate>
      <guid>https://blog.ingenboy.com/post/create_rag/</guid>
      <description>&lt;h1 id=&#34;背景&#34;&gt;背景&lt;/h1&gt;
&lt;p&gt;gmailの返答を自動化するプロジェクトを推進しています。
そこで、RAGですね。もうだいぶ時間が経っていますが、しっかりやっていきたいと思う。
RAG = 「Retrieval-Augmented Generation」
これを理解できればもう仕組みを理解したも同然です。
が一応説明しておきます。&lt;/p&gt;
&lt;h1 id=&#34;ragの仕組み&#34;&gt;RAGの仕組み&lt;/h1&gt;
&lt;p&gt;めっちゃ簡単にいうと、&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ベクトルデータベースに保存されたナレッジから&lt;/li&gt;
&lt;li&gt;問い合わせと類似するナレッジを検索し引っ張り出し&lt;/li&gt;
&lt;li&gt;それを元にGEN AIに回答を作らせる&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;という流れになります。&lt;/p&gt;
&lt;p&gt;1でベクトルデータベースにナレッジを保存する時には、元の自然言語をベクトル表現に変換した物を格納する必要があります。
このベクトル変換器のことを「Embedding model」と言います。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;x: 自然言語
f: Embedding model
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;とすると&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;y = f(x)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;で得られたy（とそれに対応するx）をベクトルDBに格納しておくわけですね。&lt;/p&gt;
&lt;p&gt;x_q: 問い合わせが来た時&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;y_q = f(x_q)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;から得られるy_qと類似しているy_1, y_2, y_3, ,,, y_nを検索し、
それに対応するx_1, x_2, x_3, ,,, x_n
を出力し、&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ans = LLM(x_1, x_2, x_3, ,,, x_n)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;とう感じで回答を作らせるという流れです。&lt;/p&gt;
&lt;h1 id=&#34;embedding-modelsの選定&#34;&gt;Embedding modelsの選定&lt;/h1&gt;
&lt;p&gt;&lt;a href=&#34;https://qiita.com/ke-suke-Soft/items/f904a442d8ce0e6b7522&#34;&gt;こちらの記事&lt;/a&gt;に書いてある通り、Embedding modelの選定がRAG全体の回答生成性能に大きく影響する。
まあ、chatGPTに聞いた結果これが一番いいのかな。
&lt;a href=&#34;https://huggingface.co/BAAI/bge-base-en&#34;&gt;BAAI/bge-base-en&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;今回ragを構築するにあたり使うソフト&#34;&gt;今回RAGを構築するにあたり使うソフト&lt;/h1&gt;
&lt;p&gt;vector DB: &lt;a href=&#34;https://github.com/qdrant/qdrant&#34;&gt;qdrant&lt;/a&gt;
embedding model: &lt;a href=&#34;https://huggingface.co/BAAI/bge-base-en&#34;&gt;BAAI/bge-base-en&lt;/a&gt;
LLM: &lt;a href=&#34;https://ollama.com/library/phi4&#34;&gt;phi4 14b&lt;/a&gt; on ollama (@ rtx 3060 12g)&lt;/p&gt;
&lt;p&gt;Langchainなどの統合的なライブラリは使わない。なぜなら自由度が低いから。
vector DBでの検索も普通にREST APIでできるので問題なさそう。&lt;/p&gt;</description>
    </item>
    <item>
      <title>LocalLLM</title>
      <link>https://blog.ingenboy.com/post/localllm/</link>
      <pubDate>Sun, 07 Jul 2024 23:08:04 +0900</pubDate>
      <guid>https://blog.ingenboy.com/post/localllm/</guid>
      <description>&lt;h1 id=&#34;何の記事&#34;&gt;何の記事&lt;/h1&gt;
&lt;p&gt;ローカルホストにLLMをインストールし、性能を検証。
またapiを介して利用可能にする方法を検証。
最後に、社内のことを学ばせて、こういう質問が来たらこう答えてねってのを教え込ませる。&lt;/p&gt;
&lt;h1 id=&#34;背景&#34;&gt;背景&lt;/h1&gt;
&lt;p&gt;自宅には計算資源がたくさんある。
それをネットワーク越しに使えるということがわかったので、LLM等の重い処理も自宅で動かして、軽量なフロントエンドと連携させる、
みたいなことが非常に簡単にできるということがわかった。
LLMで何をしたいか？？お客さんからの問い合わせに自動で答えるチャットボットを作りたいのよね。
うん、社内の情報とかを学ばせないといけない。その辺のファインチューニングの仕方も知りたい。&lt;/p&gt;
&lt;h1 id=&#34;参考記事&#34;&gt;参考記事&lt;/h1&gt;
&lt;p&gt;[ollamaについて] (&lt;a href=&#34;https://bhrtaym-blog.com/?p=407&#34;&gt;https://bhrtaym-blog.com/?p=407&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;[ローカルLLMをGPUで動かす] (&lt;a href=&#34;https://zenn.dev/giana12th/articles/7fc22c8cbdbb5e&#34;&gt;https://zenn.dev/giana12th/articles/7fc22c8cbdbb5e&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://ollama.com/library&#34;&gt;ollama公式サイト&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/ollama/ollama&#34;&gt;ollamaのgithub&lt;/a&gt;&lt;/p&gt;
&lt;h1 id=&#34;proxmoxで動かすための下準備&#34;&gt;proxmoxで動かすための下準備&lt;/h1&gt;
&lt;p&gt;GPUをパススルー必要がある。
あと、一番大きいモデルでは何倍とメモリが必要なんだっけ？
64GB以上あれば問題ないらしい。のでとりあえずそれをインストールしようと思う。&lt;/p&gt;
&lt;p&gt;あとは、ProxmoxでGPUをパススルーする方法。
あー、「ホストマシンのBIOSにて、VT-x, VT-d を有効にする。(VT-d は PCI Passthrough で必須)」
する必要があるらしい。
しかし、実はCPUの仮想化をした時点でGPUの仮想化もできるようになってたっぽい。&lt;/p&gt;
&lt;p&gt;でした準備は完了した。がメモっておくか&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;proxmoxのコンソールから、add hardware PCIeを選択し、GPUを入れる。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;nvidia-driverをインストール&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;nvidia-smiが使えるか確認。認識されているかも確認
ちなみに、ここでcudaのバージョンが出てくるけど、これは対応しているcudaのバージョンを示しているだけで実際にcudaがインストールされたわけではありません。そこを気を付けてください。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;cuda（ランタイム）をインストール
しかし、これはdocker等で、cudaが入ったコンテナを配ってもらえれば終わる話なので、無視でいいのかな？？ちょっと調べてみよう。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;proxmoxのCPUのtypeをhostに変える。これをやらないとavx命令が使えない。これゆえGPUが使われなくなってしまう。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;ollamaのインストール&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;dockerもある。
&lt;a href=&#34;https://hub.docker.com/r/ollama/ollama&#34;&gt;ollama on docker&lt;/a&gt;
これを参考にnvidia-container-toolkitをインストールする感じか。&lt;/p&gt;
&lt;h1 id=&#34;docker-install後の苦戦&#34;&gt;docker install後の苦戦&lt;/h1&gt;
&lt;p&gt;docker上のollama上で、llama3を動かすことには成功したんですよ。しかし、どうやらGPUでは動かせていいない。これはなんでかわかりました。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;time=2024-07-19T00:29:37.242Z level=WARN source=gpu.go:225 msg=&amp;#34;CPU does not have minimum vector extensions, GPU inference disabled&amp;#34; required=avx detected=&amp;#34;no vector extensions&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;CPUがavx命令をサポートしていないとGPUにオフロードされないみたいですね。
ほかのところでも同じことが言われていました。&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; GPU support requires the AVX instruction set, check your CPU model.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;つまり、ProxmoxでどうにかしてavxをOnにする必要があるということです。
これのやり方ですが、cpuのtypeをホストにしたら解決するようです。ってことで変えて再起動します。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
