You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于ChatGPT Word Embeddings获取最相似词汇?

如何基于ChatGPT API的词嵌入实现类似Gensim most_similar的功能

ChatGPT API本身并不提供直接遍历模型完整词表并计算词汇相似度的接口(因为其底层词表是闭源且未公开的),但你可以通过以下几种方式实现类似most_similar的效果:

方案1:自定义词汇集合+余弦相似度计算

如果你有一个目标词汇集合,可以手动批量获取每个词汇的嵌入,再通过余弦相似度排序找出与目标术语最相似的n个词汇:

步骤:

  • 调用OpenAI的Embeddings API(比ChatGPT对话API更适合纯嵌入获取)获取目标术语的嵌入向量。
  • 遍历你的自定义词汇列表,逐个获取每个词汇的嵌入向量。
  • 使用numpy或scipy计算目标向量与每个词汇向量的余弦相似度。
  • 按相似度得分降序排序,取前n个词汇。

代码示例:

import openai
import numpy as np
from scipy.spatial.distance import cosine

# 初始化OpenAI客户端
openai.api_key = "你的API密钥"

def get_embedding(text, model="text-embedding-ada-002"):
    text = text.replace("\n", " ")
    return openai.Embedding.create(input=[text], model=model)['data'][0]['embedding']

# 目标术语
target_term = "人工智能"
# 自定义词汇集合
vocab_list = ["机器学习", "深度学习", "自然语言处理", "计算机视觉", "数据挖掘"]

# 获取目标嵌入
target_emb = get_embedding(target_term)

# 计算相似度并排序
similarity_scores = []
for term in vocab_list:
    term_emb = get_embedding(term)
    # 余弦相似度 = 1 - 余弦距离
    sim = 1 - cosine(target_emb, term_emb)
    similarity_scores.append((term, sim))

# 按相似度降序排序,取前3个
top_similar = sorted(similarity_scores, key=lambda x: x[1], reverse=True)[:3]

print("最相似的词汇:")
for term, score in top_similar:
    print(f"{term}: {score:.4f}")

方案2:使用开源嵌入模型替代

如果不需要严格依赖ChatGPT的嵌入,可以选择本地开源的嵌入模型(如Sentence-BERT、GloVe、Word2Vec),这类模型可以直接提供类似most_similar的内置方法,且无需调用API:

示例(Sentence-BERT):

from sentence_transformers import SentenceTransformer, util

model = SentenceTransformer('all-MiniLM-L6-v2')

# 目标术语
target_term = "人工智能"
# 词汇集合
vocab_list = ["机器学习", "深度学习", "自然语言处理", "计算机视觉", "数据挖掘"]

# 获取所有嵌入
target_emb = model.encode(target_term, convert_to_tensor=True)
vocab_embs = model.encode(vocab_list, convert_to_tensor=True)

# 计算余弦相似度
cos_scores = util.cos_sim(target_emb, vocab_embs)[0]

# 排序取前3个
top_indices = cos_scores.argsort(descending=True)[:3]
top_similar = [(vocab_list[i], cos_scores[i].item()) for i in top_indices]

print("最相似的词汇:")
for term, score in top_similar:
    print(f"{term}: {score:.4f}")

方案3:结合向量数据库优化大词汇量场景

如果你的词汇集合非常大(上万级以上),逐个调用API计算会效率低下,此时可以:

  • 批量获取所有词汇的嵌入并存储到向量数据库(如FAISS、Milvus)。
  • 将目标术语的嵌入输入向量数据库,直接检索出最相似的n个词汇。
    这种方式能大幅提升检索效率,适合大规模词汇集合的场景。

关键限制说明

  • ChatGPT的对话模型(gpt-3.5-turbo、gpt-4)并不直接返回单个词的底层嵌入,建议使用OpenAI专门的Embeddings API(如text-embedding-ada-002)来获取文本嵌入,更稳定且成本更低。
  • 无法访问ChatGPT模型的完整词表,因此无法像Gensim那样遍历整个模型词汇库,必须依赖你自己定义的词汇集合。

内容的提问来源于stack exchange,提问作者Marj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 03:34:59