Skip to content
🔗 分享本题
查看我的学习进度 →

Metadata 过滤先限定租户权限和时间边界,再在可见文档中执行向量近邻检索

🧠 图解记忆: Metadata 先限定可见数据边界,向量相似度再决定相关性。

💡 答案要点

Metadata 过滤示例:

python
# Chroma 示例
results = collection.query(
    query_embeddings=[...],
    filter={
        "tenant_id": "company_a",
        "department": {"$in": ["hr", "finance"]},
        "created_at": {"$gte": "2025-01-01"},
        "access_level": {"$lte": 3}
    },
    n_results=5
)

# Milvus 示例
results = collection.search(
    data=[...],
    filter="tenant_id == 'company_a' and created_at > '2025-01-01'",
    limit=5
)

应用场景:

场景Metadata 字段过滤条件
多租户tenant_idtenant_id == "xxx"
权限控制access_levelaccess_level <= user_level
时间范围created_atcreated_at >= "2025-01-01"
部门隔离departmentdepartment in ["hr", "finance"]
文档类型doc_typedoc_type == "policy"

面试话术:

"Metadata 过滤可实现逻辑多租户,但必须由服务端从可信身份生成过滤条件,不能接受模型或客户端任意传 tenant_id。还要验证索引前/后过滤语义、缓存键、备份、日志和侧信道;高风险租户是否物理隔离取决于合规与威胁模型,不能只看成本。"