Jina Embedding 모델 비교

사과 톡톡톡·2024년 9월 26일

LLM & RAG

목록 보기
2/4

1. 전체 코드

사용한 환경

  • OS : MAC OS 15.1 Beta
  • Env : VS Code
  • Python : 3.9
  • torch : 2.4.0
  • PyMuPDF : 1.24.9
  • langchain : 0.2.15
  • langchain-community : 0.2.14
  • langchain-core : 0.2.36
  • langchain-openai : 0.1.23
  • langchain-text-splitters : 0.2.2
import re
import torch
from transformers import AutoTokenizer, AutoModel
from sentence_transformers import SentenceTransformer
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.document_loaders import PyMuPDFLoader
from typing import List
from langchain.schema import Document
from langchain.vectorstores import Chroma
from PyPDF2 import PdfReader
from langchain.embeddings.base import Embeddings
import time

# MPS(Apple Silicon GPU)가 사용 가능한지 확인
device = torch.device("mps") if torch.backends.mps.is_available() else torch.device("cpu")
print(f"Using device: {device}")

def read_pdf(file_path):
    loader = PyMuPDFLoader(file_path)
    documents = loader.load()
    
    text = ""
    for doc in documents:
        text += doc.page_content
    return text

# 쓸모 없는 부분 제거
def clean_text(text):
    text = re.sub(r"법제처\s+.*?\s+국가법령정보센터", "", text)

    # 괄호 안의 값 제거: <>, [], (), 그리고 전화번호 형식 제거
    text = re.sub(r"<.*?>|\[.*?]|\(.*?\)", "", text, flags=re.DOTALL)
    
    # 괄호와 전화번호 같이 있는 경우 제거 (ex: (내용) 02-1234-5678 또는 (내용) 010-123-4567)
    text = re.sub(r"\(.*?\)\s*\d{2,4}[-.\s]\d{3,4}[-.\s]\d{4}", "", text)
    
    # 일반 전화번호 형식 제거 (괄호와 상관없이 나타나는 번호도 제거)
    text = re.sub(r"\d{2,4}[-.\s]\d{3,4}[-.\s]\d{4}", "", text)

    # 여분의 공백을 하나의 공백으로 대체
    text = re.sub(r"\s+", " ", text)

    return text.strip()

# 전처리된 텍스트를 분할
def preprocess_text(file_path: str) -> List[Document]:
    text = read_pdf(file_path)
    cleaned_text = clean_text(text)
    processed_sections = [Document(
        page_content=str(cleaned_text),
        metadata={"source": file_path}
    )]
    return processed_sections

class SentenceTransformerEmbeddings(Embeddings):
    def __init__(self, model_name):
        self.model = SentenceTransformer(model_name, device=device)
        self.tokenizer = AutoTokenizer.from_pretrained(model_name)

    def embed_documents(self, texts: List[str]) -> List[List[float]]:
        embeddings = self.model.encode(texts, convert_to_tensor=True, device=device)
        return embeddings.cpu().tolist()

    def embed_query(self, text: str) -> List[float]:
        return self.embed_documents([text])[0]
    
class MyEmbeddings(Embeddings):
    def __init__(self, model_name):
        self.model = AutoModel.from_pretrained(model_name, trust_remote_code=True)
        self.tokenizer = AutoTokenizer.from_pretrained(model_name)
        self.model.to(device)

    def embed_documents(self, texts: List[str]) -> List[List[float]]:
        # 텍스트를 토크나이징
        inputs = self.tokenizer(texts, padding=True, truncation=True, return_tensors="pt").to(device)
        
        # 모델의 출력 획득
        with torch.no_grad():
            outputs = self.model(**inputs)
        
        # last_hidden_state에서 평균을 내어 임베딩 생성
        embeddings = outputs.last_hidden_state.mean(dim=1)
        
        return embeddings.cpu().tolist()

    def embed_query(self, text: str) -> List[float]:
        return self.embed_documents([text])[0]




# 테스트할 모델 리스트
models_to_test = [
    ('jina_v3', MyEmbeddings('jinaai/jina-embeddings-v3')),
    ('jina_v2_base', SentenceTransformerEmbeddings('jinaai/jina-embeddings-v2-base-en')),
    ('jina_v2_small', SentenceTransformerEmbeddings('jinaai/jina-embeddings-v2-small-en'))
]

# PDF 파일 경로
file_path = 'file/현행법령/도로교통법(법률)(제19745호)(20241025).pdf'

