AI能力中心
语义搜索
语义搜索用于“用一句话找照片”。系统会把查询词转换为向量,再和已建立 embedding 的照片做相似度检索。
什么时候用
- 你不记得照片文件名或具体日期,但记得场景和感觉。
- 你想按“内容语义”而不是标签做检索。
- 你希望先快速召回,再二次筛选。
操作步骤
- 进入照片管理页,打开语义搜索。
- 输入查询词
q(例如:下雨天在西湖边散步)。 - 按需调整参数:
minScore:最低相似度阈值(默认约 0.5)limit:每页返回条数(1-50)
- 查看结果中的相似度百分比,优先处理高相关结果。
输入建议
- 推荐结构:时间/地点 + 主体 + 动作/氛围。
例如:2024 年夏天在东京街头夜景。 - 避免过短输入(如仅 1 个词),会降低区分度。
- 第一次可用中性描述,第二次再加入细节词提高命中质量。
检索策略说明
- 检索对象:仅包含
embedding的照片。 - 默认按相似度降序分页返回。
- 查询为空会直接报错,不会发起有效检索。
- 结果页会展示相似度,便于你做“高相关优先”的人工判断。
输入输出示例
示例请求
GET /api/photos/semantic-search?q=%E4%B8%8B%E9%9B%A8%E5%A4%A9%E5%9C%A8%E8%A5%BF%E6%B9%96&limit=20&page=1&minScore=0.55示例响应(节选)
{
"query": "下雨天在西湖",
"total": 12,
"page": 1,
"limit": 20,
"photos": [
{
"id": "photo_xxx",
"thumbnailUrl": "https://...",
"title": "西湖边",
"similarity": 0.82,
"similarityPercent": 82
}
]
}注意事项
- 未完成 embedding 的照片无法被语义搜索命中。
limit会被系统限制在 1-50 之间,过大请求会自动收敛。- 组织与个人数据隔离,搜索结果受当前访问上下文约束。
常见失败与排查
1) 返回“搜索词不能为空”
- 原因:
q为空或仅空格。 - 处理:输入至少一个有语义信息的短句再试。
2) 结果太少或为空
- 原因:阈值过高、图库未建立 embedding、描述过于抽象。
- 处理:降低
minScore、改写为更具体场景词、确认目标照片已完成索引。
3) 结果相关性不稳定
- 原因:输入语义太宽泛,或包含互相冲突的描述。
- 处理:拆成两次检索(先宽后窄),并对比高相似度结果。