벡터 검색

단일 플랫폼, 다목적 카우치베이스: 벡터 검색, 지리공간, SQL++ 등

SQL, 벡터 검색, 위치 기반 정보 쿼리, 키-값 액세스 등 여러 유형의 데이터 액세스가 가장 적합한 사용 사례가 있습니다. 한 가지 접근 방식은 각 액세스 방법에 대해 여러 데이터 시스템을 결합/연결하는 것입니다. 하지만 카우치베이스 접근 방식 를 사용하면 이러한 다양한 유형의 쿼리를 결합하여 실제 문제를 해결할 수 있습니다.

이 문서에서는 데모 애플리케이션인 "이게 뭐예요?"(일명 "WITT")의 여러 측면을 살펴봅니다. 자세한 맥락과 배경은 여기에서 확인하세요:

이 블로그 게시물은 2024 C# 도래. 그러나 이 게시물을 읽기 위해 C#를 이해할 필요는 없습니다. 이 개념은 다음 중 하나에 적용할 수 있습니다. 카우치베이스에 사용할 수 있는 많은 SDK.

벡터 검색: 기본 사항

벡터 검색은 유사한 항목을 찾아야 하는 애플리케이션에 유용합니다. 예를 들어, AI 모델에 의해 생성된 임베딩을 색인화하여 검색할 수 있습니다. WITT의 각 항목은 다음과 같이 모델링됩니다:

참고 이미지 항목은 base64로 인코딩된 문자열로 저장됩니다. 프로덕션 프로젝트에서는 데이터베이스에 저장하는 것보다 파일 스토리지, S3 등을 사용하는 것이 좋습니다.

이미지 벡터 은 다음과 같이 이미지를 AI 이미지 모델에 업로드하여 검색됩니다. Azure 컴퓨터 비전.

참고: 방금 발표한 새로운 기능 중 하나인 카펠라 AI 서비스 는 모델 호스팅으로, 이 단계의 지연 시간을 줄이고 개인 정보 보호와 유연성을 높이며 잠재적으로 비용을 절감할 수 있습니다.

이미지 임베딩 및 가장 가까운 이웃 검색

벡터 검색 인덱스의 이미지 벡터 필드에 입력하면 카우치베이스는 가장 가까운 이웃 검색을 수행할 수 있습니다. 이 경우, 이 검색은 (AI 모델에 따라) 시각적으로 유사한 항목을 찾습니다. 따라서 사용자가 이미지를 가지고 있고 그 이미지와 가장 유사한 항목을 Couchbase에서 찾고자 하는 경우 벡터 검색 인덱스가 이를 수행할 수 있습니다:

다음은 주어진 이미지에 대한 WITT의 코드입니다, 벡터 임베딩을 요청합니다. 의 Azure 컴퓨터 비전에서

이 호출도 처리할 수 있는 프레임워크가 있을 수 있지만, 이 간단한 데모에서는 단 한 번의 REST 호출만 필요하므로 이것으로 충분하다는 것을 알았습니다. 이 데모에서 Azure 이외의 다른 것을 사용하려면 다음을 구현해야 합니다. IEmbeddingService.

SQL++를 사용한 다목적 쿼리

벡터 검색을 사용하는 많은 데이터베이스는 매우 유사한 작업을 수행할 수 있습니다. Couchbase를 사용하면 단일 플랫폼, 단일 데이터 풀로 여러 유형의 데이터 작업을 수행할 수 있습니다. 예를 들어, 웹 브라우저를 통해 검색할 수 있는 지리공간 위치가 주어진다면, 단일 SQL++ 쿼리를 통해 이미지로 유사한 항목을 찾기 위한 쿼리뿐만 아니라 지리공간 검색과 결합할 수도 있습니다:

참고: 이 쿼리는 간결성을 위해 편집되었습니다. 확인 DataLayer.cs 를 클릭하면 쿼리를 더 자세히 볼 수 있습니다.

이 쿼리의 결과는 주어진 이미지에 대해 '가장 일치할 가능성이 높은' 결과입니다. 예를 들어 펜 사진을 업로드할 때 가장 높은 결과는 다음과 같습니다:

경기의 품질은 다음과 같이 달라집니다:

    • AI 모델의 품질
    • 특정 항목에 대한 이미지의 품질/수량

제한된 테스트에서 Azure 컴퓨터 비전 모델이 관련 이미지를 일치시키는 데 매우 우수하다는 것을 알았습니다.

결과에는 해당 품목을 구매할 수 있는 인근 상점도 포함됩니다.

벡터 검색 및 지리공간을 넘어서

이 쿼리는 벡터 검색과 지리공간 검색을 단일 작업으로 결합하는 Couchbase의 기능을 보여주었습니다. 이 쿼리에는 CTE, JOIN 및 하위 쿼리도 포함되어 있습니다.

단일 쿼리 내에서 수행할 수도 있습니다:

마케팅 섹션은 다음과 같습니다.: 일부 데이터베이스는 이러한 작업의 일부만 수행할 수 있으며, 추가 기능이 필요한 경우 다른 도구를 가져와야 할 수 있습니다. 이로 인해 비용, 지연 시간, 복잡성이 증가합니다. Couchbase를 사용하면 애플리케이션을 더 간단하고, 더 빠르고, 더 저렴하게 유지할 수 있습니다. 마케팅 섹션이 끝났습니다.

기술 하이라이트

참조된 WITT 데모 애플리케이션은 다음과 같이 구축되었습니다:

    • React UI 프론트엔드
    • ASP.NET Core 백엔드
    • Azure 컴퓨터 비전
    • 카우치베이스 .NET SDK

다음을 확인할 수도 있습니다. 이게 뭐죠? 를 공개 데모로 사용할 수 있습니다. (모두 무료 티어 호스팅(Azure 및 카펠라 무료 티어), 그리고 여전히 활발히 개발 중이라는 점을 알려드립니다. 속도가 느려지거나 다운타임이 발생한다면 트래픽이 너무 많아서일 수 있으니 죄송합니다!)

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

Author

Posted by 매튜 그로브스

Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.