OpenAI Embedding:基于人工智能的搜索新篇章


theme: orange

本文正在参加「金石计划」

Embedding模型在许多应用场景中都有广泛的应用。在OpenAI中,文本嵌入技术主要用于衡量文本字符串之间的相关性。

什么是Embedding

嵌入(Embeddings)是一种将离散变量表示为连续向量的方法。它在机器学习中起到了不可或缺的作用。例如,在机器翻译中的词嵌入和分类变量中的实体嵌入都是嵌入的成功应用。

image.png

嵌入的本质是“压缩”,用较低维度的k维特征去描述有冗余信息的较高维度的n维特征,也可以叫用较低维度的k维空间去描述较高维度的n维空间。在思想上,与线性代数的主成分分析PCA,奇异值分解SVD异曲同工,事实上,PCA和SVD也可以叫做Embedding方法。

OpenAI 早先提供了第一代模型(在模型ID中用-001表示),包括text-similarity-davinci-001和davinci-001嵌入等等,而后在2022年12月将嵌入模型更新为text-embedding-ada-002(在模型ID中用-002表示)。新模型拥有较小的嵌入大小,新嵌入只有1536维,并且提供:

  • 价格降低了90%-99.8%
  • 嵌入维度大小减少了1/8,降低了向量数据库成本
  • 端点统一,便于使用
### 免费 Embedding 服务与开源 Embedding 模型 在探索免费的嵌入(embedding)服务或开源模型时,可以考虑以下几个方向: #### 1. **Facebook AI 的 DLRM** Deep Learning Recommendation Model (DLRM)[^1] 是 Facebook 提供的一个推荐系统框架。虽然它主要用于广告和推荐场景中的特征处理,但它也涉及到了一些预训练技术,这些技术可能间接帮助构建自己的 embedding 层。 尽管 DLRM 并不直接提供现成的 embedding 方法,但其架构设计提供了如何高效利用稀疏数据来生成 embeddings 的思路。这可以帮助开发者理解如何针对特定任务定制化实现 embedding 功能。 #### 2. **Hugging Face Transformers** Hugging Face 提供了大量的基于 Transformer 架构的预训练模型,其中包括许多可以直接用于文本 embedding 的工具[^2]。例如 BERT、RoBERTa 和 DistilBERT 都是非常流行的选项。通过加载这些模型并提取最后一层隐藏状态作为输入序列的表示形式,即可获得高质量的文本 embedding 向量。 以下是使用 Hugging Face `transformers` 库生成文本 embedding 的简单示例: ```python from transformers import AutoTokenizer, AutoModel import torch tokenizer = AutoTokenizer.from_pretrained("sentence-transformers/all-MiniLM-L6-v2") model = AutoModel.from_pretrained("sentence-transformers/all-MiniLM-L6-v2") def get_embedding(text): inputs = tokenizer(text, return_tensors="pt", truncation=True, padding=True) with torch.no_grad(): outputs = model(**inputs) return outputs.last_hidden_state.mean(dim=1).numpy() text = "This is an example sentence." embedding = get_embedding(text) print(embedding.shape) # 输出形状应类似于 (1, dim),其中dim取决于具体模型 ``` #### 3. **Sentence-BERT** Sentence-BERT (SBERT) 是一种改进版的 BERT 变体,专门优化了句子级别的相似度计算任务。相比原始 BERT,它能够更快速地生成固定长度的句子 embedding,并且效果更好。因此如果目标是将文档片段存储至 Qdrant 数据库以便后续检索,则 SBERT 将是一个非常合适的选择。 #### 4. **Word2Vec 和 GloVe** 对于词级别而非句级的应用场合,Google 的 Word2Vec 或斯坦福大学开发的 GloVe 均可视为经典解决方案之一。它们均能有效捕捉词语间的语义关系并通过低维度稠密向量表达出来。不过需要注意的是,这类方法仅适用于单独单词而不是整个段落或者篇章结构。 #### 5. **FastText** 由 Facebook Research 发布的 FastText 不仅支持标准 NLP 处理流程里的 tokenization 步骤外还额外增加了子字符建模能力从而使得即使面对未见过的新词汇也能合理推测出相应表征 。这对于某些领域内的专有名次尤其有用处因为往往难以穷尽列举所有可能出现的情况. --- ### 总结 综上所述,在寻找适合项目需求的 free/open source embeddings 方面有多种途径可供尝试:从大型通用平台如 HuggingFace 到专注于特殊用途的小众算法比如 SentenceTransformers;另外还有传统统计学习范式的代表作像 word2vec/glove/fastext等等。每种方案都有各自特点以及适用范围所以在实际应用过程中需结合具体情况权衡利弊做出最佳决策。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值