import os
import numpy as np
from openai import OpenAI
from dotenv import load_dotenv

load_dotenv()  # .env 를 자동 탐색해 OPENAI_API_KEY 로드
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

documents = [
    "Python은 강력한 프로그래밍 언어입니다.",
    "OpenAI는 AI 연구를 선도하는 기업입니다.",
    "FAISS는 벡터 검색을 위한 라이브러리입니다.",
]


# 1) 정답 — 텍스트를 OpenAI 임베딩으로 벡터화
def get_embedding(text):
    response = client.embeddings.create(input=text, model="text-embedding-ada-002")
    return np.array(response.data[0].embedding)  # 차원 1536 (로컬 384/768과 달라 호환 불가)


# 2) 정답 — 여러 문서를 한 번에 임베딩
def embed_documents(docs):
    response = client.embeddings.create(input=docs, model="text-embedding-ada-002")
    return np.array([item.embedding for item in response.data])


if __name__ == "__main__":
    emb = get_embedding("인공지능이 세상을 바꾸고 있다.")
    print(f"한 문장 임베딩 차원: {emb.shape[0]}")        # 1536

    doc_embeddings = embed_documents(documents)
    print(f"doc_embeddings shape: {doc_embeddings.shape}")  # (3, 1536)
    # ↑ 로컬(MiniLM 384)과 차원이 달라, 두 모델의 벡터는 서로 섞어 쓸 수 없다.
