一、过滤搜索Filtered Search过滤搜索是指在向量检索的同时用标量条件过滤数据。1. 为什么需要过滤搜索假设有一个电商商品库用户想找“500 元以下的运动鞋”。如果只用向量搜索可能会返回“高端运动鞋”如果只用标量过滤又无法按“相关性”排序。过滤搜索把两者结合起来。2. 基本用法results client.search( collection_nameproducts, data[query_vector], limit10, filterprice 500 and category 运动鞋, output_fields[name, price, category] )3. 支持的过滤表达式类型示例比较price 100、age 30、status ! deleted逻辑price 100 and category 鞋、a 1 or b 2集合category in [鞋, 衣服]、id not in [1, 2, 3]模糊匹配title like 运动%、title like %鞋%数组ARRAY_CONTAINS(tags, 热销)JSONmetadata[color] red空值field is null、field is not null4. 模糊匹配# 前缀匹配以运动开头 filtertitle like 运动% # 后缀匹配以鞋结尾 filtertitle like %鞋 # 包含匹配包含运动 filtertitle like %运动% # 单字符匹配 filtertitle like 运_鞋 # 匹配运动鞋、运力鞋5. 在查询中预过滤 vs 后过滤方式说明性能预过滤先过滤再向量检索数据量小时快后过滤先向量检索再过滤可能返回不足 limit 条Milvus 会自动优化过滤时机通常无需手动指定。二、混合搜索Hybrid Search混合搜索是指同时使用多个向量字段或多个查询向量进行检索然后融合结果。1. 为什么需要混合搜索单一向量检索有局限性稠密向量擅长语义匹配但可能漏掉关键词稀疏向量擅长关键词匹配但不懂语义两者结合效果更好。2. 多向量字段的 Collectionfrom pymilvus import FieldSchema, CollectionSchema, DataType fields [ FieldSchema(nameid, dtypeDataType.INT64, is_primaryTrue, auto_idTrue), FieldSchema(namedense_vector, dtypeDataType.FLOAT_VECTOR, dim768), FieldSchema(namesparse_vector, dtypeDataType.SPARSE_FLOAT_VECTOR), FieldSchema(nametext, dtypeDataType.VARCHAR, max_length512), ] schema CollectionSchema(fieldsfields) client.create_collection( collection_namehybrid_docs, schemaschema )3. 为不同向量字段创建索引# 稠密向量索引 client.create_index( collection_namehybrid_docs, field_namedense_vector, index_params{ index_type: HNSW, metric_type: COSINE, params: {M: 16, efConstruction: 200} } ) # 稀疏向量索引 client.create_index( collection_namehybrid_docs, field_namesparse_vector, index_params{ index_type: SPARSE_INVERTED_INDEX, metric_type: IP } )4. 执行混合搜索from pymilvus import AnnSearchRequest, RRFRanker # 稠密向量查询 dense_request AnnSearchRequest( data[dense_query_vector], anns_fielddense_vector, param{metric_type: COSINE, params: {ef: 100}}, limit20 ) # 稀疏向量查询 sparse_request AnnSearchRequest( data[sparse_query_vector], anns_fieldsparse_vector, param{metric_type: IP}, limit20 ) # 融合结果RRF 排序 results client.hybrid_search( collection_namehybrid_docs, reqs[dense_request, sparse_request], rankerRRFRanker(k60), # RRF 融合 limit10, output_fields[text] )5. 结果融合策略策略说明RRFReciprocal Rank Fusion基于排名融合无需调参推荐WeightedRanker加权融合可调整各路的权重from pymilvus import WeightedRanker # 加权融合稠密向量占 70%稀疏向量占 30% results client.hybrid_search( collection_namehybrid_docs, reqs[dense_request, sparse_request], rankerWeightedRanker(0.7, 0.3), limit10 )三、常见问题问题原因解决方案检索结果不相关Embedding 模型不合适换更好的模型如 bge-large-zh检索速度慢索引参数不合适调大ef或nprobe返回结果不足过滤条件太严格放宽过滤条件插入失败维度不匹配检查维度是否和 Schema 一致内存占用高索引类型不合适换 IVF_PQ 或 DiskANN
企业数字化 ERP 产品动态
相关推荐
GO [ 指针 ] 前面我们已经学习了 Go 的变量、常量、数据类型、输入输出、条件控制、切片、字符串和映射表。接下来开始学习 Go 语言中连接变量和存储位置的重要概念:指针。
按照 Go 官方语言规范 的定义,指针类型表示指向某种基础类型变量的所有指针。未初始化指针的… · 2026/9/25 19:51:26
地下1000米,130个大气压:中国把空气存成了世界最大的“充电宝“ 先说一件事:这不是一条普通的能源新闻。2026年9月12日,江苏华能金坛盐穴压缩空气储能二期项目的两台机组完成整组启动,单台350兆瓦,总装机700兆瓦,设计储能时长8小时,核心装备100%国产化。第二天࿰… · 2026/9/25 19:51:20
GO [ 映射表 ] 前面我们已经学习了 Go 的变量、常量、数据类型、输入输出、条件控制、切片和字符串。接下来开始学习 Go 语言中非常重要的一种集合类型:映射表,也就是 map。
很多初学者会把 map 理解成“可以用字符串做下标的数组”。这个理解不准确。按照 Go 官方语言… · 2026/9/25 19:51:08
时隔10年,这本Python经典书第3版重磅上市! 有这样一本入门的极为出色的作品。这本书的畅销范围覆盖了全球市场。它的原版图书销量数字超过了50万册这个数字。中文版图书的累计销售数量接近30万册。此外, 该书还被翻译成了日语版本、韩语版本、意大利语版本以及德语版本等多语种版本。评分高达八分八点, 在豆瓣平台上获得… · 2026/9/25 20:15:13
开源LLM代码评审工作流:基于CLI与Git Diff的可审计实践 1. 项目概述:这不是一个“工具”,而是一套可落地的开源代码评审工作流“open-code-review”这个名字乍看像某个具体软件或CLI命令,但实际它代表的是一种正在快速演进的工程实践范式——把大语言模型(LLM)深度嵌入到开发… · 2026/9/25 20:14:43
在多人之间犹豫?狗头军师多对象比较框架,一次看清该选谁 在多人之间犹豫?狗头军师多对象比较框架,一次看清该选谁 【免费下载链接】goutoujunshi 一个先接住情绪、再分析关系并给出可执行策略的 Codex 恋爱军师,内置心理、法律、社会、人文、哲学、婚姻家庭与性学知识库,支持多元关系。 … · 2026/9/25 20:14:43
2026 专业的AI论文写作软件综合榜:TaoToken 统一 Key 接入配置指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 20:14:30
无边框窗口缩放实战:用 TaoToken 统一 Key 打通鼠标事件与图元拉伸配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 20:14:05
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37