#!/usr/bin/env python3 """ 使用 SentenceModel 类(类似 text2vec 的用法) """ import asyncio from lib.text_embedding import SentenceModel async def main(): print("=" * 60) print("使用 SentenceModel 类") print("=" * 60) # 创建模型(只需要创建一次) model = SentenceModel( model_name='openai/gpt-4.1-mini', dim=128, # 向量维度 use_cache=True # 启用缓存 ) # 1. 文本向量化 print("\n1. 单个文本向量化") vector = await model.encode("机器学习很有趣") print(f"向量维度: {vector.shape}") # 2. 批量向量化 print("\n2. 批量向量化") texts = ["文本1", "文本2", "文本3"] vectors = await model.encode(texts) print(f"转换了 {len(vectors)} 个文本") # 3. 计算相似度 print("\n3. 计算相似度") score = await model.similarity("深度学习", "神经网络") print(f"相似度分数: {score:.3f}") # 4. 实际应用:找出最相似的文本 print("\n4. 实际应用:找出最相似的文本") query = "人工智能" candidates = [ "机器学习算法", "深度神经网络", "今天天气很好", "自然语言处理", "晚上吃什么饭" ] print(f"\n查询文本: {query}") print(f"候选文本: {candidates}") print("\n相似度排名:") # 计算所有候选文本的相似度 scores = [] for candidate in candidates: score = await model.similarity(query, candidate) scores.append((candidate, score)) # 按相似度排序 scores.sort(key=lambda x: x[1], reverse=True) for i, (text, score) in enumerate(scores, 1): print(f" {i}. {text:20s} -> {score:.3f}") if __name__ == "__main__": asyncio.run(main())