벡터 검색이란 무엇인가요?
개발자들은 애플리케이션의 사용자 적응력을 높이기 위해 벡터 검색으로 몰려들고 있습니다. 용어 그대로 검색 가 암시하듯이, 벡터 검색은 다음과 같은 개념을 사용하여 객체를 찾고 비교하는 것입니다. 벡터. 간단히 말해, 다음을 찾을 수 있도록 도와줍니다. 유사성 를 사용하여 데이터 내에서 복잡한 문맥 인식 관계를 찾을 수 있습니다. 이는 차세대 검색 관련 애플리케이션의 기반이 되는 기술입니다.
벡터 검색은 다음과 같은 최신 데이터 플랫폼의 AI 기반 검색 기능입니다. 벡터 데이터베이스를 통해 사용자가 더욱 유연한 애플리케이션을 구축할 수 있습니다. 더 이상 기본 키워드 검색에만 국한되지 않고 다음과 같은 다양한 기능을 사용할 수 있습니다. 의미적으로 유사한 모든 종류의 디지털 미디어에 걸쳐 정보를 제공합니다.
핵심은 다음과 같이 구동되는 많은 머신 러닝 시스템 중 하나입니다. 대규모 언어 모델(LLM) 다양한 크기와 복잡성을 가진 데이터로 가득합니다. 이러한 데이터는 데이터베이스와 기존 플랫폼을 통해 제공되며 심지어 모바일 기기에서 실행되는 엣지.
벡터 검색, 관련 용어, 기능 및 최신 데이터베이스 기술 혁신에 적용되는 방법에 대해 자세히 알아보려면 다음에서 확인하세요. 인공 지능(AI)계속 읽어보세요.
벡터는 무엇을 의미하나요?
벡터는 데이터 구조 숫자 배열을 담고 있는 벡터를 말합니다. 이 경우에는 적용된 데이터 세트의 디지털 요약을 저장하는 벡터를 의미합니다. 지문이나 요약이라고 생각할 수 있지만 공식적으로는 임베딩. 다음은 간단한 예시입니다:
1 |
"파란색 티셔츠": [-0.02511234 0.05473123 -0.01234567 ... 0.00456789 0.03345678 -0.00789012] |
벡터 검색의 이점
벡터 검색은 데이터베이스와 이를 사용하는 애플리케이션에 다양한 새로운 기능을 제공합니다. 간단히 말해, 벡터 검색은 사용자가 더 많은 것을 찾을 수 있도록 도와줍니다. 문맥 인식 매치 를 대규모 정보 모음(일명 말뭉치) 내에 저장합니다. 아이디어 친밀감 벡터 검색은 항목을 통계적으로 그룹화하여 얼마나 유사하거나 연관성이 있는지 보여줍니다. 이는 텍스트뿐만 아니라 훨씬 더 많은 항목에 적용되지만, 기존 검색 시스템과의 비교를 돕기 위해 많은 예제가 텍스트 기반입니다.
방대한 일반 지식에 액세스
벡터 검색은 또한 애플리케이션에 인공 지능 툴을 도입하는 훌륭한 전략으로, 기존의 검색 툴만으로는 불가능한 적응형 유연성을 제공합니다. 대량의 공개 LLM을 사용할 수 있기 때문에 어떤 회사든 이를 채택하여 애플리케이션에서 검색의 기반으로 사용할 수 있습니다. LLM은 많은 정보를 저장하기 때문에 복잡한 코드를 작성하지 않고도 검색 결과를 통해 애플리케이션에 기하급수적인 가치를 더할 수 있습니다. 이는 많은 애플리케이션이 새롭고 강력한 기능으로 업데이트되는 한 가지 방법입니다.
초강력 검색과 기존 검색
다행히도 벡터 검색은 더 복잡한 시나리오에서 더 빠른 검색 방식이기도 합니다. 기존의 키워드 기반 검색 시스템은 문서에서 일치하는 텍스트를 찾도록 최적화할 수 있지만, 복잡한 퍼지 매칭 알고리즘이나 극단적인 부울 술어 해결 방법(예: 많은 WHERE 절)을 적용해야 하는 경우 속도가 느려지고 복잡해지기 시작합니다.
벡터 검색을 사용하면 복잡한 환경에서 성공적으로 검색하는 데 필요한 다양한 절충안을 피할 수 있습니다. 그러나 이러한 절충안에는 애플리케이션을 LLM에 인터페이스하는 데 도움이 되는 적절한 리소스를 갖춘 서비스 수준 API(예: OpenAI)가 필요합니다. 또한 벡터 검색 시스템 뒤에 있는 LLM에 따라 선택과 제한이 있을 수 있습니다.
기존 검색과 벡터 검색의 차이점은 무엇인가요?
위의 장점은 기존 검색 방식과 벡터 검색 방식 간의 기술적 차이점과 일부 겹칩니다. 이 섹션에서는 이러한 서로 다른 접근 방식 간에 실제로 무엇이 중요한지 살펴봅니다.
컨텍스트 및 시맨틱 검색
다양한 검색 관련 시스템에서 키워드 또는 구문 검색에 최적화된 검색을 사용해 왔습니다. 정밀한 텍스트 일치 또는 키워드를 가장 자주 사용하는 문서를 찾는 데 사용됩니다. 문제는 이러한 검색은 컨텍스트와 유연성이 부족할 수 있다는 것입니다. 예를 들어, '나무'에 대한 텍스트 검색은 관련성이 높더라도 실제 나무 종의 이름과 데이터가 일치하지 않을 수 있습니다. 이러한 종류의 문맥 일치는 다음과 같은 형태입니다. 시맨틱 검색-문맥과 단어 간의 관계가 중요한 경우.
유사성
하지만 벡터 검색은 의미론적 관계에 관한 것만이 아닙니다. 예를 들어, 텍스트 기반 애플리케이션에서는 단일 단어나 구를 사용하는 것에서 더 나아가 유사 입력 단어, 문장, 단락 등을 사용하여 문서를 일치시키는 기능으로, 매우 심층적인 수준에서 의미와 문맥이 일치하는 텍스트 예시를 찾습니다.
유사도 검색은 이미지에서도 작동합니다. 두 이미지를 함께 비교하는 애플리케이션을 작성한다면 어떻게 할까요? 한 이미지의 각 픽셀을 다른 이미지의 각 픽셀과 비교하면 다음과 같은 이미지만 찾을 수 있습니다. 동일 색상, 해상도, 인코딩 등이 다릅니다. 하지만 이미지를 분석하여 콘텐츠에 대한 벡터 임베딩을 생성할 수 있다면 이미지를 비교하고 일치하는 항목을 찾을 수 있습니다. 이미지 예시에 적용된 벡터 임베딩은 각 이미지의 콘텐츠를 설명한 다음 이를 비교할 수 있게 해주므로 이미지 간의 '근접성'을 훨씬 더 강력하게 비교하고 찾을 수 있습니다.
다음에 대해 자세히 알아볼 수 있습니다. 벡터 임베딩 의 다른 블로그 게시물에서 자세히 알아보거나 기본적인 개요를 읽어보세요.
벡터 검색의 작동 방식
벡터 검색은 벡터 임베딩을 생성하고 비교합니다. 데이터를 숫자 벡터 표현(임베딩)으로 바꾸고 유사한 디지털 표현(LLM 사용)으로 카탈로그화된 다른 데이터와 비교할 수 있다는 원리에 따라 작동합니다.
다양한 유형의 디지털 콘텐츠(텍스트, 오디오, 동영상 등)를 신경망이 이해할 수 있는 공통 언어로 색인화합니다. 우리의 제너레이티브 AI 가이드 에서 신경망 접근 방식에 대해 자세히 알아볼 수 있는 생성적 적대적 네트워크(GAN)에 대해 설명합니다.
LLM으로 생성된 모델은 모델이 학습된 데이터를 나타내는 벡터를 보유합니다. 예를 들어, Wikipedia의 각 단락을 요약하여 벡터로 색인화할 수 있습니다. 그런 다음 사용자는 자신의 데이터 벡터(일반적으로 임베딩 프로세스를 통해 생성)를 벡터 검색 시스템에 제출하여 유사한 단락을 찾을 수 있습니다.
이러한 단계 뒤에는 많은 노력이 필요하지만, 이것이 바로 본질입니다.
벡터 검색 애플리케이션을 구축하는 3단계
벡터 검색 애플리케이션을 구축하거나 사용하는 데는 세 단계가 있습니다. 다음은 다음과 같습니다:
-
- 사용자 지정 데이터 또는 쿼리를 위한 임베딩 만들기
- 대규모 언어 모델(LLM)로 학습된 벡터 엔진과 결과를 비교하여 가장 적합한 의미론적 데이터를 찾기 위해 코퍼스 모델 내 데이터의 비율
- LLM 결과를 사용자 지정 애플리케이션 데이터 또는 데이터베이스와 비교하여 더 관련성 높은 일치 항목 찾기
1단계 - 요청 임베딩 만들기
임베딩은 나중에 색인에서 사용할 수 있는 키와 마찬가지로 벡터 애플리케이션에서 데이터 조각의 지문과 같은 역할을 합니다. 데이터(텍스트, 이미지, 동영상 등)가 벡터 임베딩 애플리케이션으로 전송되면 이 애플리케이션은 이를 숫자 목록(벡터)으로 변환하여 수치로 표현합니다. 이 벡터 임베딩은 임베딩 애플리케이션에 제공된 객체를 나타냅니다. 그 이면에서는 대규모 언어 모델(LLM) 엔진이 임베딩을 생성하는 데 사용되어 다음 단계에서 동일한 LLM에서 일치하는 항목을 검색하는 데 사용할 수 있습니다.

