LifeFrame
AI能力中心

语义搜索

语义搜索用于“用一句话找照片”。系统会把查询词转换为向量,再和已建立 embedding 的照片做相似度检索。

什么时候用

  • 你不记得照片文件名或具体日期,但记得场景和感觉。
  • 你想按“内容语义”而不是标签做检索。
  • 你希望先快速召回,再二次筛选。

操作步骤

  1. 进入照片管理页,打开语义搜索。
  2. 输入查询词 q(例如:下雨天在西湖边散步)。
  3. 按需调整参数:
    • minScore:最低相似度阈值(默认约 0.5)
    • limit:每页返回条数(1-50)
  4. 查看结果中的相似度百分比,优先处理高相关结果。

输入建议

  • 推荐结构:时间/地点 + 主体 + 动作/氛围
    例如: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) 结果相关性不稳定

  • 原因:输入语义太宽泛,或包含互相冲突的描述。
  • 处理:拆成两次检索(先宽后窄),并对比高相似度结果。

相关页面