AI/LLM

[Vector DB] 지식의 저장소

jumemory 2025. 8. 1. 20:25

이번 단계는 RAG(검색 증강 생성) 시스템의 심장이자, 수많은 데이터 속에서 필요한 지식을 빛의 속도로 찾아내는 [13단계: Vector DB] 지식의 저장소입니다. 텍스트를 단순한 글자가 아닌 '공간 속의 좌표'로 이해하는 이 혁신적인 저장 기술을 정리해 드립니다.


[LLM 컨셉] Vector DB: 의미를 좌표로 저장하는 지식 창고

**벡터 데이터베이스(Vector Database)**는 데이터를 수치화된 리스트인 '벡터(Vector)' 형태로 저장하고 검색하는 데 특화된 저장소입니다. 기존 DB가 '키워드'가 일치하는지를 따졌다면, 벡터 DB는 '의미'가 얼마나 가까운지를 계산합니다.


1. 왜 벡터 DB가 필요한가? (키워드 검색의 한계)

기존의 관계형 DB(SQL)나 단순 검색은 단어가 정확히 일치해야 찾을 수 있습니다.

  • 기존 방식: '강아지'를 검색하면 '개'라는 단어가 포함된 문서는 찾지 못할 수 있음.
  • 벡터 DB: '강아지'와 '개'의 의미적 거리가 가깝다는 것을 좌표상에서 파악하여 연관된 정보를 정확히 찾아냄.

2. 핵심 원리: 임베딩(Embedding)과 유사도 검색

벡터 DB가 작동하는 방식은 크게 두 단계로 나뉩니다.

① 임베딩 (Embedding)

텍스트를 고차원 공간상의 좌표로 변환하는 과정입니다. LLM과 같은 모델을 통과하면 "나는 오늘 행복해"라는 문장은 [0.12, -0.5, 0.88, ...] 같은 수천 개의 숫자로 변환됩니다. 이때 의미가 비슷한 문장들은 공간상에서 서로 가까운 위치에 모이게 됩니다.

② 유사도 검색 (Similarity Search)

사용자가 질문을 던지면, 그 질문도 벡터로 변환합니다. 그 후 DB 내에 저장된 수많은 벡터 중 질문 벡터와 가장 거리가 가까운 것들을 골라냅니다. 주로 **코사인 유사도(Cosine Similarity)**나 L2 거리 등을 사용하여 거리를 측정합니다.


3. 벡터 DB의 주요 기능과 특징

  • 고차원 인덱싱 (Indexing): 수백만 개의 데이터 속에서 빠르게 검색하기 위해 데이터를 체계적으로 분류해 둡니다. (예: HNSW, IVFFlat 알고리즘 등)
  • 메타데이터 필터링: 벡터 값뿐만 아니라 "2024년에 작성된 문서만 찾아줘"와 같은 일반적인 조건(날짜, 작성자 등)을 결합해 검색할 수 있습니다.
  • 실시간 업데이트: 새로운 문서를 추가하면 즉시 임베딩되어 검색 결과에 반영되므로, RAG 시스템의 지식을 실시간으로 확장할 수 있습니다.

4. 대표적인 벡터 DB 솔루션

현재 시장에서 많이 쓰이는 도구들은 다음과 같습니다.

  • 오픈소스/설치형: Chroma, Milvus, Weaviate, Faiss (Facebook 개발)
  • 클라우드/매니지드: Pinecone, MongoDB Atlas Vector Search, Azure AI Search

5. [선생님의 심화 보충] 청킹(Chunking) 전략

벡터 DB에 문서를 넣을 때 가장 중요한 실무 기술은 **청킹(Chunking)**입니다. 책 한 권을 통째로 하나의 벡터로 만들면 의미가 너무 희석됩니다. 따라서 문서를 의미 있는 단위(예: 500자 내외)로 쪼개서 저장해야 합니다.

  • 너무 작으면: 문맥이 끊겨서 내용을 이해하지 못함.
  • 너무 크면: 불필요한 정보가 섞여 검색의 정확도가 떨어짐. **"적절한 크기로 쪼개서 겹치게(Overlap) 저장하는 것"**이 벡터 DB 활용의 핵심 노하우입니다.

✍️ 공부를 마치며

벡터 DB는 LLM이 방대한 외부 지식을 마치 자신의 기억처럼 꺼내 쓸 수 있게 해주는 '외장 하드'입니다. 이제 우리는 지식을 저장하고 찾는 법까지 마스터했습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

from langchain_core.runnables import RunnableLambda, RunnablePassthrough, RunnableMap

1️⃣ RunnableLambda란?

  • LangChain의 Runnable 클래스 중 하나로,
  • 간단한 Python 함수LangChain의 체인(Chain) 안에서 실행할 수 있도록 감싸주는 역할을 해요.
  • 즉, 보RunnableMap
    • 여러 개의 Runnable을 동시에 실행해서 딕셔너리 형태로 결과를 반환합니다.
    • 즉, 하나의 입력에 대해 여러 경로로 처리 가능.
    통 lambda x: ...처럼 만드는 함수를 LangChain에서 재사용 가능한 노드로 만들어줍니다.

RAG 아키텍쳐

jax, 러스트 유망주 언어 모델임 참고

cell 추가 

 

현재 셀에서 

 

 

위에 추가 

 

 

삭제 

 

dd 

 

복사 

 

c

 

붙여넣기 

v

 

되돌리기 

z



마크다운 

 

코드모드 

y

 

'AI > LLM' 카테고리의 다른 글

[LangChain] AI 파이프라인 구축  (0) 2025.08.05
[Semantic Search] 의미 기반 검색  (4) 2025.08.04
[RAG 기초] 환각 현상의 구세주  (0) 2025.07.31
[PEFT 2] 양자화 튜닝 QLoRA  (3) 2025.07.30
[PEFT 1] 효율적 튜닝 LoRA  (0) 2025.07.29