---
# System prepended metadata

title: OLLAMA + RAGFLOW 經驗談

---

# OLLAMA + RAGFLOW 經驗談

[TOC]

## 前言
今天是 2025.04.02，我重感冒在家，閒來無事便玩起了 ollama 與 ragflow。起因是我的 github-copilot 每次到月中免費的額度就用完了(真的很好用!)，看著我的電競筆電有 GTX1650 顯卡 (4GB GDDR)，加上之前為了訓練簡單的 CNN 模型所以把 cuda driver 都安裝好了。既然這樣為何不在本地端實現一個協助程式撰寫的助理呢?我便開始鑽研 ollama。

## OLLAMA

### 安裝 install
- ollama 的下載與安裝在 Linux 與 Windows 中都很方便，因為我同時有在使用 WSL，因此兩條路我都嘗試過。
    - Linux (Ubuntu,WSL) 我採用的是 `snap install ollama` 指令直接安裝
    - Windows 則是[從這裡](https://ollama.com/download)下載約 1GB 的安裝檔`OllamaSetup.exe` (有點久)並順順的點選安裝，安裝過後會自行啟動背後的服務。

:::info
想在 windows 中關閉 ollama 服務，在工作列右下方尋找 ollama icon，點擊右鍵、點擊`Quit Ollama`。
![image](https://hackmd.io/_uploads/SyHpDa5pJg.png)

:::

#### 疑難排解
:::info
- 如果我的 ollama serivce 在 windows 中運行，但是想在 wsl Ubuntu 中連線使用，而非再開一個 ollama server，該如何設定?
:::
- 我會遇到這個情況是因為 ollama 在主機可以使用 gpu cuda 加速，但有時候在 WSL 中也想用到相同的便利性，但又不想再建立新的 ollama model 空間下載維護，這會耗費更多的空間，而這只需要改一下網路設定:
    - Ubuntu(WSL): 網路設定使用 `mirrored` 模式而非 `NAT`，讓內外的網域可以互通。
    - Windows: 加入環境變數 `OLLAMA_HOST=:11434`, 表示廣播

    :::warning
    值得注意的是 `localhost` 或 `127.0.0.1` 的轉發不會橫跨進虛擬系統，因此需要使用時機電腦對外的 IP (虛擬IP`192.168.xx.xx`, VPN 等)才能跨進 WSL。若是從 WSL 向主機連線則不會有這樣的問題。
    :::

### 執行模型 Run model

### 管理模型 
- 你可以在[官網的模型頁面]()查詢可用的模型，並且使用 `ollama pull <model>` 方式下載，可以選擇不同的參數量，我都只選 8b 以下的，不然 CPU 跑不動。
- `ollama rm <model>` 則可以刪除下載過的模型。
- `ollama list` 查詢本地端現有的模型 (每個LLM都很肥...)
    ```
    $ ollama list
    NAME                        ID              SIZE      MODIFIED
    qwen2.5:3b                  357c53fb659c    1.9 GB    11 hours ago
    qwen2.5-coder:7b            2b0496514337    4.7 GB    17 hours ago
    deepseek-r1:8b              28f8fd6cdc67    4.9 GB    17 hours ago
    qwen2.5-coder:3b            e7149271c296    1.9 GB    18 hours ago
    deepseek-r1:7b              0a8c26691023    4.7 GB    19 hours ago
    ```
- `ollama run <model>` 可以開始使用模型生成功能 (`/api/generate`)，如果模型沒有下載過它會自動得先下載。
    ```
    $ ollama run qwen2.5:3b
    >>> Send a message (/? for help)
    ```
    - 離開使用 `/bye` , `/`是 ollama 對話中的跳脫字元
    ```
    $ ollama run qwen2.5:3b
    >>> hi
    Hello! How can I assist you today?

    >>> /bye
    ```
- `ollama ps` 可以得知目前正在使用的模型以及部屬在 local 端的狀況
    - 3b 模型可以全部使用 GPU 計算
    ```
    $ ollama ps
    NAME          ID              SIZE      PROCESSOR    UNTIL
    qwen2.5:3b    357c53fb659c    3.1 GB    100% GPU     4 minutes from now
    ```
    - 7b 模型一部分使用 CPU 計算
    ```
    $ ollama ps
    NAME              ID              SIZE      PROCESSOR          UNTIL
    deepseek-r1:7b    0a8c26691023    6.0 GB    43%/57% CPU/GPU    4 minutes from now
    ```
    


由於我的 GPU 有 4GB 的 RAM，因此在 GPU 上完整的跑 3b 的模型，速度比純 CPU 快很多，另外 7b 或是 8b 的模型雖然 GPU 塞不下，但是部分推理交由 CPU 計算的，產生速度還可以接受，因此我就一併下載使用了。

目前嘗試下來 deepseek-r1、qwen2.5系列的在 coding 上都不錯使用，其他的就沒有再多測試了。

ollama 的 serivce 不只`generate`,更多的 API 用法可以從 [github 文件](https://github.com/ollama/ollama/blob/main/docs/api.md)參考。

:::info
ollama 甚至已經有 python 的 api library，這部分我找時間再來玩，應該會有更多的互動。
:::

## VScode extension - Continue
很神奇的名字對吧，我看到第一眼也這麼想。
不難設定，安裝插件後在左邊藍可以看到圖示，接著我是將他拖移到右邊，這樣就不會跟檔案管理員區塊重疊。
![image](https://hackmd.io/_uploads/HkkR809pyg.png)
- 選擇模型處點選下拉選單選擇，或是新增模型
![image](https://hackmd.io/_uploads/S1EIPA5Tke.png)
- 你可以選擇付費的網站貼上 API-KEY，本人是免費仔，所以使用本地端裝好的 ollama
![image](https://hackmd.io/_uploads/H1m3DCcpye.png =500x)
- 有些模型沒有出現在選單上，我點選下方的 `This will update your config file` 的 `config file`
![image](https://hackmd.io/_uploads/Skqmd09pJe.png =500x)
    它會開啟 `C:\使用者\<使用這名稱>\.continue\config.yaml` 設定檔，便可以手動新增模型
    ```
         name: Local Assistant
        version: 1.0.0
        schema: v1
        models:
          - name: deepseek-r1-7b
            provider: ollama
            model: deepseek-r1:7b
    +++   - name: <你想顯示的名稱>
    +++     provider: ollama
    +++     model: <ollama 模型名稱>
        context:
          - provider: code
          - provider: docs
          - provider: diff
          - provider: terminal
          - provider: problems
          - provider: folder
          - provider: codebase
    ```

continue 與 github-copilot 相似處就是它同樣能擷取當前檔案中的片段資訊讓其產出 code 時會更加精確，方法是使用`@`加上檔案名稱加在對話前面。

目前使用下來，使用 `qwen2.5-coder:3b` 較為快速，`qwen2.5-coder:7b` 較為嚴謹， `deepseek-r1:7b` 雖然不是針對撰寫程式碼而訓練的，但是它的產物測試起來也不賴。

以上就是我用 Continue + Ollama 取代 github-copilot 的歷程。以下呢，則是走冤枉路的紀錄。

## Ragflow
我看到 Ragflow 有很多介紹的網站

- [RAGFlow安裝教學、設定、與模型使用技巧](https://ithelp.ithome.com.tw/articles/10369119)
    - 我大致是照著這個操作的，唯獨要注意的是因為 Ragflow 需要Docker 運行 service 與 mysql，因此我在比較好部屬的 WSL (Ubuntu)上進行，所以在需要輸入`localhost` 時我打的是 `192.168.xx.xx` 的區域網路 IP，原因我在[上面](#疑難排解)有提到過。
    - docker 建立的時候有一個 image 很大，大約 10GB，要下載一段時間。 
- 這裡是 [github link](https://github.com/infiniflow/ragflow)
    :::warning
    後來我發現在 WSL 上裝 Ragflow 可是一大問題。官方有提到說要保留至少 50GB 的空間，那時候不以為意便直接裝在 WSL 中...
    :::
- Ragflow 官方也有 [串接 ollama](https://ragflow.io/docs/dev/deploy_local_llm) 的步驟教學
- 這裡有不錯的介紹
{%youtube 9x-9-r2ifig%}
- 建立知識庫我是使用 `ollama mxbai-embed-large`模型作為 embedding 用途，而聊天助理則是連接 `ollama qwen2.5:3b`，反應較為快速。

很快的我發現我的系統碟少了 20GB，原來是被 docker 中的 ragflow 服務給吃掉了，而且 cpu 不斷的被占用。我就默默地從 WSL 中移除 docker image 與 ragflow (我花了一下午下載的說..., 至少下載有 10GB)。成功刪除候用 `df` 看一下硬碟使用量從 45GB 降到 31GB。

但在 windows 的系統碟中卻遲遲不見釋放後的空間，不是已經釋放了嗎?

## WSL disk shrink

看到[這網頁](
https://stephenreescarter.net/how-to-shrink-a-wsl2-virtual-disk)之後才知道原來是 .vdx 虛擬磁碟在搞事，他還是維持原本的 45GB，並沒有把空間釋放出來。我照著步驟利用 PowerShell 中的 diskpart 工具將其瘦身 `compact` 後才見到釋出的硬碟空間。

## 心得
我覺得 ollama 加上 continue 的功能可以放在我的筆電上運用，這確實可以取代線上有限制用量的資源。Ragflow使用起來對於研究文獻探討很有幫助，尤其是建立自己的知識集資料庫是一件很有趣的過程。但我的電腦顯然不夠空間，建議是使用有至少 50GB~100GB 空間的電腦，以及算力較佳的 GPU，再結合 ollama 服務，便可以打造出完整本地端的 RAG 系統，不但可以避免資料外流，更可以無限使用 LLM 模型。

