SQL, 검색, 지리적 위치 정보 조회, 가치 저장소 액세스 등 다양한 데이터 액세스 유형에 가장 적합한 사용 사례가 있습니다. 각 액세스 방법에 대해 여러 데이터 시스템을 결합하거나 확장할 수 있습니다. 따라서 카우치베이스 아키텍처는 이러한 다양한 유형의 컨설팅을 결합하여 실제 문제를 해결할 수 있습니다.
이 문서는 데모 애플리케이션 "이게 뭐야?"의 측면에 대해 설명합니다. "이게 뭐죠?"(일명 "WITT"). 자세한 컨텍스트와 히스토리를 확인해보세요:
이 블로그 게시물은 2024년 C# 도래의 일부입니다. 따라서 이 게시물을 읽기 위해 C#를 이해할 필요는 없으며, 개념은 다음 중 하나에 적용될 수 있습니다. 카우치베이스에서 사용할 수 있는 다양한 SDK를 제공합니다.
구매자 검색: 기본 사항
검색은 유사한 항목을 정확하게 찾아야 하는 애플리케이션에 유용합니다. 예를 들어, IA 모델로 생성된 임베딩은 색인화 및 검색할 수 있습니다. WITT의 모든 항목은 동일하게 모델링됩니다:
1 2 3 4 5 6 7 8 |
{ "name": "레티큘레이티드 스플라인", "desc": "정밀한 정렬을 위해 첨단 기계에 사용되는 특수 홈.", "가격": 19.99, "이미지": "데이터:이미지/png;base64,...", "rating": 5, "imageVector": [ -4.5390625, 0.32543945, ... ] } |
참고: 항목 이미지는 Base64로 코딩된 문자열로 저장됩니다. 프로덕션 프로젝트에서는 데이터 뱅크에 인코딩할 때 파일 인코딩, S3 등을 사용하는 것이 좋습니다.
이미지 벡터 와 같이 IA 이미지 모델에 이미지를 가져와서 복구됩니다. Azure 컴퓨터 비전.
관찰: 다음과 같은 리소스 중 하나 카펠라 AI 서비스 최근 발표된 모델 호스팅은 이 단계의 지연 시간을 단축하고 잠재적으로 비용을 절감할 수 있을 뿐만 아니라 프라이버시와 유연성을 향상시킬 것입니다.
이미지 통합 및 향후 전망 검색
필드에 대한 수의사 검색 인덱스로 이미지 벡터를 사용하면 카우치베이스가 더 가까운 뷰 쿼리를 실행할 수 있습니다. 이 경우 이 검색은 시각적으로 동일한(IA 모델에 따라) 항목을 찾습니다. 따라서 사용자가 이미지를 가지고 있고 이 이미지와 가장 유사한 항목을 카우치베이스에서 찾고자 하는 경우 검색 인덱스를 통해 이를 수행할 수 있습니다:
다음은 특정 이미지에 대한 WITT 코드입니다, 벡터 임베딩을 요청합니다. Azure 컴퓨터 비전을 수행합니다:
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 29 30 31 32 33 34 35 36 |
// 무료 등급: 분당 20통화, 월 5,000통화 // 표준 계층: 초당 10통화, $1.00 USD/1000통화부터(예상) public 비동기 작업<float[]> 이미지 임베딩 가져오기(문자열 base64Image) { var 엔드포인트 = _settings.가치.엔드포인트; var 구독 키 = _settings.가치.구독 키; 사용 (HttpClient 클라이언트 = new HttpClient()) { // 구독 키 및 엔드포인트 설정 클라이언트.기본 요청 헤더.추가("Ocp-Apim-Subscription-Key", 구독 키); // 엔드포인트 URL 문자열 URL = $"{endpoint}/retrieval:vectorizeImage?overload=stream&api-version=2023-04-01-preview"; 바이트[] 이미지바이트 = Base64PngToByteArray(base64Image); 사용 (바이트 배열 콘텐츠 콘텐츠 = new 바이트 배열 콘텐츠(이미지바이트)) { 콘텐츠.헤더.콘텐츠 유형 = new 미디어 유형 헤더 값("애플리케이션/옥텟-스트림"); HttpResponseMessage 응답 = 기다림 클라이언트.PostAsync(URL, 콘텐츠); 문자열 jsonResponse = 기다림 응답.콘텐츠.ReadAsStringAsync(); 만약 (응답.성공 상태 코드) { // JSON 응답을 파싱하여 벡터 임베딩을 추출합니다. JObject json = JObject.Parse(jsonResponse); JToken 벡터 임베딩 = json["벡터"]; 반환 벡터 임베딩.ToObject<float[]>(); } throw new 예외("이미지에 대한 벡터 임베딩을 검색할 수 없습니다."); } } } |
물론 이 이름으로도 사용할 수 있는 프레임워크가 있지만, 이 간단한 데모에서는 REST라는 단일 이름만 있으면 충분합니다. 이 데모에서 다른 Azure를 사용하려는 경우 다음을 구현해야 합니다. IEmbeddingService.
SQL++로 다용도 상담
많은 수의 데이터 뱅크는 매우 유사한 작업을 실행할 수 있습니다. 카우치베이스를 사용하면 단일 플랫폼, 즉 단일 데이터 집합으로 다양한 유형의 데이터 작업을 실행할 수 있습니다. 예를 들어, 지리적 위치(웹 브라우저에서 검색할 수 있음)가 있는 경우 이미지만으로는 항목을 찾을 수 없지만, 단 하나의 SQL++ 쿼리를 통해 지리적 검색과 결합할 수 있습니다:
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 29 30 31 32 33 34 35 36 37 38 39 40 41 |
WITH 가장 가까운 스토어 AS ( /* 사용자 위치를 기반으로 가장 가까운 매장을 찾기 위한 CTE */ 선택 x.이름, 메타(x).id AS id FROM whatisthis._기본값.스토어 x 어디 검색(x, { "fields": ["*"], "query" : { "위치" : { "lat" : 39.8787, "lon" : -83.0805 }, "거리" : "15mi", "field" : "geo" } . . . }) LIMIT 3 ) /* 주변 재고가 있는 품목 선택 */ 선택 모든 항목.이름, 모든 항목.`desc`, 모든 항목.이미지, 모든 항목.가격, 모든 항목.평가, SEARCH_SCORE(모든 항목) AS 점수, /* 가까운 위치에서 재고를 가져오기 위한 하위 쿼리 */ (선택 . . . ) AS 재고 FROM whatisthis._기본값.항목 AS 모든 항목 /* 이미지 임베딩을 사용한 벡터 검색 */ 어디 검색(모든 항목, { "fields": ["*"], "query": { "match_none": {} }, "knn": [ { "k": 4, "field": "imageVector", "벡터": [ -0.9135742,1.1552734, ... ] } ] } ) 주문 BY 점수 DESC |
참고: 이 상담은 간결성을 위해 편집되었습니다. Confira DataLayer.cs 를 클릭하여 전체 상담 내용을 확인하세요.
이 상담의 결과는 특정 이미지에 대한 '가장 적합한 대응'입니다. 예를 들어 다음은 캔버스 이미지를 업로드할 때의 주요 결과입니다:
응답 품질에 따라 달라집니다:
-
- IA 모델의 품질
- 특정 항목에 대한 이미지의 품질/양
제한된 테스트에서 Azure Computer Vision 모델이 관련 이미지를 결합하는 데 매우 적합하다는 것을 알았습니다.
그 결과 품목을 구매할 수 있는 다음 단계도 표시됩니다.
수의학 및 지리학 관련 정보
이 컨설팅은 수의학적 검색과 지리공간적 검색을 단일 작업으로 결합할 수 있는 카우치베이스의 역량을 보여줍니다. 또한 CTE, JOIN 및 하위 컨설턴트도 제공합니다.
단 한 번의 상담으로 실행할 수도 있습니다:
-
- 전체 텍스트 검색득점, 패싯, 부스팅 등을 포함합니다.
- 시계열 운영
- 사용자 정의 함수(UDF) 사용자 지정 코드(JavaScript 또는 SQL) 추가하기
- 전체 SQL 기능얀엘라, CTE, 조인, 집계 등의 기능
- 다음을 통해 실시간 분석 데이터를 읽어오세요. 쓰기
- 다음에서 자동으로 동기화되는 데이터를 참조하세요. 모바일/엣지 디바이스
- 자동 캐싱 (기본 제공)
일부 데이터 은행은 이러한 작업의 일부만 실행할 수 있으며 추가 기능이 필요할 때 다른 도구를 사용하도록 요청할 수 있습니다. 이는 비용, 지연 시간 및 복잡성을 증가시킵니다. 카우치베이스를 사용하면 애플리케이션을 더 간단하고, 빠르고, 효율적으로 관리할 수 있습니다.
기술 자료
참조된 WITT 데모 애플리케이션은 다음과 같이 구축되었습니다:
-
- React UI 프론트엔드
- ASP.NET Core 백엔드
- Azure 컴퓨터 비전
- 카우치베이스 .NET SDK
또한 다음과 같이 문의할 수도 있습니다. 이게 뭐죠? 공개 데모로 사용하세요. (모든 것이 무료 호스팅으로 구축되었음을 기억하세요(Azure 및 카펠라 무료 티어) 그리고 현재 활발하게 개발되고 있습니다. 지연 시간이나 비활성 시간을 발견하면 많은 작업으로 인한 것일 수 있습니다.)