티스토리 뷰
회사에서 챗봇에 적용할 RAG를 도입하기 위해 벡터 DB 중에 Postgresql에 PGvector를 사용했다. 선임 분이 PG 벡터를 사용하자고 했는데 성능적으로 조사해야할 필요가 있어 보였다. 글을 이것저것 찾아보다가 흥미로운 블로그가 있어 정리를 해보았다.
Comparing Vector Databases
If you are a developer interested in AI, there is a good chance that you may have started working with Large Language Models such as…
adamsblum.medium.com
1. 로드 시간 (3,680 개의 벡터 로드)
1) Pinecone:
- 벡터 로딩 시간: 15.83 초
- 평균 로딩 시간: 4.3 milliseconds per vector
2) Weaviate:
- 벡터 로딩 시간: Pinecone과 비슷
- 평균 로딩 시간: 5 milliseconds per vector
3) Milvus:
- 벡터 로딩 시간: 37.53 초
- 평균 로딩 시간: 1 milliseconds per vector
- 벡터 로딩에는 별도의 인덱스 생성 단계가 필요함.
4) pgvector:
- 벡터 로딩 시간: 351.49 초
- 인덱스 생성 시간: 0.28 초
- 평균 로딩 시간: 9.5 milliseconds per vector
로딩 성능 요약:
- 벡터 로딩 성능 면에서 Milvus가 압도적으로 우수함.
- Pinecone과 Weaviate는 벡터를 배치로 업로드할 수 있으며, 성능 면에서 비슷한 특성을 보임
- pgvector는 Postgres의 제약으로 인해 로딩 속도가 느림.
2. 검색 성능
3. 코드 경험
전반적으로 pgvector가 SQL을 확장하였기 때문에 개발자라면 pgvector가 사용하기 수월하다는 내용
4. 특징
특징도 내가 이해할 수 있는 수준에서 정리해보자면..
1) Weaviate:
- GraphQL 쿼리 언어 제공으로 복잡한 쿼리 및 데이터 검색 가능
- hybrid search 지원 (sparse 임베딩, LLM 임베딩 )
- 거리 기반 유사도는 제공하지 않는다.
2) Pinecone:
- 병렬 업서트 지원
- namespaced data? 데이터 지원
- 최근 하이브리드 검색 추가
- 오픈 소스가 아니다..
3) Milvus:
- 스케일 업이 가능해서 대규모 데이터를 다루는데 좋다.
- DiskANN 인덱싱 방법 지원
- 명시적으로 인덱스를 생성 해야함.
- 검색 품지이 다소 떨어짐.
4) Postgres:
- 단일 저장소로 모든 데이터, 벡터, 기타 데이터 저장 가능
- 검색 품질이 좋음.
- 로딩 시간이 느리고 검색이 느림
- 명시적으로 인덱스 생성 필요
결론적으로 시나리오가 많지 않은 챗봇 운영에 있어 응답률이 가장 높아야 하기 때문에 Postgres가 좋은 것 같다.
'DevOps > DB' 카테고리의 다른 글
[Redis] Docker-compose로 redis를 설치하기 (0) | 2024.05.03 |
---|---|
[mongoDB] 중복된 document 제거 (0) | 2023.02.23 |
스칼라쿼리 원리 (0) | 2021.02.06 |
[MySQL] show index from 테이블 해석 (0) | 2021.01.22 |
- Total
- Today
- Yesterday
- springboot
- 그리디
- llm
- 정보보안기사
- t검정
- 시간초과
- 카카오페이면접후기
- linux
- 보안
- 딥러닝
- FastAPI
- 정보보안
- Ai
- 우선순위큐
- 프로그래머스
- LangChain
- 코딩테스트
- synflooding
- 보안기사
- Python
- 백준
- 카카오페이
- 분산시스템
- 자료구조
- 다이나믹프로그래밍
- t-test
- java
- lightsail
- 파이썬
- 리눅스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |