본문 바로가기

전체 글85

Toward Optimal Search and Retrieval for RAG(2024) 리뷰 Abstract&IntroductionRAG 성능은 크게 두 가지에 의존한다. 바로 query로부터 정보를 retrieval하는 retriever와 이를 이용해 문장을 생성하는 reader인데, 이 논문에서는 RAG에서 retriever의 성능을 어떤 식으로 최적화시켜야 할지 여러 실험을 통해 보여준다. 먼저 저자는 이 논문에서 retriever만의 contribution을 측정하기 위해 LLM의 tuning을 진행하지 않는다는 점을 먼저 언급했다. 구리고 보편적인 QA와 attributed QA task에 RAG 성능 평가를 진행했다는데 여기서 attributed QA란 LLM이 생성 시 어떤 document를 참고했는지 언급하는 task를 말한다.Experiment setupLLM instructio.. 2024. 12. 3.
[Langchain] FAISS에서 cosine similarity 사용하기 기존에 구현했던 RAG 성능을 개선하는 PoC 느낌의 업무를 받아서 처음부터 db나 chunker를 새로 모색하기보다는 기존에 사용한 라이브러리를 그대로 사용했다. chunk, retrieval 쪽은 대게 langchain+FAISS로 구현되어 있었는데 retrieval 성능이 어떻게 해도 좋아지지 않아서 이것저것 찾아봤는데 점수 쪽에서 뭔가 이상하다고 느꼈다.FAISS로 vector DB를 만들 때 보통 vectorDB.from_documents( )를 사용했는데 이를 이용한 similarity_search는 L2 거리 기반임을 알 수 있었다. vector 거리 비교에 cosine similarity를 사용하지 않아 성능이 낮은 것이라 판단했다.그렇다고 다른 라이브러리나 벡터 db를 쓰기에는 관련 지식.. 2024. 11. 25.
Dense Passage Retrieval for Open-Domain Question Answering(2020) 리뷰 RAG 업무를 맡으며 팀원이 추천해 준 논문인데 저자의 기법보다는 전반적으로 task의 흐름에 대해 잘 설명해 줘서 주의 깊게 읽은 논문이다.  RAG 성능을 끌어올리기 위한 새로운 기법을 알고싶은 분들보다는  LLM 시대 이전의 전반적인 ODQA가 어떤 식으로 이루어졌는지 상세한 과정을 알고 싶은 사람들은 한 번쯤 읽어보면 좋을것 같다.Abstract & Introduction이 논문에서 저자는 기존의 sparse한 retrieval 방법론들(TF-IDF, BM25)보다 뛰어난 성능을 보여주는 dense representation을 통한 retrieval 방법론을 제시한다. 당시의 Open-domain question answering(ODQA)는 크게 두 가지 모듈의 성능에 좌우되었다.Retrieve.. 2024. 11. 16.
ImportError: Could not import sentence_transformers python package. Please install it with `pip install sentence-transformers`해결방법 RAG하려고 환경 깔때마다 가끔 나오는 에러였는데 발생 이유를 몰라서 나올때마다 찾아보기 위해 해결법만 정리해보려한다.TL'DRpip install datasets -U문제파악로그로는 sentence-transformers 라이브러리 문제 같은데 다시 깔거나 버전 업을 해도 당연하게도? 해결되지는 않는다. 로그를 쭉 위로 올리다 보면>>이런 느낌의 로그가 있는데 datasets로 인해 발생했다는걸 알 수 있다. 보통 라이브러리 문제는 재설치하면 대부분 해결되므로pip install datasets -U바로 시전한 결과 버전이 1.4.1->3.1.0으로 올랐다. 아마 다른 라이브러리에서 꽤 옛날 버전으로 datasets를 설치한것 같다.결과는 역시나. 원인을 모르겠어도 컴퓨터는 안되면 재설치가 답이다. 2024. 11. 9.
Compact Language Models via Pruning and Knowledge Distillation(2024)리뷰 LLM 논문을 분야 가리지 않고 여럿 읽던 중에 Nvidia의 경량화 관련 논문이 나와서 가볍게 읽어보고 리뷰해보려 한다. 이 기법은 nvidia에서 nemotron을 경량화하여minitron을 만드는 데 사용했다고 한다.Abstract&Introduction저자는 이 논문에서 현존하는 LLM을 기존보다 작은(의 데이터셋으로 경량화하고 retraining하는 방법론을 제안 경량화 방법으로는 pruning을 사용했으며 retraining에는 knowledge distillation(KD)를 사용했으며 기존 Nemotron4-15B모델을 8B와 4B로 경량화하였다. 연구의 시작점은 다음과 같은데 LLAMA, GPT 등 최근 LLM 모델들은 대게 7B, 13B, 70B 등 여러 parameter size의 모.. 2024. 11. 5.
파이콘 한국 2024 후기 취업 후 첫 컨퍼런스로 파이콘 2024에 참여했으며 들은 세션에 대한 간단한 정리와 후기를 공유하고자 합니다. 평소 개발행사에 종종 참여하기는 하지만 커뮤니티가 주최하는 컨퍼런스는 처음이었습니다. 파이썬 컨퍼런스답게 공유하고 커뮤니티를 만들어나가며 같이 성장하는 과정 자체를 강조하는 것 같아 한번쯤은 꼭 참여하고 싶은 행사였습니다.10월 26일 토요일 세션첫째날에는 노트북을 못 챙겨서 기억나는 대로 짧게 적겠습니다.커뮤니티와 파이썬, 그리고 우리이번에 LLM을 입문하며 한국어 데이터를 받을 때 가끔 보이던 "Beomi", 김준범 님이 발표하는 세션이었습니다. 키노트 세션으로 기억하는데 꽤 공감 가는 성장기였습니다.허깅페이스에서 봤을때 엄청난 프로그래밍 대가처럼 보였던 준범님도 당연히 입문자라 개발이하는게.. 2024. 10. 30.
2024 자동차 데이터 분석 경진대회(프롬프트 엔지니어링) LLM을 배운 지 1개월 정도 됐는데 프롬프트 엔지니어링이 보통 어떤 식으로 이루어지는지 그리고 gpt api는 어떻게 사용하는지 궁금했을 때 이 필요에 딱 맞는 대회라 생각해 공부 겸 참여하였다. 프롬프트 엔지니어링 예제를 찾아봤을때 경진대회에서 사용되는 확실한, 구체적인 예는 많지 않았고 특히 한국어 게시물은 원하는 퀄리티의 예제가 없어 어떤 식으로 구성했는지 공유하고 싶어 이 글을 작성했다.예상독자LLM 입문자: 프롬프트 엔지니어링을 어떤식으로 진행하는지 예시를 알고 싶은 분들문제 정의 2024 자동차 데이터 분석 경진대회 - DACON분석시각화 대회 코드 공유 게시물은 내용 확인 후 좋아요(투표) 가능합니다.dacon.io 문제 자체는 정말 간단했다. 각 데이터에 일정한 길이의 문자열이 포함되어 .. 2024. 10. 19.
[Git] git reset --hard 되돌리기 깃을 사용하다 보면 커밋메시지를 바꾼다거나 파일을 더 추가하고 싶다는 이유 등으로 git reset 명령어를 자주 사용한다. reset --soft로 돌아가면 문제없는데 커밋 이후 파일을 변경하면 reset --hard로 급하게 돌아오고 커밋하는 경우도 종종 있다. 문제는 이 과정에 중요한 코드가 누락될 수가 있다는 건데. 이번에는 이걸 되돌리는 방법에 대해 설명해 보겠다.커밋 내역 확인(git reflog)예시를 위해 Commit1~4 순으로 커밋했을 때 get reflog를 통해 위와 같이 커밋한 순서대로 커밋아이디와 커밋 메시지가 적혀있는걸 확인할 수 있다.이후 git reset --hard 305ef51로 과거 버전으로 이동하면 이후 커밋한 내역들(Commit_4)가 사라진걸 확인할 수 있다.gi.. 2024. 10. 12.