FAISS 5

(이해를 돕는) Langchain 컴포넌트 코드 분석 총 모음

내용 : langchain의 여러 컴포넌트 코드를 분석해, 원리를 파악하는데 도움을 준다. InMemoryDocstore : https://makenow90.tistory.com/87Document, BaseMedia : https://makenow90.tistory.com/91Faiss : https://makenow90.tistory.com/93, https://makenow90.tistory.com/95 Faiss 모듈 내 코드 분석2배경faiss 모듈 내 코드를 분석해서, 여러 용도로 응용하고자함.코드 async def asimilarity_search_with_score_by_vector( self, embedding: List[float], k: int = 4, filter: Optional[..

langchain 공부 2024.11.27

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

faiss.write_index 한글 제목 저장 안됨 문제

배경faiss.write_index(faiss_index, f"data\\index\\{index_name}.index")여기서 인덱스 파일 제목(index_name) 이 한글인 경우 저장 안됨, 그렇다고 아무 영어이름으로 바꾸긴 싫었음.고유 제목의 개성을 유지하면서 변환하는 방식을 모색해결과정 : base64를 통한 제목 변환import base64name="백년!@#$%^&*()_+[]{};',.//*-+."print(name)-> 백년!@#$%^&*()_+[]{};',.//*-+.# 1. 문자열을 바이트로 변환print(name.encode('utf-8'))-> b"\xeb\xb0\xb1\xeb\x85\x84!@#$%^&*()_+[]{};',.//*-+."# 2. 바이트화된 데이터 base64로 변..