VectorDB: FIASS

calico·2025년 9월 25일

Artificial Intelligence

목록 보기
67/143

그럼 가입 없이 바로 실행 가능한 Vector DB 예제를 만들어 드리겠습니다.

  • FAISS (로컬 Vector DB, 가입 불필요)
  • Hugging Face 무료 Embedding 모델 (sentence-transformers)
    즉, API 키도 필요 없고, 사이트 가입도 필요 없습니다.

1. 설치


pip install faiss-cpu sentence-transformers



2. 실행 예제 코드



from sentence_transformers import SentenceTransformer
import faiss
import numpy as np

# 1. 무료 Embedding 모델 로드
model = SentenceTransformer('all-MiniLM-L6-v2')  # 384차원, 빠르고 가벼움

# 2. 데이터 준비
texts = [
    "안녕하세요, 저는 AI를 좋아합니다.",
    "벡터 데이터베이스는 유사도 검색에 유용합니다.",
    "오늘 날씨가 참 좋네요.",
    "FAISS는 로컬에서 빠르게 동작합니다."
]

# 3. 텍스트를 벡터로 변환
embeddings = model.encode(texts)
embeddings = np.array(embeddings, dtype='float32')

# 4. FAISS 인덱스 생성
dimension = embeddings.shape[1]  # 384
index = faiss.IndexFlatL2(dimension)  # L2 거리 기반 검색
index.add(embeddings)  # 데이터 추가

# 5. 검색 쿼리
query = "벡터 DB는 무엇인가요?"
query_vector = model.encode([query])
query_vector = np.array(query_vector, dtype='float32')

# 6. 검색 실행
k = 2  # 상위 2개 결과
distances, indices = index.search(query_vector, k)

# 7. 결과 출력
print("검색 쿼리:", query)
for i, idx in enumerate(indices[0]):
    print(f"결과 {i+1}: {texts[idx]} (거리: {distances[0][i]:.4f})")



3. 실행 결과 예시


검색 쿼리: 벡터 DB는 무엇인가요?
결과 1: 벡터 데이터베이스는 유사도 검색에 유용합니다. (거리: 0.1234)
결과 2: FAISS는 로컬에서 빠르게 동작합니다. (거리: 0.4567)



4. 장점


  • 가입 불필요: API 키 없이 바로 실행

  • 무료: 오픈소스 라이브러리와 무료 모델 사용

  • 빠름: 로컬에서 즉시 검색 가능

  • 한국어 지원: all-MiniLM-L6-v2 모델은 한국어도 어느 정도 지원



5. 주의사항


  • 로컬 메모리 용량에 따라 저장 가능한 데이터 크기 제한

  • 대규모 데이터(수백만 건) 처리 시 속도 저하 가능

  • Hugging Face 모델은 처음 실행 시 인터넷에서 다운로드 (1회만)



[가상환경]에러 발생 시 해결


원인 가능성

  1. Python 3.13 호환성 문제

    • transformers 라이브러리가 아직 Python 3.13에서 완벽히 테스트되지 않았을 수 있음

    • 특히 Path 순회하면서 import 구조를 만드는 부분에서 오래 걸리는 경우가 있음

  2. 패키지 설치 문제

    • sentence_transformerstransformers 버전 불일치

    • 오래된 버전이거나, 최신 버전이 Python 3.13에서 최적화 안 됨

  3. 환경 문제

    • Windows에서 파일 시스템 접근 속도가 느려서 import 구조 생성이 오래 걸림

    • 가상환경 없이 전역 Python에 설치해서 충돌 가능성 있음



2. 해결 방법


1) 가상환경 사용


# 새 가상환경 생성
python -m venv .venv
# 활성화
.venv\Scripts\activate
# 필요한 패키지 설치
pip install --upgrade pip
pip install sentence-transformers faiss-cpu

→ 가상환경에서 실행하면 다른 패키지와 충돌을 줄일 수 있습니다.



2) Python 버전 낮추기 (권장)


현재 Python 3.13은 아직 많은 AI 라이브러리에서 공식 지원이 불완전합니다.
Python 3.10~3.11로 내려가면 대부분 문제 없이 동작합니다.

예:

# 예: pyenv 또는 직접 설치
pyenv install 3.10.13
pyenv local 3.10.13

Windows라면 Python 공식 사이트에서 3.10 설치 후
가상환경에서 실행하세요.



3) 패키지 버전 명시 설치


pip install "transformers==4.35.2" "sentence-transformers==2.2.2"

→ 안정적으로 동작하는 버전 조합입니다.



  • AI 관련 라이브러리는 최신 Python 버전보다 안정 버전(3.10~3.11)에서 테스트하는 게 안전합니다.
  • 가상환경을 쓰면 프로젝트별로 패키지 버전 관리가 쉬워집니다.
  • faiss는 Windows에서 설치 시 faiss-cpu 버전을 쓰는 게 호환성이 좋습니다.

💡 제안
지금 바로 해결하려면
1) Python 3.10로 새 가상환경 만들고
2) sentence-transformersfaiss-cpu를 설치한 뒤
3) 방금 작성한 main() 구조 코드로 실행해보시면 됩니다.



profile
https://velog.io/@corone_hi/posts

0개의 댓글