Chroma 过滤运算符详解:where 与 where_document 完整指南

🎉摘要:本文详解Chroma中where和where_document支持的过滤运算符,包括$eq、$gt、$in、$contains、$regex等,帮助你在向量检索中精确过滤metadata和文档文本。

过滤是 Chroma 里最容易被低估的部分。向量检索只能回答“跟这句话像的有哪些”,真实业务里你几乎总要再加一句“而且要 2024 年之后的”、“而且只要售后类的”、“而且必须包含'退款'两个字”。这一章把 where 和 where_document 讲透。

下面先列出 Chroma 支持的运算符,从整体上进行把握,也可作为查询手册。

where 支持的运算符

where 用于过滤 metadata:

运算符含义适用类型示例
(直接给值)等于str / int / float / bool{"category": "售后"}
$eq等于str / int / float / bool{"year": {"$eq": 2025}}
$ne不等于str / int / float / bool{"category": {"$ne": "内部"}}
$gt大于int / float{"score": {"$gt": 0.7}}
$gte大于等于int / float{"score": {"$gte": 0.5}}
$lt小于int / float{"year": {"$lt": 2026}}
$lte小于等于int / float{"year": {"$lte": 2025}}
$in在列表里str / int / float / bool{"tag": {"$in": ["合同","工单"]}}
$nin不在列表里str / int / float / bool{"cat": {"$nin": ["测试","草稿"]}}
$contains数组包含某元素数组字段{"tags": {"$contains": "AI"}}
$not_contains数组不包含某元素数组字段{"tags": {"$not_contains": "废弃"}}
$and且(列表里所有条件都要满足)—{"$and": [{"score":{"$gt":0.6}},{"cat":"售后"}]}
$or或(列表里任一条件满足)—{"$or": [{"cat":"合同"},{"cat":"工单"}]}

where_document 支持的运算符

where_document 用于过滤 document 文本:

运算符含义示例
$contains包含子串{"$contains": "退款申请"}
$not_contains不包含子串{"$not_contains": "作废"}
$regex匹配正则{"$regex": "^订单.*"}
$not_regex不匹配正则{"$not_regex": "测试\\d+"}
$and / $or组合{"$and": [{"$contains":"退款"},{"$not_contains":"驳回"}]}

请看后续小节,将逐步展开。

说说我的看法
全部评论()
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号