벡터db 3

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

벡터 데이터베이스

배경 : pdf-rag 제작에 chromadb를 사용했는데, 이유가 궁금하다. 알고보니 chromadb는 벡터데이터베이스.그렇다면 벡터 db는 뭐고 어디에 쓸까? 벡터 데이터베이스(Vector Database)일반적인 데이터베이스는 텍스트, 숫자, 날짜 등의 형태의 데이터를 저장하고 검색하는 데에 사용됨벡터DB는 말그대로 벡터를 저장하는 데 사용되는 데이터베이스로서 여기에는 텍스트나, 이미지와 같은 비정형 데이터를 벡터로 바꾸어서 저장하게 된다.한편 이렇게 다양한 데이터를 저장하는 건 좋으나 정작 데이터를 찾으려 할 때 새로운 해결책이 필요하게 되었다. 대용량의 문서, 이미지, 심지어는 동영상과 같은 데이터는 어떻게 검색할 것인가하는 문제를 해결하기 위해 벡터DB가 등장하였다. 결과적으로 현재까지 비정형..