OpenAI

OpenAI / text-embedding-3-small

텍스트 임베딩-ada-002 및 텍스트 임베딩-3-large에 비해 정확도와 효율성이 향상된 OpenAI의 가장 비용 효율적인 텍스트 임베딩 모델입니다.

텍스트 임베딩-3-small 소개

텍스트 임베딩-3-small은 OpenAI의 작은 텍스트 임베딩 모델로, 1536 크기의 임베딩을 생성합니다. OpenAI의 다른 텍스트 임베딩 모델인text-embedding-ada-002,text-embedding-3-large에 비해text-embedding-3-small`은 정확도와 효율성이 향상된 가장 비용 효율적인 모델입니다. 범용 벡터 검색 애플리케이션에 적합합니다.

몇 가지 기본 사항을 간단히 살펴보겠습니다.

모델크기최대 토큰모델 MIRACL 평균METB 평균가격
text-embedding-3-large3072819154.964.6$0.13 / 1M 토큰
text-embedding-ada-0021536819131.461.0$0.10 / 1M 토큰
텍스트-임베딩-3-small1536819144.062.3$0.02 / 1M 토큰

텍스트 임베딩-3-small로 벡터 임베딩 생성하는 방법

벡터 임베딩을 생성하는 방법은 크게 두 가지가 있습니다:

  • PyMilvus](https://github.com/milvus-io/pymilvus): text-embedding-3-small 모델을 원활하게 통합하는 Milvus 용 Python SDK.
  • OpenAI 임베딩**: OpenAI에서 제공하는 Python SDK.

벡터 임베딩이 생성되면, 질리즈 클라우드(Milvus가 제공하는 완전 관리형 벡터 데이터베이스 서비스)에 저장하여 의미적 유사도 검색에 사용할 수 있습니다. 다음은 네 가지 주요 단계입니다:

  1. 질리즈 클라우드 계정을 무료로 가입합니다.
  2. 서버리스 클러스터 설정](https://docs.zilliz.com/docs/create-cluster#set-up-a-free-cluster) 및 퍼블릭 엔드포인트 및 API 키를 발급받습니다.
  3. 벡터 컬렉션을 생성하고 벡터 임베딩을 삽입합니다.
  4. 저장된 임베딩에 대해 시맨틱 검색을 실행합니다.

파이밀버스를 통해 벡터 임베딩을 생성하고 질리즈 클라우드에 삽입하여 시맨틱 검색을 진행합니다.

파이밀버스 가져오기 모델, MilvusClient에서

OPENAI_API_KEY = "your-openai-api-key"
ef = model.dense.OpenAIEmbeddingFunction(
   모델_이름="텍스트 임베딩-3-소형",
   api_key=OPENAI_API_KEY,
   )

# 문서에 대한 임베딩 생성
docs = [
   "인공 지능은 1956년에 학문 분야로 설립되었습니다.",
   "앨런 튜링은 인공지능 분야에서 실질적인 연구를 수행한 최초의 인물입니다.",
   "런던의 메이다 베일에서 태어난 튜링은 영국 남부에서 자랐습니다.", "앨런 튜링은 인공지능을 연구한 최초의 사람입니다.".
]

문서_임베딩 = ef.encode_documents(docs)

# 쿼리에 대한 임베딩 생성하기
queries = ["인공 지능은 언제 설립되었나요",
          "앨런 튜링은 어디에서 태어났나요?"]

쿼리 임베딩 = ef.encode_queries(쿼리)

# 퍼블릭 엔드포인트와 API 키로 질리즈 클라우드에 연결하기
client = 밀버스클라이언트(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

컬렉션 = "문서"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(collection_name=COLLECTION)
client.create_collection(
    collection_name=COLLECTION,
    dimension=ef.dim,
    auto_id=True)

문서의 경우 zip(docs, docs_embeddings)에 임베딩합니다:
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
results = client.search(
    collection_name=COLLECTION,
    data = 쿼리_임베딩,
    일관성_레벨="강함",
    output_fields=["text"])

자세한 내용은 파이밀버스 임베딩 모델 문서를 참조하세요.

OpenAI의 Python SDK를 통해 임베딩을 생성하고 질리즈 클라우드에 삽입하여 시맨틱 검색을 수행합니다.

openai에서 OpenAI를 가져옵니다.
pymilvus에서 MilvusClient를 가져옵니다.

OPENAI_API_KEY = "your-openai-api-key"
client = OpenAI(api_key=OPENAI_API_KEY)
# 문서에 대한 임베딩 생성
doc_response = client.embeddings.create(
   input=[
   "인공 지능은 1956년에 학문 분야로 설립되었습니다.",
   "앨런 튜링은 인공지능 분야에서 실질적인 연구를 수행한 최초의 인물입니다.",
   "런던의 메이다 베일에서 태어난 튜링은 영국 남부에서 자랐습니다.", "앨런 튜링은 인공지능을 실질적으로 연구한 최초의 사람입니다."
   ],
   model="text-embedding-3-small"
   )
doc_embeddings = [doc_response.data의 데이터에 대한 데이터.임베딩]

# 쿼리에 대한 임베딩 생성
query_response = client.embeddings.create(
   입력=["인공 지능은 언제 설립되었나요",
          "앨런 튜링은 어디에서 태어났나요?"],
   model="text-embedding-3-small"
   )
쿼리_임베딩 = [쿼리_응답.데이터의 데이터에 대한 데이터.임베딩]

# 퍼블릭 엔드포인트와 API 키로 질리즈 클라우드에 연결하기
client = 밀버스클라이언트(
    uri=ZILLIZ_PUBLIC_ENDPOINT,
    token=ZILLIZ_API_KEY)

컬렉션 = "문서"
if client.has_collection(collection_name=COLLECTION):
    client.drop_collection(collection_name=COLLECTION)
client.create_collection(
    collection_name=COLLECTION,
    dimension=1536,
    auto_id=True)

문서의 경우 zip(docs, docs_embeddings)에 임베딩합니다:
    client.insert(COLLECTION, {"text": doc, "vector": embedding})
    
results = client.search(
    collection_name=COLLECTION,
    data = 쿼리_임베딩,
    일관성_레벨="강함",
    output_fields=["text"])

자세한 내용은 OpenAI 임베딩 가이드를 참조하세요.