#!/usr/bin/env python3 """ 对比 semantic_similarity 和 text_embedding 两个模块的接口 """ import asyncio async def main(): print("=" * 70) print("对比 semantic_similarity 和 text_embedding 两个模块") print("=" * 70) print() # ========== 1. 导入方式对比 ========== print("1. 导入方式") print("-" * 70) print("# semantic_similarity 模块") print("from lib.semantic_similarity import compare_phrases") print() print("# text_embedding 模块(兼容接口)") print("from lib.text_embedding import compare_phrases") print() # ========== 2. 基本使用对比 ========== print("2. 基本使用(完全兼容)") print("-" * 70) print(""" # 两个模块的基本用法完全相同 result = await compare_phrases("深度学习", "神经网络") # 返回格式完全一致 { "说明": "简明扼要说明理由", "相似度": 0.85 } """) # ========== 3. 实际对比 ========== print("3. 实际效果对比") print("-" * 70) phrase_a = "机器学习" phrase_b = "人工智能" print(f"\n测试短语: 【{phrase_a}】 vs 【{phrase_b}】\n") # 使用 text_embedding 模块(因为它兼容 semantic_similarity) from lib.text_embedding import compare_phrases as compare_phrases_embed result = await compare_phrases_embed(phrase_a, phrase_b) print("text_embedding.compare_phrases() 结果:") print(f" 相似度: {result['相似度']}") print(f" 说明: {result['说明']}") print() # ========== 4. 功能对比 ========== print("4. 功能对比") print("-" * 70) comparison = """ ┌─────────────────────────────────────────────────────────────────┐ │ 功能对比表 │ ├─────────────────────────┬─────────────────┬─────────────────────┤ │ 功能 │ semantic_sim. │ text_embedding │ ├─────────────────────────┼─────────────────┼─────────────────────┤ │ 返回格式 │ {说明, 相似度} │ {说明, 相似度} ✅ │ │ AI 直接判断 │ ✅ │ ✅ │ │ 余弦相似度 (向量) │ ❌ │ ✅ │ │ 欧氏距离 (向量) │ ❌ │ ✅ │ │ 曼哈顿距离 (向量) │ ❌ │ ✅ │ │ 文本向量化 (encode) │ ❌ │ ✅ │ │ 批量处理 │ ❌ │ ✅ │ │ 缓存机制 │ ✅ │ ✅ │ │ 多模型支持 │ ✅ │ ✅ │ └─────────────────────────┴─────────────────┴─────────────────────┘ """ print(comparison) # ========== 5. 使用场景推荐 ========== print("5. 使用场景推荐") print("-" * 70) recommendations = """ 【推荐使用 semantic_similarity】 - 只需要简单的相似度判断 - 专注于语义分析 - 不需要向量化功能 【推荐使用 text_embedding】 - 需要文本向量化(encode) - 需要多种相似度计算方法 - 需要批量处理文本 - 需要兼容 semantic_similarity 的代码 - 想要更多的灵活性 【无缝迁移】 如果你之前使用 semantic_similarity.compare_phrases(), 可以直接替换为 text_embedding.compare_phrases(), 代码无需任何修改! # 旧代码 from lib.semantic_similarity import compare_phrases result = await compare_phrases("A", "B") # 新代码(只需改导入) from lib.text_embedding import compare_phrases result = await compare_phrases("A", "B") """ print(recommendations) # ========== 6. 扩展功能演示 ========== print("6. text_embedding 的扩展功能演示") print("-" * 70) print("\n6.1 使用不同的计算方法:") methods = ["ai_direct", "cosine", "euclidean"] for method in methods: result = await compare_phrases_embed( phrase_a, phrase_b, method=method, dim=128 ) print(f" {method:15s}: 相似度 = {result['相似度']:.3f}") print("\n6.2 文本向量化:") from lib.text_embedding import encode vector = await encode("测试文本", dim=128) print(f" 向量维度: {vector.shape}") print(f" 向量前5个值: {vector[:5]}") print("\n6.3 批量处理:") from lib.text_embedding import SentenceModel model = SentenceModel(dim=128) texts = ["文本1", "文本2", "文本3"] vectors = await model.encode(texts) print(f" 批量转换 {len(texts)} 个文本") print() print("=" * 70) print("对比完成!") print("=" * 70) if __name__ == "__main__": asyncio.run(main())