티스토리챌린지 21

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

Document, BaseMedia 내부 분석

이 두 클래스는 상속 관계에 있으며, 데이터와 메타데이터를 관리하기 위한 계층 구조를 형성합니다. BaseMedia는 미디어 데이터에 대한 기본 구조와 속성을 정의하는 추상적인 베이스 클래스 역할을 하고, Document는 이를 확장하여 텍스트 문서 데이터와 관련된 구체적인 기능과 속성을 추가하는 역할을 합니다.1. BaseMedia 클래스의 역할BaseMedia는 미디어 데이터의 기본 구조를 정의하는 추상적이고 상위 개념의 클래스로, 다른 미디어 데이터 관련 클래스들이 상속받을 수 있도록 설계된 베이스 클래스입니다. 여기에는 데이터나 파일의 메타데이터와 ID와 같은 공통된 속성을 정의하고, 그 데이터를 구조화하거나 검색하는 데 필요한 기능을 제공합니다.BaseMedia의 주요 특징:ID: 각 미디어 데..

langchain 공부 2024.11.09

Type Hinting과 Pydantic 차이

Pydantic과 타입 힌팅(type hinting)은 모두 코드에서 데이터 타입을 명시하는 데 도움을 주지만, 그 목적과 기능은 서로 다릅니다.1. 타입 힌팅 (Type Hinting)타입 힌팅은 코드에서 변수, 함수 매개변수, 반환값 등에 타입 정보를 명시하는 기능입니다. Python에서는 타입 힌팅을 통해 코드 가독성과 안정성을 높일 수 있지만, 실행 시에 실제로 타입 검사를 수행하지는 않습니다. 즉, 타입 힌팅은 개발자와 IDE에게 타입 정보를 제공할 뿐이며, 코드 실행 중에 데이터 타입을 강제하지 않습니다.예시: 타입 힌팅def add_numbers(a: int, b: int) -> int: return a + b# 잘못된 타입을 넣어도 에러가 발생하지 않음 (실행 시점에서 검증이 이루어지..

사용툴 분석 2024.11.08