오류 해결 과정

faiss.write_index 한글 제목 저장 안됨 문제

필만이 2024. 9. 21. 11:12

배경

faiss.write_index(faiss_index, f"data\\index\\{index_name}.index")

여기서 인덱스 파일 제목(index_name) 이 한글인 경우 저장 안됨, 그렇다고 아무 영어이름으로 바꾸긴 싫었음.
고유 제목의 개성을 유지하면서 변환하는 방식을 모색

해결과정 : base64를 통한 제목 변환

import base64
name="백년!@#$%^&*()_+[]{};',.//*-+."

print(name)
-> 백년!@#$%^&*()_+[]{};',.//*-+.

# 1. 문자열을 바이트로 변환
print(name.encode('utf-8'))
-> b"\xeb\xb0\xb1\xeb\x85\x84!@#$%^&*()_+[]{};',.//*-+."

# 2. 바이트화된 데이터 base64로 변환
print(base64.urlsafe_b64encode(name.encode('utf-8')))
-> b'67Cx64WEIUAjJCVeJiooKV8rW117fTsnLC4vLyotKy4='

# 3. 바이트 데이터를 다시 문자열로 변환
print(base64.urlsafe_b64encode(name.encode('utf-8')).decode('utf-8'))
-> 67Cx64WEIUAjJCVeJiooKV8rW117fTsnLC4vLyotKy4=

encoded_name= base64.urlsafe_b64encode(name.encode('utf-8')).decode('utf-8')

# 4. 다시 원본으로 변환
decoded_name = base64.urlsafe_b64decode(encoded_name.encode('utf-8')).decode('utf-8')
print(decoded_name)
-> 백년!@#$%^&*()_+[]{};',.//*-+.

결론

  • base64를 통해 변환된 제목들은 원본의 특성을 유지하면서, 한글 인식이 안되는 환경에서 사용될 수 있다.