Ollama + BGE-M3:构建本地RAG的检索与生成分离实践
简介面向AI应用开发者与知识库智能体搭建者这份代码包提供基于Ollama与BGE-M3的对接方案涵盖大语言模型部署、嵌入模型接入、Vllm与Dify集成以及本地DeepSeek模型的编排使用。资源共4个文件压缩包体积仅8KB包含Markdown说明、HTML展示页面、inscode配置和gitignore文件结构简洁便于快速对照实践。其中重点梳理了Ollama安装配置、模型文件目录修改、端口号调整、模型选择下载与测试以及Dify集成过程中的常见报错与解决办法适合在本地环境复现知识库智能体时参考排错。目前已有193人学习/下载对于希望低成本搭建本地智能体并理解模型协作原理的开发者这份小巧的代码包能提供具体落地路径与学习指引既能快速上手实践也有助于系统掌握本地大模型与嵌入模型组合应用的关键环节。 做本地知识库问答最让人上头的往往不是把大模型跑起来而是让“检索”和“生成”两条链路真正打通。我大半年都在折腾 Ollama 和各类嵌入模型最终稳定下来的一套组合就是 Ollama BGE-M3Ollama 负责对话模型的管理和推理BGE-M3 负责把文档和问题映射成向量两边通过本地 HTTP 服务对接。这篇帖子会把完整方案、可复制的代码、以及我踩过的坑都摆出来适合已经接触过 Ollama、准备把 RAG 落地到本机或内网的读者。如果你刚装好 Ollama还在为“模型下载慢”“不知道选哪个 embedding 模型”发愁这一篇也能帮你少走半天的弯路。方案整体不复杂但按这个思路拆开后后面加向量库、加 rerank 都会顺很多。1. 为什么是BGE-M3 Ollama先把“检索”和“生成”拆开很多人在本地 RAG 上翻车不是模型不好而是把检索和生成两件事揉成了一团。检索要解决的是“哪几段文档和这个问题最相关”生成要解决的是“把这些文档组织成一句人话”。前者本质是向量相似度计算后者本质是语言模型推理它们本来就应该由不同组件承担。1.1 本地RAG的常见误区让一个模型同时干两件事最典型的做法是什么都往 Ollama 里塞。Ollama 确实能跑 embedding 模型比如 nomic-embed-text、mxbai-embed-large也能跑对话模型。但 embedding 模型的生态和对话模型差很多Ollama 官方模型库里给的选项有限中文效果尤其一般。于是很多人拉了个 qwen2.5 就让它“自己找资料、自己回答”结果是模型一本正经地编因为对话模型在生成时根本没有可靠的外部知识来源。RAG 的意义就在于把“读资料”这一步从生成模型里剥离出来单独交给检索系统这正是我坚持用 BGE-M3 做检索侧、用 Ollama 只做生成侧的原因。1.2 为什么BGE-M3没有出现在Ollama模型库BGE-M3 是 BAAI 开源的多语言文本向量模型最大 8192 token输出 1024 维 dense 向量中文效果好这些特性让它很适合做中文知识库底座。但它不是一个标准 GGUF 对话模型Ollama 官方模型库并没有把它作为 embedding 模型内置。你当然可以手动把 BGE-M3 转成 GGUF 再 create 进 Ollama但我试下来会遇到 tokenizer 对齐和接口返回格式的问题ROI 很低。更稳的路径是BGE-M3 独立起一个 Python 服务Ollama 只跑对话模型两边用 HTTP 通信。方案输出维度中文效果部署复杂度适用场景BGE-M3 独立服务1024优中等中文知识库、长文本检索Ollama nomic-embed-text768一般低快速验证、英文/代码为主Ollama mxbai-embed-large1024一般低简单英文 RAG1.3 这套对接方案的整体结构最终形态是这样一个 Flask 服务在 6006 端口接收文本返回 BGE-M3 向量Ollama 服务在 11434 端口提供对话补全中间的自研管道先把 query 向量化再从文档库里做余弦相似度召回最后把命中的段落拼成 prompt 交给 Ollama。这样拆开至少有三个好处第一嵌入模型升级不影响对话模型反之亦然第二每个环节可以单独用 curl 验证哪里出了问题一眼就看出来第三以后接 Chroma、FAISS 只需替换检索那一段生成侧完全不用动。2. 环境准备与模型搬运安装Ollama、GPU配置、BGE-M3获取2.1 安装Ollama与下载慢的实用对策Windows 就直接去官网下安装包装完托盘里能看到 Ollama 服务。Linux 执行下面这条命令curl -fsSL https://ollama.com/install.sh | sh如果你撞上“下载太慢”我实测最有效的办法不是反复重试ollama pull而是改用“本地导入 GGUF”的路线。先去模型社区下载目标模型的 GGUF 文件比如 qwen2.5 的 4bit 量化版再写一个 ModelfileFROM ./qwen2.5-7b-instruct-q4_k_m.gguf然后执行ollama create qwen2.5:7b -f Modelfile。这个方式能断点续传下载工具也更可靠。关于 ollama本文还有配套的精品资源点击获取