분류 전체보기 99

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

LongContextReorder는 어떤 원리로 Context를 재배치할까?

배경Lost in the Middle: How Language Models Use Long Contexts 논문(https://arxiv.org/abs/2307.03172)-> Context가 10장이 넘어가면 중간에 있는 데이터의 내용이 무시되는 경향이 있다.2. 그래서 양끝에 가장 관련도가 높은 문서를 배치하는지 하는게 좋은 전략이 된다.3. 실제로 내 프로젝트에 적용했을때도, 정답률이 10% 향상 되는 효과를 보였다.4. 그렇다면 어떤 원리로 양끝에 가장 관련도가 높은 문서를 배치하는지 알아보고자 한다.코드"""Reorder documents"""from typing import Any, List, Sequencefrom langchain_core.documents import BaseDocumen..

langchain 공부 2024.11.16

contextual compression Retriever 내부 코드 분석

배경contextual compression Retriever의 원리가 궁금해 내부 코드를 살펴본다.코드from typing import Any, Listfrom langchain_core.callbacks import ( AsyncCallbackManagerForRetrieverRun, # 비동기 콜백 관리자를 사용 CallbackManagerForRetrieverRun, # 동기 콜백 관리자를 사용)from langchain_core.documents import Documentfrom langchain_core.retrievers import BaseRetriever, RetrieverLikefrom pydantic import ConfigDictfrom langchain.retrie..

langchain 공부 2024.11.15

CrossEncoderReranker 내부 코드 분석

배경CrossEncoderReranker의 내부 코드를 보고 활용 방법을 찾아본다.코드from __future__ import annotationsimport operatorfrom typing import Optional, Sequencefrom langchain_core.callbacks import Callbacksfrom langchain_core.documents import BaseDocumentCompressor, Documentfrom pydantic import ConfigDictfrom langchain.retrievers.document_compressors.cross_encoder import BaseCrossEncoderclass CrossEncoderReranker(BaseDoc..

langchain 공부 2024.11.14

(상법 개정 간담회) 주주 피해 사례 요약

의원1내용 요약한국 주식시장이 침체에서 벗어나지 못하는 원인을 낮은 배당률과 대주주의 불공정한 조직 개편 등으로 지적하며, 기업 지배구조 개선과 공정한 자본시장 규칙의 필요성을 강조함. TF는 이를 해결하기 위한 노력을 다하겠다는 입장을 밝힘.서론한국 주식시장이 여전히 바닥을 벗어나지 못하는 이유로 낮은 배당률, 대주주의 엉터리 조직 개편, 불공정한 행태 등이 있다고 지적하며, 이러한 문제 해결이 필요하다고 주장함.본론한 기업의 최근 사례를 통해 경영진이 자사주 매입 후 유상증자를 발표하여 투자자들에게 손해를 끼친 사건을 언급함. 투자자의 자산을 자기 자산처럼 불공정하게 사용하는 이러한 행태는 반드시 제도적으로 보완이 필요하다고 강조함.한국 경제의 저성장 문제는 긴 호흡으로 풀어나가야 할 과제이지만, 현..

잡다한것 2024.11.12

Faiss 모듈 내 코드 분석1

배경faiss 모듈 내 코드를 분석해서, 여러 용도로 응용하고자함.코드from __future__ import annotations # 미래 버전의 타입 힌트를 사용할 수 있게 함import loggingimport operatorimport osimport pickleimport uuidimport warningsfrom pathlib import Pathfrom typing import ( Any, Callable, Dict, Iterable, List, Optional, Sized, Tuple, Union,)import numpy as npfrom langchain_core.documents import Documentfrom langchain_co..

langchain 공부 2024.11.11

벡터 DB 유사도 측정 방식 총 정리(L2 Distance,Inner Product, Cosine,Jaccard)

벡터 DB 유사도 측정 방식 총 정리1. L2 Distance (유클리드 거리)요약 : 유클리드 거리는 벡터 간의 직선 거리를 측정하므로, 크기와 방향 모두가 유사도 계산에 영향을 줍니다.수학적 원리: 두 벡터 간의 직선 거리를 계산하며, 각 요소의 차이를 제곱해 합한 후 제곱근을 구하는 방식입니다. 이로 인해 두 벡터 간의 물리적 거리를 나타내며 크기와 방향이 모두 고려됩니다.사용 상황벡터의 크기와 방향이 모두 중요한 경우, 예: 이미지 임베딩 간 거리 계산, 물리적 거리, 픽셀 간 거리 비교 등.이런 상황에 왜 좋은가?이미지 임베딩은 고차원 공간의 특징 벡터로, L2 거리 계산을 통해 시각적 차이를 반영할 수 있습니다.코드import numpy as npimport faiss# 128차원 벡터 10,..

langchain 공부 2024.11.10