전체 글 99

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

배경faiss.write_index(faiss_index, f"data\\index\\{index_name}.index")여기서 인덱스 파일 제목(index_name) 이 한글인 경우 저장 안됨, 그렇다고 아무 영어이름으로 바꾸긴 싫었음.고유 제목의 개성을 유지하면서 변환하는 방식을 모색해결과정 : base64를 통한 제목 변환import base64name="백년!@#$%^&*()_+[]{};',.//*-+."print(name)-> 백년!@#$%^&*()_+[]{};',.//*-+.# 1. 문자열을 바이트로 변환print(name.encode('utf-8'))-> b"\xeb\xb0\xb1\xeb\x85\x84!@#$%^&*()_+[]{};',.//*-+."# 2. 바이트화된 데이터 base64로 변..

임베딩과 차원의 의미

배경원래는 모든 내용을 한 파일에 담고 그걸 임베딩 했었다.이번에는 여러 요소(table, text)를 각각 임베딩 해서 합치는 프로세스를 진행했다.각 요소별 차원이 맞지 않아 임베딩에 계속 실패했다.해결과정현재 사용하고 있는 MiniLM의 최대 임베딩 차원은 384 였다.따라서 모든 임베딩 길이를 384로 고정하기로 했다.임베딩이 384보다 작다면 나머지를 0으로 채우고, 더 길다면 384에서 자르게 했다.이렇게 문제를 해결했지만, 임베딩과 차원의 의미에 대해 더 자세히 알아야 했다.임베딩(Embedding)이란?임베딩(Embedding)은 고차원 데이터(텍스트, 이미지, 오디오 등)를 저차원의 벡터 공간으로 변환하는 기술입니다. 이 벡터는 의미적으로 유사한 데이터를 벡터 공간에서 가깝게 배치하는 역할..

langchain 공부 2024.09.10

TypedDict의 개념과 langsmith

1. TypedDict의 개념TypedDict는 Python 3.8에서 도입된 타입 힌팅 도구로, 딕셔너리에서 키와 값의 타입을 명시적으로 정의할 수 있게 해줍니다. 이는 런타임에서는 일반 딕셔너리처럼 동작하지만, 정적 타입 검사기(예: mypy, pyright)에서 키-값 쌍의 타입 일치 여부를 미리 검사할 수 있는 기능을 제공합니다.주요 특징:딕셔너리에서 각 필드의 타입을 명시적으로 정의.타입 검사기를 통해 타입 불일치를 미리 확인.선택적 필드와 필수 필드를 구분할 수 있음.코드의 가독성과 유지보수성 향상.예시:from typing import TypedDict, NotRequired# Person 딕셔너리를 정의class Person(TypedDict): name: str age: Not..

사용툴 분석 2024.09.08