Rumah >Peranti teknologi >AI >Meneroka teks-embedding-3-besar: Panduan Komprehensif untuk Pembasmian Terbuka Baru
model penyembuhan teks terbaru OpenAI, text-embedding-3-large
dan text-embedding-3-small
, merevolusi analisis teks. Artikel ini meneroka keupayaan, aplikasi, dan penggunaan praktikal mereka.
Embeddings menerjemahkan bahasa manusia ke dalam format yang boleh dibaca mesin, penting untuk tugas AI. Model baru Openai dengan ketara meningkatkan proses ini untuk pemaju dan saintis data. Kami akan meliputi fungsi teras, aplikasi, dan pelaksanaan yang berkesan.
Memahami Embeddings Teks
Embeddings teks adalah perwakilan berangka yang menangkap makna semantik teks. Mereka adalah penting untuk pelbagai tugas NLP, termasuk analisis sentimen dan klasifikasi teks. Panduan kami, "Pengenalan kepada Embeddings Teks dengan API Openai," memberikan gambaran keseluruhan yang komprehensif menggunakan API OpenAI untuk pembuatan pembuatan.
Illustration Embeddings Teks
Pendatang baru untuk Embeddings harus berunding dengan "Pengenalan kepada Embeddings kami dengan Openai API" kursus.
Model Embedding Baru Terbuka
Dikeluarkan pada 25 Januari 2024, model-model ini mewakili teks dalam ruang dimensi tinggi untuk pemahaman yang lebih baik.
mengutamakan kelajuan dan penyimpanan, sementara menawarkan ketepatan yang lebih baik. Parameter text-embedding-3-small
membolehkan penyesuaian text-embedding-3-large
hingga 1536 dimensi (dari asalnya 3072) tanpa kehilangan prestasi yang signifikan. dimensions
text-embedding-3-large
melepasi model terdahulu (termasuk
) pada tanda aras MirACL dan MTEB. Jadual di bawah meringkaskan perbandingan: Miracl purata Dimensi yang lebih tinggi dalam Aplikasi Kedua -dua model mencari aplikasi yang pelbagai: Aplikasi teks-emp-empedding-3-besar (imej yang dihasilkan menggunakan GPT-4)
Aplikasi:
Panduan ini menggunakan dataset CORD-19 (tersedia di Kaggle) untuk menunjukkan persamaan dokumen menggunakan ketiga-tiga model. Pasang perpustakaan yang diperlukan:
Model penyembuhan baru OpenAI menawarkan penambahbaikan yang besar dalam NLP. Pilihan antara bergantung kepada keperluan aplikasi tertentu, mengimbangi ketepatan dan kos. Panduan ini menyediakan alat -alat untuk menggunakan model -model berkuasa ini dengan berkesan dalam pelbagai projek. Sumber lanjut di API OpenAI dan penalaan halus boleh didapati. text-embedding-3-large
text-embedding-ada-002
($/1k token)
Model
Dimension
Max token
Knowledge cutoff
Pricing ($/1k tokens)
MIRACL average
MTEB average
ada v2
1536
8191
September 2021
0.0001
31.4
61.0
text-embedding-3-small
0.00002
44.0
62.3
text-embedding-3-large
3072
0.00013
54.9
64.6
mteb purata rowspan = "3"> 8191 September 2021 0.0001 31.4 61.0 2.3
text-emp-emp-3-large 3072 0.00013 54.9 64.6
text-embedding-3-large
(3072 vs 1536) meningkatkan prestasi tetapi meningkatkan kos. Pemilihan model bergantung kepada keperluan tugas (keperluan berbilang bahasa, kerumitan teks, belanjawan). text-embedding-3-large
cemerlang dalam senario pelbagai bahasa, sementara text-embedding-3-small
sesuai dengan aplikasi yang sedar bajet. text-embedding-3-large
Aplikasi:
automasi sokongan pelanggan berbilang bahasa (18 bahasa)
text-embedding-3-small
Panduan langkah demi langkah: Kesamaan Dokumen pip -q install tiktoken openai
import os
import tiktoken
import numpy as np
import pandas as pd
from openai import OpenAI
from sklearn.metrics.pairwise import cosine_similarity
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"))
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")
Kesimpulan text-embedding-3-large
Atas ialah kandungan terperinci Meneroka teks-embedding-3-besar: Panduan Komprehensif untuk Pembasmian Terbuka Baru. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!