首页 >科技周边 >人工智能 >探索文本插入-3巨大:新OpenAI嵌入的综合指南

探索文本插入-3巨大:新OpenAI嵌入的综合指南

Jennifer Aniston
Jennifer Aniston原创
2025-03-07 09:41:10302浏览

OpenAI的最新文本嵌入模型正在彻底改变文本分析。本文探讨了它们的功能,应用和实际用法。 text-embedding-3-large嵌入将人类语言转化为机器可读格式,对于AI任务至关重要。 Openai的新模型可为开发人员和数据科学家大大改善这一过程。 我们将介绍他们的核心功能,应用程序和有效的实施。text-embedding-3-small

理解文本嵌入

>文本嵌入是捕获文本语义含义的数值表示。 它们对于各种NLP任务至关重要,包括情绪分析和文本分类。 我们的指南“与OpenAI API的文本嵌入式介绍”提供了有关使用OpenAI API嵌入创建的全面概述。

>文本嵌入插图Exploring Text-Embedding-3-Large: A Comprehensive Guide to the new OpenAI Embeddings

嵌入的新移民应咨询我们的“使用OpenAI API嵌入介绍”课程。 > OpenAi的新嵌入模型

> 这些模型于2024年1月25日发布,这些模型代表了高维空间中的文本,以提高理解。

优先考虑速度和存储,而

>具有较高的精度。 参数允许调整至1536个维度(来自其天然3072),而没有大量绩效损失。

基准测试text-embedding-3-small text-embedding-3-large 在Miracl和MTEB基准测试上,dimensionstext-embedding-3-large超过了以前的模型(包括

)。 下表总结了比较:

width =“ 60”> width =“ 99”> Width =“ width =“ 88”> max token ada v2 ada v2 0.00002 6 2.3 64.6
dimension max token ($/1K令牌) miracl平均平均

MTEB平均
rowspan =“ 3”> 8191 9月2021 0.0001 31.4 61.0
text-embedding-3-small 0.00002> 0.00002 44.0
text-embedding-3-large 3072 0.00013 54.9 64.6

text-embedding-3-large(3072 vs. 1536)中的较高维度提高了性能,但增加了成本。模型选择取决于任务要求(多语言需求,文本复杂性,预算)。 text-embedding-3-large在复杂的多语言场景中擅长,而适合预算意识的应用程序。 text-embedding-3-small

应用程序

两个模型都找到了不同的应用:

应用程序: text-embedding-3-large

Exploring Text-Embedding-3-Large: A Comprehensive Guide to the new OpenAI Embeddings > text-embedding-3-large的应用(使用gpt-4生成的图像)​​

多语言客户支持自动化(18种语言)

    高级语义搜索引擎
  • >跨语言内容推荐系统
应用程序:

text-embedding-3-small

> text-embedding-3-small的应用(使用gpt-4生成的图像)​​Exploring Text-Embedding-3-Large: A Comprehensive Guide to the new OpenAI Embeddings

>成本效益的情感分析

可扩展的内容分类
  • 有效的语言学习工具
  • >逐步指南:文档相似性

>本指南使用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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn