首頁 > 科技週邊 > 人工智慧 > 探索文本插入-3巨大:新OpenAI嵌入的綜合指南

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

Jennifer Aniston
發布: 2025-03-07 09:41:10
原創
293 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板