在企业知识库、代码文档和个人资料检索场景中,将文本发送到云端生成向量,往往会带来隐私、成本与网络依赖问题。Ollama 配合 Qdrant,可以在本地完成向量生成、存储和检索,并通过稠密语义检索与稀疏关键词检索互补,构建更可靠的混合搜索系统。🔍
一、为什么选择 Ollama 与 Qdrant
Ollama 负责运行本地嵌入模型,将文本转换为向量;Qdrant 负责保存向量、业务字段和过滤条件,并提供相似度检索、元数据过滤及混合查询能力。两者职责清晰,既适合个人电脑验证,也便于迁移到局域网服务器。
这种组合的主要优势是数据无需离开本地环境、模型可以按场景替换、检索服务能够独立扩容。根据 Qdrant 官方集成文档,应用可通过 Ollama 生成嵌入,再将向量及原始文本作为 Point 写入 Qdrant。citeturn1search1
二、搭建本地检索链路
建议通过容器运行 Qdrant,并在宿主机运行 Ollama。默认情况下,Ollama 服务常用端口为 11434,Qdrant HTTP 接口常用端口为 6333。部署完成后,先分别检查模型列表与 Qdrant 健康状态,避免在业务代码中排查基础连接问题。
- 安装 Ollama,拉取适合中文或多语言场景的嵌入模型。
- 启动 Qdrant,并挂载持久化目录,防止容器重建后数据丢失。
- 使用同一嵌入模型分别处理文档和查询,保证向量空间一致。
- 创建集合时,将向量维度设置为模型实际输出长度,并选择余弦距离等匹配方式。
- 写入数据时同时保存标题、正文、来源、分类、时间和权限字段。
模型切换后,向量维度或语义空间可能发生变化,因此不要把不同模型生成的向量直接混入同一个命名向量。更稳妥的做法是建立新集合或新版本,重新索引后再切换查询流量。⚙️
三、文档切分决定检索上限
很多检索效果问题并不来自向量数据库,而是来自切分策略。块太大时,一个向量会混合多个主题;块太小时,上下文又容易残缺。实践中可按标题、段落和列表等自然结构切分,再设置适度重叠,确保定义、条件和结论不会被机械截断。
每个数据块应保留稳定的文档编号、块编号和来源路径,并把标题信息拼接到正文前再生成向量。对于技术文档,还可以保留产品名、接口名、错误码和版本号,方便后续执行字段过滤或关键词召回。
切分参数不存在通用最优值。应使用真实问题建立评测集,再根据命中率、上下文完整度和响应耗时调整,而不是只依赖主观体验。
四、从向量检索升级到混合搜索
稠密向量擅长理解同义表达。例如“修改登录凭证”可能召回“重置密码”的内容,但面对错误码、缩写、型号和专有名词时,纯语义检索可能不够稳定。稀疏检索正好相反,它对精确词项敏感,却不擅长理解改写问题。
混合搜索可以针对同一查询同时执行两条召回链路:一条使用 Ollama 生成稠密查询向量,另一条构建稀疏关键词表示;随后利用 RRF 等排名融合方法合并结果。这样既能召回语义相近内容,也能保住包含精确关键词的文档。相关实践通常采用稠密向量、稀疏向量和排名融合的组合方式。来源链接 文档中心提供了查询与融合能力的进一步说明。
五、可落地的调优步骤
1. 先区分召回问题与生成问题
如果正确资料没有进入前几名,应调整切分、模型、过滤条件与召回参数;如果资料已经命中,但最终回答仍不准确,则应检查提示词、上下文排列和生成模型。把两个阶段混在一起调试,容易误判问题来源。
2. 为两路召回设置候选池
混合搜索不宜只让每条链路返回最终数量。可以先从稠密与稀疏通道分别召回较大的候选集,再融合并截取前若干条。候选过少可能漏掉有效结果,过多则增加延迟和噪声,需要结合数据规模测试。
3. 用过滤条件缩小语义范围
租户、部门、语言、产品版本和文档状态应作为 Payload 字段参与过滤。先过滤再进行向量匹配,通常比检索后由应用层删除结果更可靠,也能避免无权限内容进入后续生成上下文。🔐
4. 建立可重复的检索评测
准备一组真实查询,并人工标注相关文档。对比纯向量、纯关键词和混合搜索的 Top-K 命中情况,同时记录延迟、无结果率与重复结果。评测集还应覆盖同义问法、错别字、错误码、专有名词和跨段落问题。
- 语义问题:观察改写查询能否找到相同主题。
- 精确问题:检查编号、型号和术语是否稳定命中。
- 过滤问题:验证权限、版本与分类条件是否正确。
- 性能问题:分别记录嵌入生成、数据库查询和融合耗时。
六、上线前容易忽略的细节
批量写入时应使用稳定 ID,支持幂等更新;文档发生变化时,应删除旧块并重新生成相关向量。查询端可对高频问题缓存嵌入结果,但缓存键必须包含模型版本和预处理版本。日志中建议记录查询文本、过滤条件、候选得分、最终排序和数据版本,便于定位效果波动。
此外,本地部署并不等于绝对安全。仍需限制 Ollama 与 Qdrant 的监听地址,通过防火墙、反向代理或身份认证控制访问,并定期备份 Qdrant 持久化数据。生产环境还应设置资源上限,避免大批量嵌入任务影响在线检索。
总结
Ollama 与 Qdrant 的组合,为本地知识检索提供了一条清晰路径:先用可靠的切分和元数据设计建立索引,再通过稠密语义召回覆盖自然语言表达,通过稀疏关键词召回保护错误码与专有名词,最后以融合排序、真实评测集和分阶段监控持续调优。🚀 真正决定效果的不是单个参数,而是模型、数据、召回、过滤和评测形成的完整闭环。