빠른 속도로 시맨틱 검색 구축
시맨틱 검색은 고객이나 직원이 적합한 제품 또는 정보를 찾도록 돕는 훌륭한 도구입니다. 더 나은 결과를 위해 인덱싱하기 어려운 정보까지 드러낼 수 있습니다. 그렇기는 하지만, 시맨틱 방법론이 빠르게 작동하도록 배포되지 않는다면 아무런 도움이 되지 않습니다. 고객이나 직원은 시스템이 자신의 쿼리에 응답하느라 시간을 끄는 동안 가만히 기다리고만 있지는 않을 것이며, 동시에 수천 개의 다른 쿼리도 수집되고 있을 가능성이 높습니다.
시맨틱 검색을 어떻게 빠르게 만들 수 있을까요? 느린 시맨틱 검색으로는 충분하지 않습니다.
다행히도, 이것은 Lucidworks가 해결하기 좋아하는 종류의 문제입니다. 최근 우리는 적당한 규모의 클러스터를 테스트했으며—자세한 내용은 계속 읽어보세요—그 결과 100만 개가 넘는 문서 컬렉션을 대상으로 1500 RPS(초당 요청 수)를 달성했고, 평균 응답 시간은 약 40밀리초였습니다. 이는 정말 놀라운 속도입니다.
시맨틱 검색 구현
번개처럼 빠른 머신 러닝 마법을 구현하기 위해, Lucidworks는 시맨틱 벡터 검색 접근 방식을 사용하여 시맨틱 검색을 구현했습니다. 여기에는 두 가지 핵심 부분이 있습니다.
1부: 머신 러닝 모델
먼저, 텍스트를 수치 벡터로 인코딩할 방법이 필요합니다. 텍스트는 제품 설명, 사용자 검색 쿼리, 질문 또는 질문에 대한 답변일 수도 있습니다. 시맨틱 검색 모델은 의미적으로 서로 유사한 텍스트가 수치적으로 서로 “가까운” 벡터로 인코딩되도록 학습됩니다. 이 인코딩 단계는 매초 들어오는 수천 개 이상의 고객 검색 또는 사용자 쿼리를 지원하기 위해 빠르게 수행되어야 합니다.
2부: 벡터 검색 엔진
둘째, 고객 검색 또는 사용자 쿼리에 가장 잘 맞는 항목을 빠르게 찾을 방법이 필요합니다. 모델은 해당 텍스트를 수치 벡터로 인코딩했을 것입니다. 그다음에는 최고의 매칭 항목, 즉 쿼리 벡터에 “가장 가까운” 벡터를 찾기 위해 이를 카탈로그나 질문과 답변 목록의 모든 수치 벡터와 비교해야 합니다. 이를 위해서는 그 모든 정보를 효과적으로, 그리고 번개 같은 속도로 처리할 수 있는 벡터 엔진이 필요합니다. 엔진에는 수백만 개의 벡터가 포함될 수 있으며, 실제로는 쿼리에 가장 잘 맞는 20개 정도의 결과만 원할 것입니다. 물론 매초 수천 개 정도의 이러한 쿼리를 처리할 수 있어야 합니다.
이러한 과제를 해결하기 위해, 우리는 Fusion 5.3 release에 벡터 검색 엔진 Milvus를 추가했습니다. Milvus는 오픈 소스 소프트웨어이며 빠릅니다. Milvus는 FAISS(Facebook AI Similarity Search)를 사용하며, 이는 Facebook이 자체 머신 러닝 이니셔티브를 위해 프로덕션에서 사용하는 것과 동일한 기술입니다. 필요할 경우 GPU에서 실행하여 훨씬 더 빠르게 동작할 수도 있습니다. Fusion 5.3(또는 그 이상)이 머신 러닝 컴포넌트와 함께 설치되면, Milvus는 해당 컴포넌트의 일부로 자동 설치되므로 이러한 모든 기능을 손쉽게 켤 수 있습니다.
특정 컬렉션의 벡터 크기는 컬렉션을 생성할 때 지정되며, 해당 벡터를 생성하는 모델에 따라 달라집니다. 예를 들어, 특정 컬렉션은 제품 카탈로그에 있는 모든 제품 설명을 (모델을 통해) 인코딩하여 생성된 벡터를 저장할 수 있습니다. Milvus와 같은 벡터 검색 엔진이 없다면, 전체 벡터 공간에서 유사도 검색을 수행하는 것은 현실적으로 불가능합니다. 따라서 유사도 검색은 벡터 공간에서 미리 선택된 후보(예: 500개)로 제한되어야 하며, 성능은 더 느리고 결과 품질도 더 낮아질 것입니다. Milvus는 검색이 빠르고 결과가 관련성 있도록 보장하기 위해 여러 벡터 컬렉션에 걸쳐 수천억 개의 벡터를 저장할 수 있습니다.
시맨틱 검색 사용하기
Milvus가 왜 그렇게 중요할 수 있는지 조금 알아보았으니, 이제 시맨틱 검색 워크플로로 돌아가 보겠습니다. 시맨틱 검색에는 세 단계가 있습니다. 첫 번째 단계에서는 머신러닝 모델이 로드되거나 학습됩니다. 그 후 데이터가 Milvus와 Solr에 인덱싱됩니다. 마지막 단계는 실제 검색이 발생하는 쿼리 단계입니다. 아래에서는 마지막 두 단계에 집중하겠습니다.
Milvus에 인덱싱
Milvus에 인덱싱하기 위한 아키텍처 다이어그램.
위 다이어그램에 표시된 것처럼, 쿼리 단계는 인덱싱 단계와 유사하게 시작되며, 문서 대신 쿼리가 들어온다는 점만 다릅니다. 각 쿼리에 대해:
- 쿼리가 Smart Answers 인덱스 파이프라인으로 전송됩니다.
- 그런 다음 쿼리가 ML 모델로 전송됩니다.
- ML 모델은 숫자 벡터(쿼리에서 암호화됨)를 반환합니다. 다시 말하지만, 모델 유형에 따라 벡터의 크기가 결정됩니다.
- 벡터가 Milvus로 전송되고, Milvus는 지정된 Milvus 컬렉션에서 제공된 벡터와 가장 잘 일치하는 벡터를 결정합니다.
- Milvus는 4단계에서 결정된 벡터에 해당하는 고유 ID와 거리 목록을 반환합니다.
- 해당 ID와 거리를 포함하는 쿼리가 Solr로 전송됩니다.
- 그런 다음 Solr는 해당 ID와 연결된 문서의 정렬된 목록을 반환합니다.
규모 테스트
고객에게 필요한 효율성으로 시맨틱 검색 흐름이 실행되고 있음을 입증하기 위해, Google Cloud Platform에서 Gatling 스크립트를 사용하여 규모 테스트를 실행합니다. 이때 ML 모델 복제본 8개, 쿼리 서비스 복제본 8개, 그리고 Milvus 단일 인스턴스로 구성된 Fusion 클러스터를 사용합니다. 테스트는 Milvus FLAT 및 HNSW 인덱스를 사용하여 실행되었습니다. FLAT 인덱스는 100% 재현율을 가지지만, 데이터셋이 작은 경우를 제외하면 효율성이 낮습니다. HNSW(Hierarchical Small World Graph) 인덱스는 여전히 높은 품질의 결과를 제공하며 더 큰 데이터셋에서 성능이 향상됩니다.
최근에 실행한 예시의 몇 가지 수치를 살펴보겠습니다:
작은 데이터셋에서 Milvus FLAT 및 HNSW 인덱스의 성능.
중간 크기 데이터셋에서 Milvus FLAT 및 HNSW 인덱스의 성능.
큰 데이터셋에서 Milvus FLAT 및 HNSW 인덱스의 성능.
시작하기
Smart Answers 파이프라인은 사용하기 쉽게 설계되었습니다. Lucidworks는 배포하기 쉬운 사전 학습 모델을 보유하고 있으며 일반적으로 좋은 결과를 제공합니다. 하지만 사전 학습 모델과 함께 자체 모델을 학습하면 최상의 결과를 얻을 수 있습니다. 이러한 이니셔티브를 검색 도구에 구현하여 더 효과적이고 만족스러운 결과를 제공하는 방법을 알아보려면 오늘 문의해 주세요.
이 블로그는 다음에서 재게시되었습니다: https://lucidworks.com/post/how-to-build-fast-semantic-search/?utm_campaign=Oktopost-Blog+Posts&utm_medium=organic_social&utm_source=linkedin
계속 읽기

Zilliz Cloud Now Available in AWS Europe (Ireland)
Zilliz Cloud launches in AWS eu-west-1 (Ireland) — bringing low-latency vector search, EU data residency, and full GDPR-ready infrastructure to European AI teams. Now live across 30 regions on five cloud providers.

The Great AI Agent Protocol Race: Function Calling vs. MCP vs. A2A
Compare Function Calling, MCP, and A2A protocols for AI agents. Learn which standard best fits your development needs and future-proof your applications.

1 Table = 1000 Words? Foundation Models for Tabular Data
TableGPT2 automates tabular data insights, overcoming schema variability, while Milvus accelerates vector search for efficient, scalable decision-making.



