OpenAI的最新文本嵌入模型text-embedding-3-large
嵌入将人类语言转化为机器可读格式,对于AI任务至关重要。 Openai的新模型可为开发人员和数据科学家大大改善这一过程。 我们将介绍他们的核心功能,应用程序和有效的实施。text-embedding-3-small
理解文本嵌入
>文本嵌入是捕获文本语义含义的数值表示。 它们对于各种NLP任务至关重要,包括情绪分析和文本分类。 我们的指南“与OpenAI API的文本嵌入式介绍”提供了有关使用OpenAI API嵌入创建的全面概述。
>文本嵌入插图
嵌入的新移民应咨询我们的“使用OpenAI API嵌入介绍”课程。 > OpenAi的新嵌入模型
> 这些模型于2024年1月25日发布,这些模型代表了高维空间中的文本,以提高理解。
优先考虑速度和存储,而>具有较高的精度。 参数允许调整至1536个维度(来自其天然3072),而没有大量绩效损失。
基准测试text-embedding-3-small
text-embedding-3-large
在Miracl和MTEB基准测试上,dimensions
text-embedding-3-large
超过了以前的模型(包括
dimension
max token max token
($/1K令牌)
miracl平均平均
MTEB平均
rowspan =“ 3”> 8191 9月2021 0.0001 31.4 61.0
text-embedding-3-small
0.00002> 0.00002 0.00002
44.0 6 2.3 text-embedding-3-large 3072 0.00013
54.9
64.6 64.6
text-embedding-3-large
(3072 vs. 1536)中的较高维度提高了性能,但增加了成本。模型选择取决于任务要求(多语言需求,文本复杂性,预算)。 text-embedding-3-large
在复杂的多语言场景中擅长,而适合预算意识的应用程序。
text-embedding-3-small
两个模型都找到了不同的应用:
应用程序:text-embedding-3-large
> text-embedding-3-large的应用(使用gpt-4生成的图像)
多语言客户支持自动化(18种语言)
text-embedding-3-small
> text-embedding-3-small的应用(使用gpt-4生成的图像)
>成本效益的情感分析
可扩展的内容分类>本指南使用CORD-19数据集(在Kaggle上可用),使用所有三个模型来演示文档相似性。 安装必要的库:
>导入库:
pip -q install tiktoken openai>负载和预处理数据(用于简洁的1000个文档样本):
import os import tiktoken import numpy as np import pandas as pd from openai import OpenAI from sklearn.metrics.pairwise import cosine_similarity设置OpenAI API密钥并创建客户端:
生成嵌入:
scientific_docs = pd.read_parquet("./data/cord19_df_sample.parquet") def concatenate_columns_with_null_handling(df, body_text_column, abstract_column, title_column, new_col_name): df[new_col_name] = df[body_text_column].fillna('') + df[abstract_column].fillna('') + df[title_column].fillna('') return df new_scientific_docs = concatenate_columns_with_null_handling(scientific_docs, "body_text", "abstract", "title", "concatenated_text") def num_tokens_from_text(text: str, encoding_name="cl100k_base"): encoding = tiktoken.get_encoding(encoding_name) num_tokens = len(encoding.encode(text)) return num_tokens new_scientific_docs['num_tokens'] = new_scientific_docs["concatenated_text"].apply(lambda x: num_tokens_from_text(x)) smaller_tokens_docs = new_scientific_docs[new_scientific_docs['num_tokens'] <= 8191] smaller_tokens_docs_reset = smaller_tokens_docs.reset_index(drop=True)
使用余弦相似性找到相似的文档:
os.environ["OPENAI_API_KEY"] = "YOUR KEY" client = OpenAI()
def get_embedding(text_to_embbed, model_ID): text = text_to_embbed.replace("\n", " ") return client.embeddings.create(input=[text_to_embbed], model=model_ID).data[0].embedding smaller_tokens_docs_reset['text-embedding-3-small'] = smaller_tokens_docs_reset["concatenated_text"].apply(lambda x: get_embedding(x, "text-embedding-3-small")) smaller_tokens_docs_reset['text-embedding-3-large'] = smaller_tokens_docs_reset["concatenated_text"].apply(lambda x: get_embedding(x, "text-embedding-3-large")) smaller_tokens_docs_reset['text-embedding-ada-002'] = smaller_tokens_docs_reset["concatenated_text"].apply(lambda x: get_embedding(x, "text-embedding-ada-002"))结论 OpenAI的新嵌入模型在NLP方面提供了实质性改进。
def find_top_N_similar_documents(df, chosen_index, embedding_column_name, top_N=3): chosen_document_embedding = np.array(df.iloc[chosen_index][embedding_column_name]).reshape(1, -1) embedding_matrix = np.vstack(df[embedding_column_name]) similarity_scores = cosine_similarity(chosen_document_embedding, embedding_matrix)[0] df_temp = df.copy() df_temp['similarity_to_chosen'] = similarity_scores similar_documents = df_temp.drop(index=chosen_index).sort_values(by='similarity_to_chosen', ascending=False) top_N_similar = similar_documents.head(top_N) return top_N_similar[["concatenated_text", 'similarity_to_chosen']] chosen_index = 0 top_3_similar_3_small = find_top_N_similar_documents(smaller_tokens_docs_reset, chosen_index, "text-embedding-3-small") top_3_similar_3_large = find_top_N_similar_documents(smaller_tokens_docs_reset, chosen_index, "text-embedding-3-large") top_3_similar_ada_002 = find_top_N_similar_documents(smaller_tokens_docs_reset, chosen_index, "text-embedding-ada-002") print("Top 3 Similar Documents with:") print("--> text-embedding-3-small") print(top_3_similar_3_small) print("\n") print("--> text-embedding-3-large") print(top_3_similar_3_large) print("\n") print("--> text-embedding-ada-002") print(top_3_similar_ada_002) print("\n")和
之间的选择取决于特定应用的需求,平衡准确性和成本。 本指南提供了在各种项目中有效利用这些强大模型的工具。 可以提供有关OpenAI API和微调的更多资源。>
以上是探索文本插入-3巨大:新OpenAI嵌入的综合指南的详细内容。更多信息请关注PHP中文网其他相关文章!