DEFAULT_SCORING_SUMMARY.md 4.3 KB

默认算分逻辑 - 快速总结

一句话回答

默认算分逻辑是:AI 直接判断语义相似度


详细说明

semantic_similarity.py

from lib.semantic_similarity import compare_phrases

result = await compare_phrases("深度学习", "神经网络")
# 使用: AI 直接判断(唯一方法)
# 返回: {"说明": "...", "相似度": 0.85}

text_embedding.pycompare_phrases()

from lib.text_embedding import compare_phrases

result = await compare_phrases("深度学习", "神经网络")
# 使用: AI 直接判断(默认,与 semantic_similarity 相同)
# 返回: {"说明": "...", "相似度": 0.85}

两者默认行为完全一致!


工作流程

输入: "深度学习" vs "神经网络"
  ↓
发送给 AI 的 Prompt:
  "请计算以下两个文本的语义相似度,输出 0-1 之间的分数"
  ↓
AI 理解语义
  ↓
AI 返回:
  {
    "说明": "两者都是人工智能领域的核心概念,深度学习基于神经网络...",
    "相似度": 0.85
  }

text_embedding 的额外功能

除了默认的 AI 判断,还支持:

# 方法 1: AI 直接判断(默认)⭐
result = await compare_phrases("A", "B")
# 或明确指定
result = await compare_phrases("A", "B", method="ai_direct")

# 方法 2: 余弦相似度(基于向量)
result = await compare_phrases("A", "B", method="cosine")

# 方法 3: 欧氏距离
result = await compare_phrases("A", "B", method="euclidean")

# 方法 4: 曼哈顿距离
result = await compare_phrases("A", "B", method="manhattan")

# 方法 5: 点积
result = await compare_phrases("A", "B", method="dot_product")

准确度对比

ai_direct (默认)   ⭐⭐⭐⭐⭐ 最准确
cosine             ⭐⭐⭐⭐
euclidean          ⭐⭐⭐
manhattan          ⭐⭐⭐
dot_product        ⭐⭐⭐

速度对比(已有缓存)

dot_product        ⚡⚡⚡⚡⚡ 最快
manhattan          ⚡⚡⚡⚡
euclidean          ⚡⚡⚡⚡
cosine             ⚡⚡⚡
ai_direct          ⚡⚡⚡⚡⚡ (缓存命中后极快)

推荐使用

场景 1: 日常使用(99% 的情况)

# 不传 method 参数,使用默认值
result = await compare_phrases("深度学习", "神经网络")

原因: 准确度最高,有缓存,第二次极快


场景 2: 批量计算

# 如果要计算大量相似度
result = await compare_phrases("A", "B", method="cosine", dim=128)

原因: 向量生成后,计算速度快


场景 3: 与 semantic_similarity 兼容

# 直接替换导入,无需修改代码
from lib.text_embedding import compare_phrases  # 改这里
result = await compare_phrases("A", "B")  # 其他代码不变

常见问题

Q1: 为什么默认用 AI 判断?

A: 因为准确度最高,且有缓存机制,第二次调用极快。

Q2: AI 判断会不会很慢?

A:

  • 首次调用: 需要 1-3 秒(调用 AI)
  • 第二次调用: 几乎瞬间(从缓存读取)

Q3: 什么时候用其他方法?

A:

  • 批量计算相似度 → 用 cosine
  • 需要极快速度 → 用向量方法
  • 其他情况 → 用默认的 ai_direct

Q4: 如何切换算分方法?

A:

# 默认(AI 判断)
result = await compare_phrases("A", "B")

# 切换到余弦相似度
result = await compare_phrases("A", "B", method="cosine")

运行示例

# 查看详细说明
cat examples/scoring_logic_explanation.md

# 运行交互式演示
python examples/demo_scoring_methods.py

# 运行对比示例
python examples/compare_with_semantic_similarity.py

核心结论

  1. 默认算分逻辑: AI 直接判断语义相似度
  2. 与 semantic_similarity 完全一致: 返回格式和算分方法都相同
  3. 99% 情况用默认值就好: 不需要指定 method 参数
  4. 额外功能: 支持多种向量算分方法(可选)
  5. 🚀 有缓存机制: 第二次调用极快

快速参考

# 最简单的用法(推荐)⭐
from lib.text_embedding import compare_phrases

result = await compare_phrases("深度学习", "神经网络")
print(result['相似度'])  # 0.85
print(result['说明'])     # AI 给出的详细理由

就这么简单!