# 전처리된 텍스트 가져오기
preprocessed_docs = preprocess_text(file_path)

answer_result = []
clients = {}  # 각 모델별 클라이언트를 저장할 딕셔너리

# 각 모델에 대해 Chroma 클라이언트 생성 및 문서 추가
for i, (model_name, embedding_model) in enumerate(models_to_test, 1):
    print(f"\nProcessing with {model_name} model...")
    
    # 각 모델에 맞는 토크나이저로 텍스트 분할기 설정
    splitter = RecursiveCharacterTextSplitter(
        chunk_size=1000,
        chunk_overlap=200,
        length_function=lambda text: len(embedding_model.tokenizer.encode(text)),
    )
    
    # 전처리된 텍스트를 분할
    docs_split = splitter.split_documents(preprocessed_docs)
    
    # 각 모델별로 별도의 클라이언트 생성
    client_name = f"client_{i}"
    clients[client_name] = Chroma(embedding_function=embedding_model, collection_name=f"test_{model_name}")
    
    start_time = time.time()
    
    # 분할된 문서를 Chroma 벡터 저장소에 추가
    clients[client_name].add_documents(docs_split)
    
    # 벡터 저장소 업데이트 및 저장
    clients[client_name].persist()
    
    end_time = time.time()
    processing_time = end_time - start_time
    
    print(f"Chroma Vectorstore for {model_name} (client_{i}) created successfully.")
    print(f"Processing time: {processing_time:.2f} seconds")
    
    # 간단한 검색 테스트
    query = [
            "운전 면허 취소의 기준은 무엇인가요?",
            "음주 운전 처벌의 기준은 얼마 인가요?",
            "주정차 불가 지역은 어디인가요?",
            "운전 면허증의 반납은 어떤 조건에 해야하며 기간은 언제까지 인가요?",
            "긴급 자동차는 도로의 중앙을 이용할 수 있나요?",
            "긴급자동차에 대한 특례엔 무엇이 있나요?",
            "자전거 전용도로가 없을 경우 어디에서 통행이 가능한가요?",
            "모범운전자가 업무를 수행하는 도중 사망한 경우에 보상할 수 있는 보험에 가입이 가능한가요?",
            "앞지르기가 불가한 경우는 어떤 경우들이 있나요?",
            "먼허가 없이 운전이 가능할까요?"
        ]

    for q in query:
        answer_result.append({
            'question': q,
            'model': model_name,
            'client': client_name,
            'answer': clients[client_name].similarity_search(q, k=3)
        })

print("\nAll models processed and tested successfully.")

질문 & 타겟 답변

