Embeddings
Embedding(嵌入) 把一段文本变成固定长度的浮点向量。语义相近的句子,向量也相近。RAG 用它做近邻检索,不用它来聊天。
本课两条主路径,都不要求 GPU:
中文检索优先评估 bge-m3(Ollama 名 bge-m3,Hub 名 BAAI/bge-m3)。机器内存紧时,CPU 上可用更小的 BAAI/bge-small-zh-v1.5。细节与 /api/embed 见本站 Ollama Embeddings;模型卡与 sentence-transformers 见 Hugging Face。
索引和查询必须用同一个模型。换模型 = 整库重嵌。
环境
OpenAI:设置 OPENAI_API_KEY。Ollama:先安装服务并 ollama pull bge-m3(CPU 可跑,首次较慢)。
OpenAI:text-embedding-3-small
官方支持 dimensions 降维(例如 512)以省存储;建库后不可中途改维。批量时一次传入多条 input,不要在循环里逐条 HTTP。
本地:Ollama bge-m3
不必自己管 CUDA。Ollama 在 CPU 上也能 embed。
REST 等价于 POST http://localhost:11434/api/embed,也可用 OpenAI 兼容的 POST /v1/embeddings。PowerShell:
聊天模型(llama3、qwen 等)不要拿来当 embed:慢,而且不是为检索训练的。
本机 Python:BAAI / sentence-transformers(可选)
不跑 Ollama、又要开源权重时:
pip install sentence-transformers 会拉 PyTorch CPU 轮子,第一次下载模型需要磁盘和耐心。GPU 能加速但不是必须。
接到向量库
三种库都接受「已算好的向量」:
也可以让 Chroma 用内置函数自动 embed;中文场景更稳妥的是自己传入 OpenAI 或 bge-m3 向量,避免默认英文小模型。