오브젝트는 벡터 임베딩 프로세스.
데이터베이스 세계에서는 테이블 열의 텍스트를 임베딩 엔진을 통해 실행하고 벡터 객체를 해당 행의 속성이나 JSON 객체에 저장할 수 있습니다. 그런 다음 각 문서 또는 레코드에 대한 임베딩은 검색 요청 중에 향후 내부 비교를 위해 색인화됩니다.
리테일 카탈로그를 검색할 수 있는 웹 앱을 예로 들어 보겠습니다. 사용자가 의류의 종류와 색상을 설명하는 텍스트를 입력하여 재고가 있는지 검색할 수 있습니다. 그러면 앱은 벡터 임베딩 프로세스의 일부로 사용자 요청을 LLM으로 전송합니다. LLM은 다음 단계에서 사용할 벡터 표현을 계산하는 데 사용됩니다. "파란색 티셔츠"는 JSON으로 저장된 여기와 같이 고차원 배열에서 다음과 같은 벡터가 될 수 있습니다:
1 2 3 4 |
{ "단어": "파란색 티셔츠", "임베딩": [0.72, -0.45, 0.88, 0.12, -0.65, 0.31, 0.55, 0.76] } |
지나치게 단순화된 예시이지만, 벡터 임베딩은 근본적으로 특정 머신러닝 프로세스에서 분석한 데이터를 요약한 다차원 배열에 불과합니다. 임베딩은 다양한 유형과 크기로 제공되며 다양한 LLM을 기반으로 하지만 이 글의 범위를 벗어납니다.
2단계 - LLM에서 일치하는 항목 찾기
이제 LLM이 기본적으로 그 기반이 되는 모든 데이터 조각에 대한 임베딩을 생성했다고 생각해 보세요. 만약 Wikipedia를 사용하여 LLM을 학습시켰다면 각 단락마다 자체 임베딩이 생성되었을 것입니다. 수많은 임베딩!
검색 단계는 서로 가장 근접하게 일치하는 임베딩을 찾는 과정입니다. 벡터 검색 엔진은 기존 임베딩을 사용하거나 검색 쿼리에서 즉석에서 임베딩을 생성할 수 있습니다. 예를 들어, 애플리케이션이나 데이터베이스 쿼리에서 사용자 텍스트 입력을 받아 LLM을 사용하여 모델에서 유사한 콘텐츠를 찾을 수 있습니다. 그런 다음 애플리케이션과 가장 관련성이 높은 일치 항목을 반환합니다.
소매업의 예를 계속 이어서, '파란색 티셔츠' 벡터 임베딩은 유사한 데이터를 찾기 위한 키로 사용될 수 있습니다. 앱은 해당 벡터를 중앙 LLM으로 전송하여 LLM을 구축할 때 분석된 텍스트 설명이나 이미지를 기반으로 가장 유사하고 의미적으로 연관성이 높은 콘텐츠를 찾습니다.
예를 들어 벡터 임베딩의 유사성이 일치하는 문서 5개의 목록을 반환할 수 있습니다. 보시다시피 각각 고유한 벡터 표현을 가지고 있습니다.
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 |
{ "임베딩": [ { "단어": "파란색 티셔츠", "임베딩": [0.72, -0.45, 0.88, 0.12, -0.65, 0.31, 0.55, 0.76] }, { "단어": "네이비 셔츠", "임베딩": [0.71, -0.42, 0.85, 0.15, -0.68, 0.29, 0.53, 0.78] }, { "단어": "하늘색 상단", "임베딩": [0.73, -0.46, 0.87, 0.11, -0.64, 0.33, 0.56, 0.74] }, { "단어": "코발트 블라우스", "임베딩": [0.75, -0.41, 0.89, 0.14, -0.67, 0.28, 0.54, 0.77] }, { "단어": "사파이어 티", "임베딩": [0.72, -0.44, 0.86, 0.13, -0.66, 0.30, 0.55, 0.76] }, { "단어": "데님 셔츠", "임베딩": [0.70, -0.43, 0.84, 0.16, -0.69, 0.27, 0.52, 0.79] } ] } |
3단계 - 내 데이터와 일치하는 항목 찾기
찾고자 하는 것이 LLM에 저장된 정보와 일치하는 것뿐이라면 작업이 완료된 것입니다. 하지만 진정한 적응형 애플리케이션은 기업 데이터베이스와 같은 내부 데이터 소스에서 일치하는 정보와 데이터를 가져와야 합니다.
데이터베이스의 문서나 레코드에 이미 벡터 임베딩이 저장되어 있고 LLM의 일치 항목이 있다고 가정합니다. 이제 이를 가져와서 데이터베이스 벡터 검색 기능으로 전송하고 관련 데이터베이스 문서를 찾을 수 있습니다. 운영적으로는 또 다른 색인 필드처럼 보이지만 검색 결과에 보다 질적인 느낌을 줄 수 있습니다.
벡터 검색은 어떻게 일치하는 항목을 찾나요?
벡터 검색은 세 가지 개념을 결합합니다: 사용자 생성 데이터(요청), LLM 코퍼스 데이터 소스를 나타내는 모델(모델)과 데이터베이스의 사용자 지정 데이터(사용자 지정 일치)를 포함합니다. 벡터 검색을 사용하면 이 세 가지 요소가 함께 작동합니다.
벡터 검색은 무엇을 지원할 수 있나요?
벡터 검색은 임베딩을 생성하고 동일한 방식으로 생성된 다른 데이터와 비교할 수 있는 한 모든 종류의 데이터 간에 유사성을 찾아냅니다(동일한 LLM에서).
사용된 LLM에 따라 LLM이 학습된 소스 데이터로 인해 결과가 크게 달라질 수 있습니다. 예를 들어, 비슷한 이미지를 검색하려고 하는데 고전 문학 작품만 포함된 LLM을 사용하면 사용할 수 없는 응답을 받게 됩니다(고전 작가의 사진이라면 희망이 있을 수도 있지만).
마찬가지로, 법적 소송을 진행 중인데 LLM이 Reddit 데이터로만 교육을 받았다면 언젠가 (물론 변호사 자격이 박탈된 후) 멋진 영화가 될 수 있는 독특한 시나리오를 준비하게 될 것입니다.
그렇기 때문에 경험을 제공하는 LLM이 올바른 타겟팅을 하고 있는지 확인해야 합니다. 벡터 검색 사용 사례 필요한 정보가 중요합니다. 매우 큰 규모의 일반 LLM은 더 많은 맥락을 담고 있지만, 업계에 특화된 LLM은 비즈니스에 더 정확하고 미묘한 정보를 담고 있을 것입니다.
벡터 검색이 대규모로 수행되는 방식
벡터 검색을 수행하는 모든 엔터프라이즈 시스템은 프로덕션 환경으로 전환될 때 확장할 수 있어야 합니다( 클라우드 데이터 복제 가이드). 따라서 벡터 검색 시스템은 다음을 수행할 수 있습니다. 인덱스 복제 및 샤딩 특히 중요합니다.
시스템에서 인덱스를 검색하여 일치하는 항목을 찾아야 하는 경우 워크로드를 여러 노드에 분산할 수 있습니다.
마찬가지로 새 임베딩을 생성하고 색인을 생성하면 다음과 같은 이점을 얻을 수 있습니다. 리소스 격리를 사용하므로 다른 애플리케이션 기능은 영향을 받지 않습니다. 리소스 격리는 벡터 검색 관련 함수가 자체 메모리, CPU 및 스토리지 리소스를 가지고 있음을 의미합니다.
데이터베이스 환경에서는 모든 서비스에 리소스를 적절히 할당하여 서비스가 경쟁하지 않도록 하는 것이 필수적입니다. 예를 들어 테이블 쿼리, 실시간 분석, 로깅, 데이터 저장소 서비스는 모두 벡터 검색 서비스 외에 각자의 공간이 필요합니다.
LLM 액세스를 위한 분산 API 도 중요합니다. 다른 많은 서비스에서 임베딩을 요청할 수 있으므로 임베딩을 생성하는 API와 시스템도 트래픽 증가에 따라 확장할 수 있어야 합니다. 클라우드 기반 LLM 서비스의 경우 프로토타입 제작을 시작하기 전에 해당 서비스의 서비스 수준 계약에 따라 프로덕션 요구 사항을 충족할 수 있는지 확인하세요.
외부 서비스를 사용하면 빠르고 효율적으로 확장할 수 있는 경우가 많지만, 확장 규모가 커질수록 추가 자금이 필요합니다. 옵션을 평가할 때 슬라이딩 가격 척도를 명확하게 이해해야 합니다.
벡터 검색의 미래
적응형 애플리케이션 개발은 다음을 통해 지원됩니다. 하이브리드 검색 시나리오. 앞으로는 단일 검색 또는 쿼리 방법만으로는 더 이상 필요한 유연성을 확보할 수 없습니다. 하이브리드 검색 기능은 벡터 검색을 사용해 의미론적으로 일치하는 결과를 얻으면서도 기본 SQL 술어와 공간 인덱스를 사용한 지리적 쿼리를 사용해 결과 범위를 좁힐 수 있음을 의미합니다.
이러한 기능을 하나의 하이브리드 검색 환경으로 결합하면 개발자가 애플리케이션에서 최대한의 유연성을 끌어낼 수 있습니다. 여기에는 모든 모바일로 엣지까지 벡터 검색 기능 제공 데이터베이스 통합은 물론 클라우드 및 온프레미스에서도 가능합니다.
검색 증강 생성(RAG) 를 사용하면 개발자가 LLM 위에 더욱 맞춤화된 문맥 인식을 추가할 수 있습니다. 이렇게 하면 LLM을 재교육할 필요성이 줄어드는 동시에 개발자는 임베딩과 매칭을 최신 상태로 유지할 수 있는 유연성을 확보할 수 있습니다.
벡터 검색은 또한 다음과 같은 유형으로 정의됩니다. 플러그형 지식 모듈 를 통해 다양한 소스의 LLM을 기반으로 광범위한 정보를 가져올 수 있습니다. 전봇대를 관리하는 데 도움이 되는 모바일 현장 애플리케이션을 상상해 보세요. 시맨틱 이미지 검색을 통해 전봇대의 물리적 구조 문제를 파악하는 데 도움이 될 수도 있지만, 식물에 대한 또 다른 지식 모듈을 통해 근처에 독성 식물이 있다는 것을 사용자에게 경고할 수도 있습니다.
Couchbase의 AI 리소스
벡터 검색, 전략 및 기타 관련 주제에 대해 계속 읽어보세요. 인공 지능에서 다음 리소스를 확인하세요:
벡터 검색 FAQ
벡터 검색이 중요한 이유는 무엇인가요?
벡터 검색은 최신 머신러닝과 AI 기술을 사용하여 디지털 데이터 간의 유사성과 맥락을 찾는 새로운 방법을 제공한다는 점에서 중요합니다.
벡터 검색 임베딩이란 무엇인가요?
벡터 임베딩은 분석된 데이터의 고유한 숫자 표현을 저장하는 벡터입니다. 대규모 언어 모델(LLM)은 다음에서 사용됩니다. 머신 러닝(ML) 도구를 사용하여 입력 데이터를 분석하고 데이터를 설명하는 벡터 임베딩을 생성합니다. 그런 다음 벡터 임베딩은 데이터베이스나 파일에 저장되어 다른 용도로 사용됩니다.
기존 검색과 벡터 검색의 차이점은 무엇인가요?
가장 큰 차이점은 기존 검색은 정확하고 정밀한 키워드 또는 구문 검색에 최적화된 반면, 벡터 검색은 보다 정의된 의미의 맥락에서 유사한 개념을 찾도록 설계되었다는 점입니다.
벡터 검색에 따르는 어려움은 무엇인가요?
가장 큰 문제는 애플리케이션이 임베딩을 생성하고 컨텍스트 일치 항목을 찾기 위해 대규모 언어 모델(LLM)에 의존해야 한다는 점입니다. 이는 오늘날 정보 아키텍처의 새로운 부분이며 신중한 보안, 성능 및 확장성 평가가 필요합니다.