OpenAI
MilvusはOpenAIEmbeddingFunctionクラスを通してOpenAIのモデルと統合します。このクラスは事前に学習されたOpenAIのモデルを用いて文書やクエリをエンコードし、Milvusのインデックス作成と互換性のある密なベクトルとしてエンベッディングを返すメソッドを提供します。この機能を利用するには、OpenAIのプラットフォームでアカウントを作成し、APIキーを取得します。
この機能を使用するには、必要な依存関係をインストールします:
pip install --upgrade pymilvus
pip install "pymilvus[model]"
次に、OpenAIEmbeddingFunctionをインスタンス化します:
from pymilvus import model
openai_ef = model.dense.OpenAIEmbeddingFunction(
model_name='text-embedding-3-large', # Specify the model name
api_key='YOUR_API_KEY', # Provide your OpenAI API key
dimensions=512 # Set the embedding dimensionality
)
パラメータ
model_name(string)
エンコーディングに使用するOpenAIモデルの名前。有効なオプションはtext-embedding-3-small,text-embedding-3-large,text-embedding-ada-002(default) です。
api_key(文字列)
OpenAI API にアクセスするための API キー。
dimensions(int)
出力される埋め込みデータの次元数。text-embedding-3以降のモデルでのみサポートされます。
ドキュメントの埋め込みを作成するには、encode_documents()メソッドを使います:
docs = [
"Artificial intelligence was founded as an academic discipline in 1956.",
"Alan Turing was the first person to conduct substantial research in AI.",
"Born in Maida Vale, London, Turing was raised in southern England.",
]
docs_embeddings = openai_ef.encode_documents(docs)
# Print embeddings
print("Embeddings:", docs_embeddings)
# Print dimension and shape of embeddings
print("Dim:", openai_ef.dim, docs_embeddings[0].shape)
期待される出力は以下のようなものです:
Embeddings: [array([ 1.76741909e-02, -2.04964578e-02, -1.09788161e-02, -5.27223349e-02,
4.23139781e-02, -6.64533582e-03, 4.21088142e-03, 1.04644023e-01,
5.10009527e-02, 5.32827862e-02, -3.26061808e-02, -3.66494283e-02,
...
-8.93232748e-02, 6.68255147e-03, 3.55093405e-02, -5.09071983e-02,
3.74144339e-03, 4.72541340e-02, 2.11916920e-02, 1.00753829e-02,
-5.76633997e-02, 9.68257990e-03, 4.62721288e-02, -4.33261096e-02])]
Dim: 512 (512,)
クエリの埋め込みを作成するにはencode_queries()メソッドを使用します:
queries = ["When was artificial intelligence founded",
"Where was Alan Turing born?"]
query_embeddings = openai_ef.encode_queries(queries)
# Print embeddings
print("Embeddings:", query_embeddings)
# Print dimension and shape of embeddings
print("Dim", openai_ef.dim, query_embeddings[0].shape)
期待される出力は以下のようなものです:
Embeddings: [array([ 0.00530251, -0.01907905, -0.01672608, -0.05030033, 0.01635982,
-0.03169853, -0.0033602 , 0.09047844, 0.00030747, 0.11853652,
-0.02870182, -0.01526102, 0.05505067, 0.00993909, -0.07165466,
...
-9.78106782e-02, -2.22669560e-02, 1.21873049e-02, -4.83198799e-02,
5.32377362e-02, -1.90469325e-02, 5.62430918e-02, 1.02650477e-02,
-6.21757433e-02, 7.88027793e-02, 4.91846527e-04, -1.51633881e-02])]
Dim 512 (512,)