분류 전체보기 99

RunnablePassthrough() 사용 이유

배경테디노트님의 강의를 보면서 카피하면서 RAG를 만들다가, 그냥 바로 질문 변수를 전달해도 될것 같은데, 사용하는지, 사용 이유가 궁금해 졌다. RunnablePassthrough: 전체 개요 및 정리RunnablePassthrough는 LangChain에서 사용하는 Runnable의 일종으로, 입력 데이터를 수정하지 않고 그대로 다음 단계로 전달하는 데 사용됩니다. 주로 체인에서 데이터 흐름을 제어할 때 유용하며, 특히 질문이나 다른 입력이 동적으로 변경될 가능성이 있는 경우에 많이 사용됩니다.기본 개념:핵심 역할: RunnablePassthrough의 핵심 역할은 입력된 데이터를 그대로 받아, 처리 없이 다음 단계로 전달하는 것입니다. 이는 체인 내에서 특정 데이터 흐름을 유지하고, 필요한 경우 그..

langchain 공부 2024.08.29

모든 Retriever(검색기) 비교

Retriever(검색기) 비교Retriever 기법장점단점사용 시기Similarity Search- 간단하고 빠른 검색 가능- 높은 유사성의 문서를 효과적으로 찾음- 정밀한 검색이 어려울 수 있음- 다중 의미를 가진 쿼리에 약함- 쿼리와 관련된 문서를 빠르게 찾고자 할 때- 단순한 유사성 기반의 검색이 필요한 경우Maximum Marginal Relevance (MMR)- 정보 다양성을 높여 중복 문서 필터링 가능- 다양한 답변을 제공할 수 있음- 계산 비용이 더 많이 듦- 검색 속도가 느려질 수 있음- 중복되지 않는 다양한 정보를 원할 때- 여러 관점을 가진 문서를 선택하고자 할 때Similarity Score Threshold- 일정 수준 이상의 유사성만 필터링- 특정 임계값 이상의 관련성 있는 문..

langchain 공부 2024.08.29

pickle과 json 비교

pkl 파일은 Python에서 객체를 직렬화(serialize)한 데이터를 저장하는 파일 형식입니다. 이 파일은 Python의 pickle 모듈을 사용하여 생성됩니다. 직렬화는 Python 객체를 바이트 스트림으로 변환하는 과정이며, 이를 통해 객체를 파일에 저장하거나 네트워크를 통해 전송할 수 있습니다. 역직렬화(deserialization)는 바이트 스트림을 다시 원래의 Python 객체로 변환하는 과정입니다.pickle 모듈의 주요 사용 사례객체 저장과 로드:Python 객체(리스트, 딕셔너리, 사용자 정의 객체 등)를 파일로 저장하고 나중에 불러와 사용할 수 있습니다.예를 들어, 복잡한 데이터 구조를 한 번 계산한 후 다시 계산하지 않기 위해 저장할 때 유용합니다.모델 저장:머신 러닝 모델을 학습..

잡다한것 2024.08.28

50년 주택담보대출이 의미 하는 것(계산 엑셀 파일 첨부)

50년 주택담보대출이 의미 하는 것주택담보대출이 비교적 이율이 낮지만,그게 장기간으로 길어질 경우 얼마나 악날해질 수 있는지다른 투자 상품과 비교하면 어느 차이인지한번 생각해볼 필요가 있다.긴 대출의 의미: 5억 원을 3% 이율로 50년간 대출하면 총 이자가 약 4억 6천만 원, 월 상환액은 160만 원이다.(원리금 균등상환)투자 대안: 같은 금액을 S&P 지수(연평균 9%)에 투자하면 50년 후 163억 원의 수익이 예상되며, 월세 100만 원을 가정해도 150억 원이 남는다.비교: 현재 주식에 246만 원, 부동산에 146만 원을 투자했으니 불공정 하다. 팀 부동산측 남는 100만 원을 S&P에 투자할 경우, 이제 48억 원 차이가 난다. 즉 주식투자가 48억 이득이다.결론50년 대출(48억 차이)은..

배포 2024.08.27

캐시 생성 에러 (module 'win32com.gen_py.7D2B6F3C-1D95-4E0C-BF5A-5EE564186FBCx0x1x0' has no attribute 'CLSIDToClassMap')