1. 운전 면허 취소의 기준은 무엇인가요?

  • 제93조(운전면허의 취소ㆍ정지) ① 시ㆍ도경찰청장은 운전면허(조건부 운전면허는 포함하고, 연습운전면허는 제외한다
    . 이하 이 조에서 같다)를 받은 사람이 다음 각 호의 어느 하나에 해당하면 행정안전부령으로 정하는 기준에 따라 운
    전면허(운전자가 받은 모든 범위의 운전면허를 포함한다. 이하 이 조에서 같다)를 취소하거나 1년 이내의 범위에서
    운전면허의 효력을 정지시킬 수 있다. 다만, 제2호, 제3호, 제7호, 제8호, 제8호의2, 제9호(정기 적성검사 기간이 지난
    경우는 제외한다), 제14호, 제16호, 제17호, 제20호부터 제23호까지의 규정에 해당하는 경우에는 운전면허를 취소하
    여야 하고(제8호의2에 해당하는 경우 취소하여야 하는 운전면허의 범위는 운전자가 거짓이나 그 밖의 부정한 수단
    으로 받은 그 운전면허로 한정한다), 제18호의 규정에 해당하는 경우에는 정당한 사유가 없으면 관계 행정기관의 장
    의 요청에 따라 운전면허를 취소하거나 1년 이내의 범위에서 정지하여야 한다.
  1. 제44조제1항을 위반하여 술에 취한 상태에서 자동차등을 운전한 경우
  2. 제44조제1항 또는 제2항 후단을 위반(자동차등을 운전한 경우로 한정한다. 이하 이 호 및 제3호에서 같다)한 사
    람이 다시 같은 조 제1항을 위반하여 운전면허 정지 사유에 해당된 경우
  3. 제44조제2항 후단을 위반하여 술에 취한 상태에 있다고 인정할 만한 상당한 이유가 있음에도 불구하고 경찰공무
    원의 측정에 응하지 아니한 경우
  4. 제45조를 위반하여 약물의 영향으로 인하여 정상적으로 운전하지 못할 우려가 있는 상태에서 자동차등을 운전한
    경우
  5. 제46조제1항을 위반하여 공동 위험행위를 한 경우
    5의2. 제46조의3을 위반하여 난폭운전을 한 경우
    5의3. 제17조제3항을 위반하여 제17조제1항 및 제2항에 따른 최고속도보다 시속 100킬로미터를 초과한 속도로
    3회 이상 자동차등을 운전한 경우
  6. 교통사고로 사람을 사상한 후 제54조제1항 또는 제2항에 따른 필요한 조치 또는 신고를 하지 아니한 경우
  7. 제82조제1항제2호부터 제5호까지의 규정에 따른 운전면허를 받을 수 없는 사람에 해당된 경우
  8. 제82조에 따라 운전면허를 받을 수 없는 사람이 운전면허를 받거나 운전면허효력의 정지기간 중 운전면허증 또
    는 운전면허증을 갈음하는 증명서를 발급받은 사실이 드러난 경우
    8의2. 거짓이나 그 밖의 부정한 수단으로 운전면허를 받은 경우
  9. 제87조제2항 또는 제88조제1항에 따른 적성검사를 받지 아니하거나 그 적성검사에 불합격한 경우
  10. 운전 중 고의 또는 과실로 교통사고를 일으킨 경우
    10의2. 운전면허를 받은 사람이 자동차등을 이용하여 「형법」 제258조의2(특수상해)ㆍ제261조(특수폭행)ㆍ제284조
    (특수협박) 또는 제369조(특수손괴)를 위반하는 행위를 한 경우
  11. 운전면허를 받은 사람이 자동차등을 범죄의 도구나 장소로 이용하여 다음 각 목의 어느 하나의 죄를 범한 경우
    가. 「국가보안법」 중 제4조부터 제9조까지의 죄 및 같은 법 제12조 중 증거를 날조ㆍ인멸ㆍ은닉한 죄
    나. 「형법」 중 다음 어느 하나의 범죄
    1) 살인ㆍ사체유기 또는 방화
    2) 강도ㆍ강간 또는 강제추행
    3) 약취ㆍ유인 또는 감금
    4) 상습절도(절취한 물건을 운반한 경우에 한정한다)
    5) 교통방해(단체 또는 다중의 위력으로써 위반한 경우에 한정한다)
    다. 「보험사기방지 특별법」 중 제8조부터 제10조까지의 죄
  12. 다른 사람의 자동차등을 훔치거나 빼앗은 경우
  13. 다른 사람이 부정하게 운전면허를 받도록 하기 위하여 제83조에 따른 운전면허시험에 대신 응시한 경우
  14. 이 법에 따른 교통단속 임무를 수행하는 경찰공무원등 및 시ㆍ군공무원을 폭행한 경우
  15. 운전면허증을 부정하게 사용할 목적으로 다른 사람에게 빌려주거나 다른 사람의 운전면허증을 빌려서 사용한
    경우
  16. 「자동차관리법」에 따라 등록되지 아니하거나 임시운행허가를 받지 아니한 자동차(이륜자동차는 제외한다)를
    운전한 경우
  17. 제1종 보통면허 및 제2종 보통면허를 받기 전에 연습운전면허의 취소 사유가 있었던 경우
  18. 다른 법률에 따라 관계 행정기관의 장이 운전면허의 취소처분 또는 정지처분을 요청한 경우
    18의2. 제39조제1항 또는 제4항을 위반하여 화물자동차를 운전한 경우
  19. 이 법이나 이 법에 따른 명령 또는 처분을 위반한 경우
  20. 운전면허를 받은 사람이 자신의 운전면허를 실효(失效)시킬 목적으로 시ㆍ도경찰청장에게 자진하여 운전면허를
    반납하는 경우. 다만, 실효시키려는 운전면허가 취소처분 또는 정지처분의 대상이거나 효력정지 기간 중인 경우
    는 제외한다.
  21. 제50조의3제1항을 위반하여 음주운전 방지장치가 설치된 자동차등을 시ㆍ도경찰청에 등록하지 아니하고 운전
    한 경우
  22. 제50조의3제3항을 위반하여 음주운전 방지장치가 설치되지 아니하거나 설치기준에 부합하지 아니한 음주운전
    방지장치가 설치된 자동차등을 운전한 경우
  23. 제50조의3제4항을 위반하여 음주운전 방지장치가 해체ㆍ조작 또는 그 밖의 방법으로 효용이 떨어진 것을 알면
    서 해당 장치가 설치된 자동차등을 운전한 경우
    ② 시ㆍ도경찰청장은 제1항에 따라 운전면허를 취소하거나 운전면허의 효력을 정지하려고 할 때 그 기준으로 활용
    하기 위하여 교통법규를 위반하거나 교통사고를 일으킨 사람에 대하여는 행정안전부령으로 정하는 바에 따라 위반
    및 피해의 정도 등에 따라 벌점을 부과할 수 있으며, 그 벌점이 행정안전부령으로 정하는 기간 동안 일정한 점수를
    초과하는 경우에는 행정안전부령으로 정하는 바에 따라 운전면허를 취소 또는 정지할 수 있다.
    ③ 시ㆍ도경찰청장은 연습운전면허를 발급받은 사람이 운전 중 고의 또는 과실로 교통사고를 일으키거나 이 법이
    나 이 법에 따른 명령 또는 처분을 위반한 경우에는 연습운전면허를 취소하여야 한다. 다만, 본인에게 귀책사유(歸
    責事由)가 없는 경우 등 대통령령으로 정하는 경우에는 그러하지 아니하다.<개정 2020. 12. 22.>
    ④ 시ㆍ도경찰청장은 제1항 또는 제2항에 따라 운전면허의 취소처분 또는 정지처분을 하려고 하거나 제3항에 따라
    연습운전면허 취소처분을 하려면 그 처분을 하기 전에 미리 행정안전부령으로 정하는 바에 따라 처분의 당사자에
    게 처분 내용과 의견제출 기한 등을 통지하여야 하며, 그 처분을 하는 때에는 행정안전부령으로 정하는 바에 따라
    처분의 이유와 행정심판을 제기할 수 있는 기간 등을 통지하여야 한다. 다만, 제87조제2항 또는 제88조제1항에 따
    른 적성검사를 받지 아니하였다는 이유로 운전면허를 취소하려면 행정안전부령으로 정하는 바에 따라 처분의 당사
    자에게 적성검사를 할 수 있는 날의 만료일 전까지 적성검사를 받지 아니하면 운전면허가 취소된다는 사실의 조건
    부 통지를 함으로써 처분의 사전 및 사후 통지를 갈음할 수 있다.

