전체 글 99

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

ChatOllama 내부 코드 분석 2

배경ChatOllama 내부 코드 분석1에 이어서 계속코드 # 동기식 채팅 스트림을 생성하는 메서드 def _create_chat_stream( self, messages: List[BaseMessage], # 모델에 보낼 메시지 리스트 stop: Optional[List[str]] = None, # 스트림을 종료할 기준이 되는 선택적 stop 토큰 리스트 **kwargs: Any, # 추가적으로 전달할 선택적 키워드 인자들 ) -> Iterator[str]: # 문자열(스트림 응답)을 반환하는 이터레이터 # payload는 모델 호출을 구조화된 방식으로 처리할 수 있도록 준비 payload = { ..

langchain 공부 2024.11.18