前言

Blinko 是一款很棒的开源 AI 知识库笔记应用,部署教程见 Blinko 开源 AI 知识库 Docker 部署指南 。本文中我将使用 Ollama 的本地 Embedding 模型集成,以支持 RAG (Retrieval-Augmented Generation) 检索增强生成 搜索。

无论我们使用哪一家的模型,它都不是全知全能,尤其对于 Blinko 这种主打 AI 驱动的个人知识库来说。

什么是 Embedding 模型,有什么作用?

简单来说,Embedding 模型 将本地知识库里的内容(根据模型支持,可以是文档、图像、音频、视频……)转化成 向量 (Vector) 表示,向量本质就是一串数字的集合,类似真正的「向量」,它有正负及数位。

举个例子:

  • Apple 公司 → [0.13, 0.85, -0.56, 0.75]
  • iPhone 18 → [0.11, 0.93, -0.49, 0.68]

我不是 AI 专家,上面的数据也是胡诌的。但还是大致能看出来,语义越相近,两者的向量距离就越近,这就是 近似度。简而言之,Embedding 模型让 LLM 也能理解文本之间的关系。

现在就能说通,使用 Embedding 模型向量化,让本地知识库支持语义化搜索及其他 AI 集成,是 Blinko 建立 RAG 搜索的核心条件。

blinko-ai.webp

除了上面的 AI 搜索界面,应用内搜索也会使用这方面的功能,具体可以自行体验。

notes-search.webp

Ollama 是跑本地 LLM 模型最简单的方法,API 利于集成,Embedding 模型普遍较小,对性能和环境要求不高,可以很方便的在本地运行。

部署 Ollama

参考 在 n8n 中使用 Ollama 的本地 LLM 模型 ,仅需在 Blinko 的 Compose 模板中新增服务

  ollama:
    container_name: ollama
    image: ollama/ollama:latest
    restart: unless-stopped
    environment:
      - OLLAMA_HOST=0.0.0.0
      - OLLAMA_KEEP_ALIVE=1h  # 卸载模型时间
    volumes:
      - ./ollama:/root/.ollama

现在可以启动容器

sudo docker compose up -d

选择模型

Ollama 上提供开箱即用的 Embedding 模型选择,体积与性能比较均衡的:

我使用的是 bge-m3:567m 模型,它对中文和英文支持都很好。作为参考,在我的 RS 1000 G12 Pro 服务器上,Ollama 运行模型时 RAM 占用在 1.5GB 作用,目前我在上面运行着多达 20 个 Docker 容器。除了首次 Blinko 重建嵌入向量时,4 个核心短时间占用到 90% 作用,其余时间这个模型运行顺畅。

下载模型

进入 Ollama 容器 Shell

sudo docker exec -it ollama bash

下载所需的模型

ollama pull bge-m3:latest

Ollama 配置完成

添加 AI 供应商

进入 Blinko 的 AI 设置添加供应商

add-ai-provider.webp

选择 Ollama 添加

add-ollama.webp

在同个 Docker 网络内,基础网址填 http://ollama:11434/api 后点击创建

set-api.webp

输入自己下载模型的名称并添加,类型选择 Embedding,对于这款模型嵌入维度填 1024 即可(不填应该也没有影响)。点击测试连接,OK 后点击创建。

add-model.webp

配置默认模型

default-model.webp

重建索引

选择好正确的本地模型后,在 AI 设置里重建索引向量

reconstruction-vector.webp

稍等片刻,重建索引向量就完成啦

finish-reconstruction-vector.webp

此后,在需要时,Blinko 都会喊「嗨,🦙小泥马!启动模型,该打工了」。在闲置时,小泥马会默默地从 RAM 中卸载模型(上面设置了存活时间为 1h)。

嗯,很完美~