2. 음주 운전 처벌의 기준은 얼마 인가요?

  • 운전이 금지되는 술에 취한 상태의 기준은 운전자의 혈중알코올농도가 0.03퍼센트 이상인 경우로 한다.

3. 주정차 불가 지역은 어디인가요?

  • 제32조(정차 및 주차의 금지) 모든 차의 운전자는 다음 각 호의 어느 하나에 해당하는 곳에서는 차를 정차하거나 주차
    하여서는 아니 된다. 다만, 이 법이나 이 법에 따른 명령 또는 경찰공무원의 지시를 따르는 경우와 위험방지를 위하
    여 일시정지하는 경우에는 그러하지 아니하다. <개정 2018. 2. 9., 2020. 10. 20., 2020. 12. 22., 2021. 11. 30.>
  1. 교차로ㆍ횡단보도ㆍ건널목이나 보도와 차도가 구분된 도로의 보도(「주차장법」에 따라 차도와 보도에 걸쳐서 설
    치된 노상주차장은 제외한다)
  2. 교차로의 가장자리나 도로의 모퉁이로부터 5미터 이내인 곳
  3. 안전지대가 설치된 도로에서는 그 안전지대의 사방으로부터 각각 10미터 이내인 곳
  4. 버스여객자동차의 정류지(停留地)임을 표시하는 기둥이나 표지판 또는 선이 설치된 곳으로부터 10미터 이내인
    곳. 다만, 버스여객자동차의 운전자가 그 버스여객자동차의 운행시간 중에 운행노선에 따르는 정류장에서 승객을
    태우거나 내리기 위하여 차를 정차하거나 주차하는 경우에는 그러하지 아니하다.
  5. 건널목의 가장자리 또는 횡단보도로부터 10미터 이내인 곳
  6. 다음 각 목의 곳으로부터 5미터 이내인 곳
    가. 「소방기본법」 제10조에 따른 소방용수시설 또는 비상소화장치가 설치된 곳
    나. 「소방시설 설치 및 관리에 관한 법률」 제2조제1항제1호에 따른 소방시설로서 대통령령으로 정하는 시설이
    설치된 곳
  7. 시ㆍ도경찰청장이 도로에서의 위험을 방지하고 교통의 안전과 원활한 소통을 확보하기 위하여 필요하다고 인정
    하여 지정한 곳
  8. 시장등이 제12조제1항에 따라 지정한 어린이 보호구역

