You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在LangChain向量数据库相似性搜索中过滤排除文档?

相似性搜索中排除特定文档的实现方法

方法一:利用向量库原生反向过滤条件(推荐)

如果你的向量数据库(如MongoDB Atlas Vector Search、Pinecone等)支持反向查询操作符,可以直接在filter参数中定义排除规则。以排除page=1的文档为例:

# 排除page等于1的文档
results_with_scores = db.similarity_search_with_score("foo", filter=dict(page={"$ne": 1}))

注意:不同向量库的过滤语法可能有差异,比如Weaviate使用"!="而非"$ne",请根据你使用的库的官方语法调整操作符。

方法二:后处理过滤结果(兼容所有场景)

如果向量库不支持反向过滤参数,可以先获取全部相似结果,再手动过滤掉不需要的文档:

# 获取所有相似性搜索结果
all_results = db.similarity_search_with_score("foo")
# 过滤掉page=1的文档
filtered_results = [(doc, score) for doc, score in all_results if doc.metadata.get("page") != 1]

这种方式的缺点是会先返回所有匹配结果再过滤,数据集较大时可能影响性能,优先使用方法一。

内容的提问来源于stack exchange,提问作者JosephNgugiMuiruri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 07:32:01