# 默认算分逻辑 - 快速总结

## 一句话回答

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

---

## 详细说明

### `semantic_similarity.py`
```python
from lib.semantic_similarity import compare_phrases

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

### `text_embedding.py` 的 `compare_phrases()`
```python
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 判断，还支持：

```python
# 方法 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% 的情况）
```python
# 不传 method 参数，使用默认值
result = await compare_phrases("深度学习", "神经网络")
```
**原因**: 准确度最高，有缓存，第二次极快

---

### 场景 2: 批量计算
```python
# 如果要计算大量相似度
result = await compare_phrases("A", "B", method="cosine", dim=128)
```
**原因**: 向量生成后，计算速度快

---

### 场景 3: 与 semantic_similarity 兼容
```python
# 直接替换导入，无需修改代码
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**:
```python
# 默认（AI 判断）
result = await compare_phrases("A", "B")

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

---

## 运行示例

```bash
# 查看详细说明
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. 🚀 **有缓存机制**: 第二次调用极快

---

## 快速参考

```python
# 最简单的用法（推荐）⭐
from lib.text_embedding import compare_phrases

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

就这么简单！
