벡터로 데이터 저장하고 검색하기

벡터로 데이터 저장하고 검색하기 (Store and search data with vectors)

벡터 데이터베이스를 이해하고, n8n이 임베딩·리트리버·문서 로더 등 벡터 데이터베이스 작업에 필요한 핵심 컴포넌트를 어떻게 제공하는지 살펴볼게요.

벡터 데이터베이스는 정보를 숫자로 저장해요.

벡터 데이터베이스는 데이터를 고차원 벡터(특징 또는 속성의 수학적 표현)로 저장하는 데이터베이스 유형이에요 (출처)

이 덕분에 빠르고 정확한 유사성 검색이 가능해져요. 벡터 데이터베이스에서는 일반적인 데이터베이스 질의 대신, 의미적·맥락적 의미에 기반해 관련 데이터를 검색할 수 있어요.

단순화된 예시

벡터 데이터베이스는 "n8n is a source-available automation tool that you can self-host"이라는 문장을 저장할 수 있어요. 다만 텍스트로 저장하는 대신, 그 특징을 나타내는 차원(dimension)의 배열(0과 1 사이 숫자)로 저장하죠. 문장의 각 글자를 숫자로 바꾼다는 뜻이 아니에요. 벡터 데이터베이스의 벡터가 문장 자체를 묘사하는 거예요.

벡터 스토어에서 0.1automation tool을, 0.2source available을, 0.3can be self-hosted를 나타낸다고 가정해 볼게요. 그러면 다음과 같은 벡터가 만들어져요.

문장 벡터 (차원 배열)
n8n is a source-available automation tool that you can self-host [0.1, 0.2, 0.3]
Zapier is an automation tool [0.1]
Make is an automation tool [0.1]
Confluence is a wiki tool that you can self-host [0.3]

{% hint style="info" %} 이 예시는 매우 단순화된 것

실제로 벡터는 훨씬 복잡해요. 벡터의 크기는 수십에서 수천 차원까지 다양할 수 있고, 차원은 단일 특징과 일대일 관계를 갖지 않아서 개별 차원을 단일 개념으로 직접 번역할 수 없어요. 이 예시는 대략적인 멘탈 모델을 주는 것이지, 진짜 기술적 이해를 주는 건 아니에요. {% endhint %}

유사성 검색의 힘 보여주기

Qdrant는 사용자가 벡터 데이터베이스의 힘을 이해하도록 벡터 검색 데모를 제공해요. 음식 탐색 데모는 벡터 스토어가 시각적 유사성에 기반해 사진을 매칭하는 데 어떻게 도움을 주는지 보여줘요.

이 데모는 Delivery Service의 데이터를 사용해요. 사용자는 요리 사진을 좋아하거나 싫어할 수 있고, 앱은 사진이 어떻게 보이는지에 따라 비슷한 식사를 더 추천해요. 또 배달 반경 안의 레스토랑 결과만 보도록 선택할 수도 있어요. (출처)

전체 기술적 세부사항은 Qdrant demo-food-discovery GitHub 저장소를 참고하세요.

임베딩, 리트리버, 텍스트 분할기, 문서 로더

벡터 데이터베이스가 작동하려면 다른 도구들이 필요해요.

  • 문서 로더와 텍스트 분할기: 문서 로더는 문서와 데이터를 가져와 임베딩[^1]을 위한 준비를 해요. 문서 로더는 텍스트 분할기를 사용해 문서를 chunk로 나눌 수 있어요.
  • 임베딩: 데이터(텍스트, 이미지 등)를 벡터로, 그리고 다시 원본 데이터로 바꾸는 도구예요. n8n은 텍스트 임베딩만 지원한다는 점을 알아두세요.
  • 리트리버: 리트리버는 벡터 데이터베이스에서 문서를 가져와요. 벡터를 다시 데이터로 번역하려면 임베딩과 짝을 이뤄야 해요.

출처: 공식문서

더 알아보기 (Learn more)

[^1]: 임베딩은 벡터를 사용한 데이터의 수치 표현이에요. AI가 많은 차원에 걸쳐 값을 매핑해 복잡한 데이터와 관계를 해석하는 데 쓰여요. 벡터 데이터베이스 또는 벡터 스토어는 임베딩을 저장하고 접근하도록 설계된 데이터베이스예요.