SuperAPI AI 工具集

grepai-embeddings-ollama

编程与开发

查看项目

更新于 10-15 14:57

技能介绍

用途

本技能用于将 Ollama 配置为 GrepAI 的嵌入提供方,实现 100% 私密、本地的代码搜索。资料给出的适用场景包括:搭建私密本地嵌入、选择合适的 Ollama 模型、优化 Ollama 性能、排查 Ollama 连接问题。

为什么使用 Ollama

资料列出以下优势:隐私(代码从不离开本机)、免费(无 API 费用或用量限制)、速度(无网络延迟)、离线(无互联网也可工作)、控制(可自行选择模型)。

前置条件

需已安装并运行 Ollama,并已下载一个嵌入模型。资料给出的安装与启动命令:

# Install Ollama
brew install ollama  # macOS
# or
curl -fsSL https://ollama.com/install.sh | sh  # Linux

# Start Ollama
ollama serve

# Download model
ollama pull nomic-embed-text

配置方式

基础配置(.grepai/config.yaml):

embedder:
  provider: ollama
  model: nomic-embed-text
  endpoint: http://localhost:11434

使用自定义端点:

embedder:
  provider: ollama
  model: nomic-embed-text
  endpoint: http://192.168.1.100:11434  # Remote Ollama server

显式指定维度(通常会自动检测):

embedder:
  provider: ollama
  model: nomic-embed-text
  endpoint: http://localhost:11434
  dimensions: 768  # Usually auto-detected

可用模型

推荐:nomic-embed-text(ollama pull nomic-embed-text)

属性 值
维度 768
大小 ~274 MB
速度 快
质量 对代码表现优秀
语言 英文优化

多语言:nomic-embed-text-v2-moe(ollama pull nomic-embed-text-v2-moe):维度 768,大小 ~500 MB,速度中等,质量优秀,多语言。资料称最适合包含非英文注释/文档的代码库。

高质量:bge-m3(ollama pull bge-m3):维度 1024,大小 ~1.2 GB,速度较慢,质量很高,多语言。资料称最适合大型复杂代码库、精度要求高的场景。配置时需指定 dimensions: 1024。

最高质量:mxbai-embed-large(ollama pull mxbai-embed-large):维度 1024,大小 ~670 MB,速度中等,质量最高,英文。配置时需指定 dimensions: 1024。

模型对比:

模型 维度 大小 速度 质量 使用场景
nomic-embed-text 768 274MB ⚡⚡⚡ ⭐⭐⭐ 通用
nomic-embed-text-v2-moe 768 500MB ⚡⚡ ⭐⭐⭐⭐ 多语言
bge-m3 1024 1.2GB ⚡ ⭐⭐⭐⭐⭐ 大型代码库
mxbai-embed-large 1024 670MB ⚡⚡ ⭐⭐⭐⭐⭐ 最高精度

性能优化

内存管理:模型会加载进内存,需保证内存充足。资料给出的参考:nomic-embed-text 约 500 MB、nomic-embed-text-v2-moe 约 800 MB、bge-m3 约 1.5 GB、mxbai-embed-large 约 1 GB。

GPU 加速:Ollama 会自动使用 macOS 的 Metal(Apple Silicon)以及 Linux/Windows 的 CUDA(NVIDIA GPU)。可用 ollama ps 查看 GPU 使用情况。

保持模型常驻:默认情况下 Ollama 会在不活动 5 分钟后卸载模型。保持常驻的命令:

# Keep model loaded indefinitely
curl http://localhost:11434/api/generate -d '{
  "model": "nomic-embed-text",
  "keep_alive": -1
}'

验证连接

检查 Ollama 是否运行:curl http://localhost:11434/api/tags

列出可用模型:ollama list

测试嵌入:

curl http://localhost:11434/api/embeddings -d '{
  "model": "nomic-embed-text",
  "prompt": "function authenticate(user, password)"
}'

作为服务运行

macOS(launchd):Ollama 应用会在登录时自动运行。

Linux(systemd):

# Enable service
sudo systemctl enable ollama

# Start service
sudo systemctl start ollama

# Check status
sudo systemctl status ollama

手动后台运行:

nohup ollama serve > /dev/null 2>&1 &

远程 Ollama 服务器

在服务器上允许远程连接:

# Allow remote connections
OLLAMA_HOST=0.0.0.0 ollama serve

在客户端配置:

# .grepai/config.yaml
embedder:
  provider: ollama
  model: nomic-embed-text
  endpoint: http://server-ip:11434

常见问题

连接被拒绝:执行 ollama serve 启动 Ollama。

找不到模型:执行 ollama pull nomic-embed-text 拉取模型。

嵌入生成缓慢:使用更小的模型(nomic-embed-text);确认正在使用 GPU(ollama ps);关闭占用内存较大的应用;考虑使用硬件更好的远程服务器。

内存不足:使用更小的模型;关闭其他应用;升级内存;使用远程 Ollama 服务器。

模型更新后嵌入不一致:模型更新后需重新索引:

rm .grepai/index.gob
grepai watch

最佳实践

从 nomic-embed-text 开始:速度与质量的最佳平衡;保持 Ollama 运行:推荐后台服务;匹配维度:不要混用不同维度的模型;更换模型后重新索引:删除索引并重新运行 watch;监控内存:嵌入模型占用大量内存。

输出格式

成功配置 Ollama 时的输出示例:

✅ Ollama Embedding Provider Configured

   Provider: Ollama
   Model: nomic-embed-text
   Endpoint: http://localhost:11434
   Dimensions: 768 (auto-detected)
   Status: Connected

   Model Info:
   - Size: 274 MB
   - Loaded: Yes
   - GPU: Apple Metal