当前位置: 首页 > news >正文

MMR搜索和LangChain整合Milvus实战

引言

        在现代信息检索系统的构建过程中,搜索策略的选择往往决定了用户体验的质量。相似度搜索与MMR最大边界相关搜索作为两种主流技术方案,各自承担着不同的使命:前者专注于精确匹配,后者致力于平衡相关性与多样性。

        本文将通过深入的技术原理剖析和实际应用案例,为您揭示这两种搜索方法的核心差异。您将了解到相似度搜索如何通过向量空间距离计算实现高精度匹配,以及MMR算法如何通过巧妙的权衡机制解决传统搜索中的信息冗余问题。

相似度搜索与MMR最大边界相关搜索原理

核心概念介绍

相似度搜索(Similarity Search)和MMR最大边界相关搜索(Maximal Marginal Relevance Search)是现代信息检索系统中的两种重要搜索策略。这两种方法在实际应用中各有优势,理解其差异对于构建高效的搜索系统至关重要。

行业应用场景对比

为了更好地理解两种搜索方法的差异,我们通过电商推荐系统的实际案例进行说明:

相似度搜索场景:当用户点击商品A时,系统推荐相似商品B、C等高度相关的产品。这种方法注重精确匹配,能够满足用户对特定类型产品的明确需求。

MMR搜索场景:当用户浏览历史呈现多样化特征时,系统推荐跨品类商品,帮助用户发现更多可能感兴趣的内容。这种方法平衡了相关性和多样性,避免推荐结果过于单一。

基础相似度搜索详解

工作原理

基础相似度搜索通过向量空间中的距离计算(如余弦相似度或L2距离)来识别最接近目标向量的结果。其基本流程为:

核心特点

相似度搜索具有以下显著特点:

纯向量驱动:算法完全依赖向量空间中的几何距离,主要使用余弦相似度和L2距离等度量方法。

结果同质化:由于算法特性,返回的结果往往集中在最相似的连续区域,可能导致结果多样性不足。

高性能表现:算法时间复杂度为O(n + klogk),在大规模数据集上仍能保持良好的响应速度。

参数配置方法

使用vector_store.similarity_search()方法时,可以通过以下配置实现精确控制:

vector_store.as_retriever(search_type="similarity",search_kwargs={"k": 5,  # 返回结果数量"score_threshold": 0.65,  # 相似度阈值,仅返回相似度≥65%的结果"filter": "category == 'AI'",  # 基于元数据的过滤条件"param": {  # Milvus专属参数"nprobe": 32,  # 控制搜索时访问的聚类数量,数值越大搜索越精确但耗时更长"radius": 0.8  # 范围搜索半径,结合score_threshold限定结果范围}}
)

典型应用场景

相似度搜索在以下场景中表现优异:

精确语义匹配:适用于专利检索、学术论文查重等需要高精度匹配的场景,能够识别高度相关的内容。

基于内容的推荐:实现"更多类似内容"功能,为用户提供与当前浏览内容高度相关的推荐。

敏感信息过滤:通过设置高阈值实现精准匹配,有效过滤不相关或敏感信息。

最大边界相关搜索(MMR)深度解析

算法背景与目标

最大边界相关搜索(Maximal Marginal Relevance,MMR)是信息检索和推荐系统中的重要算法。其核心目标是在返回结果中平衡相关性与多样性,有效解决传统相似性搜索可能导致的信息冗余问题。

设计理念

MMR算法的设计初衷是解决传统相似性搜索(如余弦相似度)的局限性。在需要覆盖多角度信息或提供多样化内容推荐的场景中,MMR能够显著提升用户体验和信息获取效率。

算法工作流程

MMR算法的工作流程包括:

算法的核心逻辑可以通过以下流程图理解:

初始候选集 (fetch_k=20)↓
相似度排序 [1, 2, 3, …, 20]↓
多样性选择 (λ=0.5)↓
最终结果 (k=5) [1, 5, 12, 3, 18]  # 兼顾相似性与差异性

参数配置详解

使用vector_store.max_marginal_relevance_search()方法的标准配置如下:

mmr_retriever = vector_store.as_retriever(search_type="mmr",search_kwargs={"k": 3,  # 最终返回的结果数量"fetch_k": 20,  # 候选集大小,数值越大结果可能更多样但计算成本更高"lambda_mult": 0.6,  # 相关性与多样性权衡系数,范围[0,1]"params": {"nprobe": 64,  # Milvus IVF索引参数,控制搜索聚类数量"ef": 128  # Milvus HNSW索引参数,控制搜索深度}}
)

关键参数对比分析

参数影响效果对比

参数相似度搜索MMR搜索影响效果
k控制结果数量控制最终结果数量数值越大返回越多,但可能降低精度
lambda_mult不适用0-1之间的权衡系数值越大越偏向相关性,值越小越强调多样性
score_threshold过滤低质量结果通常不使用阈值设置需根据embedding模型特性调整
filter元数据过滤支持相同功能可结合业务维度进行精确筛选

MMR典型应用场景

MMR搜索在以下场景中具有显著优势:

多样化推荐系统:在电商环境中实现跨品类推荐,帮助用户发现更多潜在兴趣点。

知识发现平台:在科研文献探索中提供多角度观点,促进学术创新和知识交叉融合。

内容生成系统:为创作者提供多样化的素材和灵感,避免内容同质化。

综合对比与决策指南

性能与应用对比矩阵

维度相似度搜索MMR搜索
结果质量高相似度但可能存在重复多样性更佳,覆盖面更广
响应速度平均120毫秒平均200-300毫秒
内存消耗较低(仅存储TopK结果)较高(需缓存fetch_k候选集)
适用场景精确匹配、去重检测推荐系统、知识发现
可解释性直观的相似度排序综合评分需要二次解释

选择建议

在实际应用中,选择相似度搜索还是MMR搜索应该基于具体的业务需求和场景特点。当需要高精度匹配和快速响应时,相似度搜索是更好的选择。当需要提供多样化结果和避免信息冗余时,MMR搜索能够提供更好的用户体验。

相关文章:

  • 使用 Flutter 开发 App 时,想要根据 Figma 设计稿开发出响应式 UI 界面
  • 将 Figma 设计稿通过编码一比一还原成 App 界面
  • 数学复习笔记 21
  • 【科研绘图系列】R语言绘制GO term 富集分析图(enrichment barplot)
  • 100个 Coze 智能体实战案例
  • Vite打包优化实践:从分包到性能提升
  • WPS 免登录解锁编辑
  • window 显示驱动开发-转换 Direct3D 固定函数状态(二)
  • 软件工程 3.0:智能驱动的软件新时代
  • OpenFeign vs MQ:微服务通信如何选型?详解同步与异步的适用场景
  • kafka学习笔记(三、消费者Consumer使用教程——从指定位置消费)
  • 性能测试-jmeter实战1
  • SSE流式传输
  • QML视图组件ListView、TableView、GridView介绍
  • 逻辑回归知识点
  • PostgreSQL学会如何建表
  • 低代码开发模式下的应用交付效率优化:拖拽式交互机制研究
  • 提升WSL中Ubuntu编译速度的完整指南
  • 【地图】腾讯地图页面卡顿问题解决
  • ubuntu中,文本编辑器nano和vim区别,vim的用法
  • amh安装wordpress/杭州网站优化咨询
  • 做书籍封皮的网站/磁力猫torrent kitty
  • 四川成都疫情/福州seo网络推广
  • 推广网站建设花费得多少钱/软文编辑
  • 用路由器做简单的网站/优化搜索引擎
  • 把自己的网站卖给别人后对方做违法吗/网络媒体推广报价