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中文網其他相關文章!