<目次>
(1) OpenAIのEmbeddingの使い方
(1-1) やりたいこと
(1-2) 概要:OpenAIのEmbeddingとは?
(1-3) STEP1:サンプルコードを動かしてみる(Hello World)
(1-4) STEP2:(ユースケース例)テキストの類似度の検証
(1) OpenAIのEmbeddingの使い方
(1-1) やりたいこと
(1-2) 概要:OpenAIのEmbeddingとは?
(1-3) STEP1:サンプルコードを動かしてみる(Hello World)
import openai
import pandas as pd
# OpenAI APIキーをセット
openai.api_key = "xxxxxxxxxxxxxxxxxxxxx"
# Modelの指定
model = 'text-embedding-ada-002'
def get_embedding(text, model=model):
text = text.replace("\n", " ")
result = openai.Embedding.create(
engine=model,
input = [text]
)
return result['data'][0]['embedding']
def main():
# 入力(prompt)のデータ(PandasのDataFrame)の生成
df = pd.DataFrame({'value': ['apple', 'banana', 'orange', 'melon']},index=['1', '2', '3', '4'])
# APIコール
df["embedding_vector"] = df["value"].apply(lambda x : get_embedding(x))
# csv出力
df.to_csv('./embedded_output.csv', index=False)
if __name__ == "__main__":
main()
value,embedding_vector apple,"[0.0077999732457101345, -0.02301608957350254, ..(中略).. , -0.015654779970645905, 0.006107009015977383]" banana,"[-0.013975119218230247, -0.03290277719497681, ..(中略).. , -0.017215345054864883, 0.0018967173527926207]" orange,"[0.0045590330846607685, -0.03615625947713852, ..(中略).. , 0.00458207493647933, -0.001618703594431281]" melon,"[-0.003729138756170869, -0.02945852279663086, ..(中略).. , -0.015612214803695679, -0.023585548624396324]"
(図111)

(図212)公式ドキュメントにも記載あり

(1-4) STEP2:(ユースケース例)テキストの類似度の検証
question_1 = 'マウスの動作がカクカクする際の対処方法を教えてください'
answer_1 = 'マウスの動作がカクカクする場合は、マウスのドライバーを再インストールしてみてください'
(テストデータ2)
question_1 = 'マウスの動作がカクカクする際の対処方法を教えてください'
answer_2 = 'Windowsの更新プログラムをインストールした後は、PCを再起動してみてください'
(サンプルプログラム)
import openai
import pandas as pd
import numpy as np
# OpenAI APIキーをセット
openai.api_key = "xxxxxxxxxxxxxxxxxxxxx"
# Modelの指定
model = 'text-embedding-ada-002'
def get_embedding(text, model=model):
text = text.replace("\n", " ")
result = openai.Embedding.create(
engine=model,
input = [text]
)
return result['data'][0]['embedding']
def main():
##################### 追記START #####################
# 入力(prompt)のデータ(PandasのDataFrame)の生成
question_1 = 'マウスの動作がカクカクする際の対処方法を教えてください'
answer_1 = 'マウスの動作がカクカクする場合は、マウスのドライバーを再インストールしてみてください'
answer_2 = 'Windowsの更新プログラムをインストールした後は、PCを再起動してみてください'
df = pd.DataFrame({'value': [question_1, answer_1]},index=['1', '2'])
# APIコールし、ベクトルを取得
df["embedding_vector"] = df["value"].apply(lambda x : get_embedding(x))
# question_1のベクトル、answer_nのベクトル値を抽出
embedding_a = df["embedding_vector"][0]
embedding_b = df["embedding_vector"][1]
# 内積を取得
similarity_score = np.dot(embedding_a, embedding_b)
print(similarity_score)
##################### 追記END #####################
if __name__ == "__main__":
main()
(図221)question_1とanswer_1の類似度:0.9292676375112325

(図222)question_1とanswer_2の類似度:0.8080734745282396
