# ============================================================
# [실습] 벡터 데이터베이스 이해 (FAISS)
#
# 아래 항목을 직접 구현하세요:
#  1) 텍스트를 로드·청킹하고 각 청크 source 를 파일명만 남긴 뒤 FAISS.from_documents 로
#     인덱스를 만들고 store.save_local(FAISS_DIR) 로 명시적으로 저장한다.
#  2) FAISS.load_local 로 저장된 인덱스를 불러온다(allow_dangerous_deserialization=True 명시).
#  3) (A) 가벼운 단일 키 filter 로 similarity_search 하고, (B) 복잡한 조건은 넉넉히 검색한 뒤
#     metadata 기준으로 직접 후처리해 상위 몇 개만 남긴다.
# ============================================================

from dotenv import load_dotenv

load_dotenv()  # .env 에서 OPENAI_API_KEY 로드

import os
from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS

embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
FAISS_DIR = "./faiss_index"


def build_index():
    # 1) 여기에 코드를 작성하세요 (로드·청킹 → source 정리 → FAISS.from_documents → save_local)
    pass


def load_index():
    # 2) 여기에 코드를 작성하세요 (FAISS.load_local, allow_dangerous_deserialization=True)
    pass


def search_demo(store):
    # 3) 여기에 코드를 작성하세요 (filter 검색 + 넉넉히 검색 후 후처리 필터)
    pass


# 여기에 코드를 작성하세요 (build_index → search_demo 결과 출력)