4. 운전 면허증의 반납은 어떤 조건에 해야하며 기간은 언제까지 인가요?

  • 제95조(운전면허증의 반납) ① 운전면허증을 받은 사람이 다음 각 호의 어느 하나에 해당하면 그 사유가 발생한 날부터
    7일 이내(제4호 및 제5호의 경우 새로운 운전면허증을 받기 위하여 운전면허증을 제출한 때)에 주소지를 관할하는
    시ㆍ도경찰청장에게 운전면허증을 반납(모바일운전면허증의 경우 전자적 반납을 포함한다. 이하 이 조에서 같다)하
    여야 한다. <개정 2020. 12. 22., 2024. 1. 30.>
  1. 운전면허 취소처분을 받은 경우
  2. 운전면허효력 정지처분을 받은 경우
  3. 운전면허증을 잃어버리고 다시 발급받은 후 그 잃어버린 운전면허증을 찾은 경우
  4. 연습운전면허증을 받은 사람이 제1종 보통면허증 또는 제2종 보통면허증을 받은 경우
  5. 운전면허증 갱신을 받은 경우
    ② 경찰공무원은 제1항을 위반하여 운전면허증을 반납하지 아니한 사람이 소지한 운전면허증을 직접 회수(모바일
    운전면허증의 경우 전자적 회수를 포함한다. 이하 이 조에서 같다)할 수 있다.<개정 2024. 1. 30.>
    ③ 시ㆍ도경찰청장이 제1항제2호에 따라 운전면허증을 반납받았거나 제2항에 따라 제1항제2호에 해당하는 사람으
    로부터 운전면허증을 회수하였을 때에는 이를 보관하였다가 정지기간이 끝난 즉시 돌려주어야 한다.

5. 긴급 자동차는 도로의 중앙을 이용할 수 있나요?

  • ① 긴급자동차는 제13조제3항에도 불구하고 긴급하고 부득이한 경우에는 도로의 중앙이나 좌측 부분을 통행할 수 있다.

6. 긴급자동차에 대한 특례엔 무엇이 있나요?

  • 제30조(긴급자동차에 대한 특례) 긴급자동차에 대하여는 다음 각 호의 사항을 적용하지 아니한다. 다만, 제4호부터 제
    12호까지의 사항은 긴급자동차 중 제2조제22호가목부터 다목까지의 자동차와 대통령령으로 정하는 경찰용 자동차
    에 대해서만 적용하지 아니한다. <개정 2021. 1. 12.>
  1. 제17조에 따른 자동차등의 속도 제한. 다만, 제17조에 따라 긴급자동차에 대하여 속도를 제한한 경우에는 같은
    조의 규정을 적용한다.
  2. 제22조에 따른 앞지르기의 금지
  3. 제23조에 따른 끼어들기의 금지
  4. 제5조에 따른 신호위반
  5. 제13조제1항에 따른 보도침범
  6. 제13조제3항에 따른 중앙선 침범
  7. 제18조에 따른 횡단 등의 금지
  8. 제19조에 따른 안전거리 확보 등
  9. 제21조제1항에 따른 앞지르기 방법 등
  10. 제32조에 따른 정차 및 주차의 금지
  11. 제33조에 따른 주차금지
  12. 제66조에 따른 고장 등의 조치

7. 자전거 전용도로가 없을 경우 어디에서 통행이 가능한가요?

  • ② 자전거등의 운전자는 자전거도로가 설치되지 아니한 곳에서는 도로 우측 가장자리에 붙어서 통행하여야 한다.

8. 모범운전자가 업무를 수행하는 도중 사망한 경우에 보상할 수 있는 보험에 가입이 가능한가요?

  • ② 국가는 모범운전자가 교통정리 등의 업무를 수행하는 도중 부상을 입거나 사망한 경우에 이를 보상할 수 있도록 보험에 가입할 수 있다.

