bm25 4

BM25 알고리즘 선택 기준 및 상세 사례

BM25 변형 알고리즘 선택 기준 및 상세 사례각 BM25 변형 알고리즘의 사용 사례를 데이터 유형, 문제 상황, 활용 목적에 따라 더 구체적으로 설명하겠습니다. 알고리즘의 특성과 실제 사용 가능성을 고려하여 더 많은 사례를 추가했습니다.1. 일반적인 검색추천 알고리즘: BM25Okapi이유: 간단하고 효율적이며, 대부분의 데이터 유형에서 기본적으로 잘 작동합니다.적합한 데이터 유형:긴 문서 중심의 데이터.검색 대상 문서 길이가 비슷한 데이터.TF와 IDF만으로 충분히 검색 품질을 확보할 수 있는 데이터.사용 사례검색 엔진Google 또는 Bing과 같은 웹 검색 엔진:사용자가 입력한 키워드와 관련된 문서를 검색.웹페이지의 제목, 본문 텍스트, 메타데이터를 대상으로 작동.사내 문서 검색:대기업의 내부 문..

langchain 공부 2024.11.21

BM25Retriever2 : BM25원리 코드로 해석하기

배경rank_bm25.py를 분석해서 진짜 bm25의 원리를 알고자함이론적 배경1. BM25 변형 알고리즘의 상세 비교 및 사용 사례(1) BM25Okapi설명:BM25의 기본 변형으로 가장 널리 사용되는 알고리즘.문서 길이와 단어 빈도를 보정하여 검색 점수를 계산.(b) 파라미터로 긴 문서와 짧은 문서 간의 점수 균형을 맞추며, (k1) 파라미터로 단어 빈도(TF)의 민감도를 조정.공식:IDF(역문서빈도) : **IDF(Inverse Document Frequency)**를 사용하여 특정 단어가 전체 문서에서 얼마나 중요한지를 측정 TF : 단어 빈도(해당 단어가 문서에서 나타난 횟수).k1 : TF의 기여도를 조정하는 파라미터로, TF에 대해 얼마나 민감하게 반응할지를 결정.b : 문서 길이 보정 파..

langchain 공부 2024.11.20

BM25Retriever1 내부 코드 분석

배경BM25Retriever의 bm25.py 의 원리를 알기 위해 내부코드를 분석하고자함진짜 bm25의 원리가 되는건 rank_bm25.py로 그건 내일 포스트 예정코드bm25.pyfrom __future__ import annotationsfrom typing import Any, Callable, Dict, Iterable, List, Optionalfrom langchain_core.callbacks import CallbackManagerForRetrieverRun from langchain_core.documents import Document from langchain_core.retrievers import BaseRetriever from pydantic import ConfigDic..

langchain 공부 2024.11.19

BM25를 추가한 리트리버(retriver)로 성능 올리기

배경임베딩 방식의 검색기를 사용했는데, 검색기의 성능이 좋지 않았다. 질문 14개 중에 6개만 정답이었고, 오답의 대부분이 검색기 문제로 오답이었다. # 검색기 설정 retriever = vectorstore.as_retriever( search_type="similarity_score_threshold", search_kwargs={'k': 20, "score_threshold": 0.30} )원인을 파악해보니, 자주 쓰이는 단어 때문이었다. 이유 : '여자' 라는 단어가 본문에 너무 자주 쓰여서, 검색기가 이걸 찾기가 힘듦.해결방안 : '여자'라는 단어의 중요도를 낮추고 '패션'이라는 단어에 집중해 검색 해야한다.이 문제를 해결하기 위해 만들어진게 BM25 ..