배경프로토타입 완성후 테스트를 며칠하고 있는데 오류발생오류 내용AttributeError: module 'win32com.gen_py.7D2B6F3C-1D95-4E0C-BF5A-5EE564186FBCx0x1x0' has no attribute 'CLSIDToClassMap'어제됐던 똑같은 코드로 오늘 했는데 실패한게 놀라움해결과정GPT 검색 결과 gen_py 캐시 폴더의 손상으로 인해 발생한 것이라는 의견C:\Users\makenow\AppData\Local\Temp\gen_py 경로의 캐시 폴더(gen_py)를 수동으로 삭제해봄삭제후 코드에서 캐시를 재생성하니 정상작동이 과정을 자동화할 필요를 느끼고, 코드 초기에 캐시에 이상이 있으면 삭제하고 재생성하는 함수를 만듦def ensure_hwp_dispa..

LLM 프로젝트에서 저장되는 로그의 용량이 너무 큰 문제

배경프로젝트 진행중 저장되는 로그파일 용량이 너무 큰 문제발생몇번 실행하니 용량이 무려 4기가가 넘었다.몇개의 스크립트를 실행하는 프로젝트였는데, 우선 가장 로그가 많은 스크립트(hwpx -> pdf)를 조사해봤다. log_file = os.path.join(path_daily_download, 'execution.log') logging.basicConfig( filename=log_file, level=logging.DEBUG, # 로그 레벨 설정 (DEBUG, INFO, WARNING, ERROR, CRITICAL) format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d..

445 포트와 SMB프로토콜을 통한 공유프린터, Psexec 통신

SMB(서버 메시지 블록) 개요SMB(서버 메시지 블록, Server Message Block)는 네트워크에서 파일, 프린터, 시리얼 포트 등 리소스를 공유하기 위해 사용되는 프로토콜입니다. 주로 Windows 운영 체제에서 널리 사용되며, 클라이언트-서버 모델을 기반으로 동작합니다.주요 기능 및 사용 사례파일 공유네트워크 상에서 여러 사용자가 동일한 파일에 접근할 수 있게 함.프린터 공유여러 사용자가 네트워크에 연결된 프린터를 공유하여 사용할 수 있게 함.네트워크 탐색클라이언트가 네트워크에서 공유된 폴더, 프린터 등을 탐색할 수 있게 함.도메인 인증네트워크 상의 사용자 인증과 권한 부여를 지원함.원격 명령 실행 (PsExec 활용)SMB를 통해 PsExec와 같은 도구를 사용하여 네트워크 상의 원격 컴..

로컬 llm으로 좋은 결과를 뽑아내기 위한 사투

배경 : 공고 데이터에서, 내용요약, 키워드 추출, 지원금액, 신청기간을 뽑아내는 작업을 하기로 했다.내용요약, 키워드 추출은 쉽게 해냈지만, 지원금액, 신청기간은 극악의 난이도를 자랑했다. 그 이유는 10장 내외의 pdf에서 한 군데만 있는 특정 정보(지원금액, 신청기간)를 추출해야 했기 때문이다. 로컬 LLM 프로젝트 빌딩시 어려웠던 점https://makenow90.tistory.com/44정리 : 프로젝트 하는데 실력으로 극복할수 없는(경험이 중요한) 멀티 변수 다뤄야하고, 좋은 GPU의 하드웨어 자원 그리고 아주 뛰어난 언어학적 재능까지 필요한 상황이다. 복잡해 보이지만LLM 프로젝트를 시작하기에 앞서 한가지 근본적인 질문을 던졌다."그래서 그 프로젝트 가능은 한거야?"이 질문에 대한 대답은 ..

LLM 프로젝트를 기획할 때 겪게 되는 어려운 점들

LLM 프로젝트를 진행할 때 겪게 되는 어려운 점들전문가가 없다 : 가장 중요한 부분이라 생각한다. 로컬 LLM은 비교적 최근에 도입된 개념이다. 즉 전문가라고 할만한 사람이 아직 없다. 극소수가 있다 해도  새롭게 등장한 이 기술이 실제에 어떻게 적용될수 있을지 판단하느냐. 다들 바쁘다.질문에 답할 사람도, 시간도, 자료도 없다.기술의 난립 : 랭체인, 허깅페이스, 올라마 등 플랫폼도 난립하고 있다. 또한 세계 여러 회사들이 튜닝을 거쳐 여러 모델을 내놓고 있다. 플랫폼의 선택, 모델의 선택 그 어떤것도 쉽지 않다.멀티 변수 : 코딩도 하는 방법이 다양하다지만, LLM 프로젝트로 오면 베리에이션이 훨씬 심해진다. 결과에 영향을 미치는 변수만 뽑자면 플랫폼, 언어모델, temperature, score_..

langchain 공부 2024.08.12