9. 앞지르기가 불가한 경우는 어떤 경우들이 있나요?

  • 제22조(앞지르기 금지의 시기 및 장소) ① 모든 차의 운전자는 다음 각 호의 어느 하나에 해당하는 경우에는 앞차를 앞
    지르지 못한다.
  1. 앞차의 좌측에 다른 차가 앞차와 나란히 가고 있는 경우
  2. 앞차가 다른 차를 앞지르고 있거나 앞지르려고 하는 경우
    ② 모든 차의 운전자는 다음 각 호의 어느 하나에 해당하는 다른 차를 앞지르지 못한다.
  3. 이 법이나 이 법에 따른 명령에 따라 정지하거나 서행하고 있는 차
  4. 경찰공무원의 지시에 따라 정지하거나 서행하고 있는 차
  5. 위험을 방지하기 위하여 정지하거나 서행하고 있는 차
    ③ 모든 차의 운전자는 다음 각 호의 어느 하나에 해당하는 곳에서는 다른 차를 앞지르지 못한다.<개정 2020. 12.
    22.>
  6. 교차로
  7. 터널 안
  8. 다리 위
  9. 도로의 구부러진 곳, 비탈길의 고갯마루 부근 또는 가파른 비탈길의 내리막 등 시ㆍ도경찰청장이 도로에서의 위
    험을 방지하고 교통의 안전과 원활한 소통을 확보하기 위하여 필요하다고 인정하는 곳으로서 안전표지로 지정한

10. 먼허가 없이 운전이 가능할까요?

  • 제43조(무면허운전 등의 금지) 누구든지 제80조에 따라 시ㆍ도경찰청장으로부터 운전면허를 받지 아니하거나 운전면허의 효력이 정지된 경우에는 자동차등을 운전하여서는 아니 된다.

질문 & Retriever 검색값

결과값 확인은 여기에서
질문과 검색값을 모두 올리기엔 무리가 있어 csv 파일로 정리하여 올린다.

2. jina-embeddings-v2-base-en

jina-embeddings-v2-base-en
v2 버전으로 base 모델이다.
jina-embeddings-v2-base-en: 137 million parameters
라고 한다.
자세한 내용은 위의 링크에서 확인 가능하다.

결과

Processing with jina_v2_base model...
Chroma Vectorstore for jina_v2_base (client_2) created successfully.
Processing time: 394.49 seconds

소요 시간은 꽤 걸렸다.
어제 까지만 해도 이정도는 아니였는데 필자도 이유를 모르겠다.

검색 결과

    1. X
    1. X
    1. X
    1. X
    1. X
    1. X
    1. X
    1. X
    1. X
    1. X

3. jina-embeddings-v2-small-en

jina-embeddings-v2-small-en
small 모델이다.

결과

Processing with jina_v2_small model...
Chroma Vectorstore for jina_v2_small (client_3) created successfully.
Processing time: 6.70 seconds

결과는 예상대로 가장 빨랐다.

검색 결과

    1. X
    1. X
    1. X
    1. X
    1. X
    1. X
    1. X
    1. X
    1. X
    1. X

둘 다 영어 모델이라 그런지 아예 못찾는다.

4. jina-embeddings-v3

jina-embeddings-v3
버전 3으로 올라오면서 공식적으로 한국어를 지원하게 됐다.
그럼 이제 비교를 해보자

결과

Processing with jina_v3 model...
Chroma Vectorstore for jina_v3 (client_1) created successfully.
Processing time: 404.44 seconds

진짜 개 오래 걸린다.
어제 까지만 해도 사실 30초대 내에 끊긴했지만 오늘 왜 이런진 모르겠다.
물론 다른 임베딩 모델이 비교하면 3 ~ 30배 가량 차이 나긴한다.
다른 모델들은 가장 빠른 모델은 1초대를, 평균 8초대를 보여줬지만 이 모델만 30초 이상이 소요 된다.
하지만 오래 걸린 만큼 결과값은 굉장히 만족스러웠다.

검색 결과

    1. O
    1. O
    1. O
    1. O
    1. O
    1. O
    1. O
    1. O
    1. X

놀라울 정도로 굉장히 잘 찾는다.
다른 모델들과 비교 해봐도 압도적일 정도로 검색 결과가 만족 스럽다.
메모리를 너무 많이 잡아 먹고 임베딩 시간이 오래 걸리는 단점이 있지만 이 문제만 해결 가능하다면 대체 할 만한 모델이 없을 정도로 굉장히 만족 스럽다.

앞으로 시간을 두고 메모리와 임베딩 시간 문제를 해결 해봐야겠다.

0개의 댓글