teddylee777 / langchain-kr

LangChain 공식 Document, Cookbook, 그 밖의 실용 예제를 바탕으로 작성한 한국어 튜토리얼입니다. 본 튜토리얼을 통해 LangChain을 더 쉽고 효과적으로 사용하는 방법을 배울 수 있습니다.
https://wikidocs.net/book/14314
870 stars 193 forks source link

kiwi.search_with_score() 사용 결과 피드백 #7

Open cute2bear opened 3 weeks ago

cute2bear commented 3 weeks ago

안녕하세요. 제 환경에서 테스트를 해보았습니다.

query: httpservcie 에서 post 요청 타임아웃 시간 조정 결과중에 0.58 score가 눈에 띄어 유심히 살펴 보았습니다.

==== score: 0.5803069499820458 title: 루아 프로파일러를 활용하여 최적화하기 .... ==== score: 0.19870724562646203 title: HttpService subtitle: 'Functions' ... ==== score: 0.0453438546117377 title: 플레이어 카메라 제어 ... ==== score: 0.02980760382246637 title: 예시로 알아보는 서버 검증 ...

0.58점이 나온 context를 살펴보니 대략 다음과 같다는 것을 확인 했습니다. httpservice( 없음 ), post( 1 ), 에게( 15 ), 시간(12 )

분석한 바론 에게시간의 등장 개수가 많아서 점수가 높았던 것이 아닐까 싶습니다. 결론은 쿼리와 무관한 context의 점수가 너무 높게 나왔네요.

감사합니다.

teddylee777 commented 3 weeks ago

@cute2bear 님 소중한 피드백 감사합니다. 저도 사실 이 이슈에 대해서 확인하였는데요. library 에서 임의 처리하는 것이 맞을까 생각하여 일단 score 계산은 BM25 스코어 방식을 차용하여 따라 구현하였습니다.

이를 개선하는 아이디어는, 형태소 분석기 + 한글 불용어 처리를 하여 score 계산하는 방법입니다.

이때 이 함수를 적극 사용할 개발자 관점에서 생각해 볼때:

  1. search_with_score() 호출시 (평균적인) 불용어 사전을 패키지 단에서 알아서 처리
  2. 객체 instance 생성시 불용어 사전을 개발자가 파라미터로 넘겨서 최적화된 불용어를 처리

주신 의견을 잘 반영해 볼 수 있도록 score 개선하여 다음 업데이트 때 반영하도록 하겠습니다. 감사합니다.

cute2bear commented 3 weeks ago

세심한 답변 감사합니다. bm25의 목적 자체가 키워드이니 어쩌면 자체적으로 조사와 동사를 과감히 제외하는 것이 좋을지도 모르겠단 생각이 듭니다.

고맙습니다.