Elasticsearch 추론 API와 Hugging Face 모델 함께 사용하기

추론 엔드포인트를 사용하여 Elasticsearch를 Hugging Face 모델에 연결하고, 시맨틱 검색 및 채팅 완성을 갖춘 다국어 블로그 추천 시스템을 구축하는 방법을 알아보세요.

최근 업데이트에서 ElasticsearchHugging Face Inference Service에 호스팅된 모델과 연결할 수 있는 네이티브 통합 기능을 도입했습니다. 이 게시물에서는 대규모 언어 모델(LLM)을 사용하여 간단한 API 호출을 통해 이 통합을 구성하고 추론을 수행하는 방법을 살펴보겠습니다. 리소스 사용량과 답변 품질 간의 균형이 잘 잡힌 경량 범용 모델인 SmolLM3-3B를 사용하겠습니다.

필수 구성 요소

Hugging Face 추론 엔드포인트를 사용하여 채팅 완료 수행하기

먼저, Elasticsearch를 Hugging Face 엔드포인트에 연결하여 블로그 게시물 모음에서 AI 기반 추천을 생성하는 실용적인 예제를 구축할 것입니다. 앱 지식 기반 시스템을 위해, 회사 블로그 기사의 데이터 세트를 사용할 것입니다. 이 데이터 세트에는 귀중하지만 종종 탐색하기 어려운 정보가 포함되어 있습니다.

이 엔드포인트를 사용하면 시맨틱 검색을 통해 주어진 쿼리에 가장 적합한 문서를 검색할 수 있으며, Hugging Face LLM이 해당 결과를 바탕으로 문맥에 맞는 짧은 추천 결과를 생성합니다.

구축할 정보 흐름에 대한 개괄적인 내용을 살펴보겠습니다.

이 기사에서는 SmolLM3-3B의 컴팩트한 크기와 강력한 다국어 추론 및 도구 호출 기능을 결합하는 능력을 테스트할 것입니다. 검색 쿼리를 기반으로 일치하는 모든 콘텐츠(영어 및 스페인어)를 LLM으로 전송하고, 검색 쿼리와 결과를 바탕으로 맞춤형 설명이 포함된 추천 기사 목록을 생성합니다.

AI 추천 생성 시스템이 포함된 기사 사이트의 UI는 다음과 같을 수 있습니다.

이 애플리케이션의 전체 구현은 연결된 노트북에서 확인하실 수 있습니다.

Elasticsearch 추론 엔드포인트 구성하기

Elasticsearch Hugging Face 추론 엔드포인트를 사용하려면 Hugging Face API 키와 실행 중인 Hugging Face 엔드포인트 URL라는 두 가지 중요한 요소가 필요합니다. 다음과 같이 보여야 합니다.

Elasticsearch의 Hugging Face 추론 엔드포인트는 text_embedding, completion, chat_completion, rerank 등 다양한 작업 유형을 지원합니다. 이 블로그 글에서는 검색 결과와 시스템 프롬프트를 바탕으로 대화형 추천을 생성하는 모델이 필요하기 때문에 chat_completion를 사용합니다. 이 엔드포인트를 통해 Elasticsearch API를 사용하여 Elasticsearch에서 직접 채팅 완료를 간단하게 수행할 수 있습니다.

이것은 애플리케이션의 핵심 역할을 하며, 프롬프트와 모델을 통과할 검색 결과를 받습니다. 이론을 다뤘으니 이제 애플리케이션 구현을 시작해 보겠습니다.

Hugging Face에서 추론 엔드포인트 설정하기

Hugging Face 모델을 배포하기 위해 Hugging Face 원클릭 배포를 사용할 것입니다. 이는 모델 엔드포인트를 배포하기 위한 쉽고 빠른 서비스입니다. 이 서비스는 유료 서비스이므로 이용 시 추가 비용이 발생할 수 있습니다. 이 단계에서는 기사 추천을 생성하는 데 사용될 모델 인스턴스를 생성합니다.

원클릭 카탈로그에서 모델을 선택할 수 있습니다.

SmolLM3-3B 모델을 선택합니다.

여기에서 Hugging Face 엔드포인트 URL을 가져옵니다.

Elasticsearch Hugging Face 추론 엔드포인트 설명서에서 언급했듯이, 텍스트 생성에는 OpenAI API와 호환되는 모델이 필요합니다. 그러므로 Hugging Face 엔드포인트 URL에 /v1/chat/completions 하위 경로를 추가해야 합니다. 최종 결과는 다음과 같습니다.

이렇게 준비되면 Python 노트북에서 코딩을 시작할 수 있습니다.

Hugging Face API 키 생성하기

Hugging Face 계정을 만들고 다음 안내에 따라 API 토큰을 받습니다. 세분화(특정 리소스에만 액세스를 제공하므로 프로덕션에 권장), 읽기(읽기 전용 액세스), 쓰기(읽기 및 쓰기 액세스용)의 세 가지 토큰 유형 중 선택할 수 있습니다. 이 튜토리얼에서는 추론 엔드포인트만 호출하면 되므로 읽기 토큰으로 충분합니다. 다음 단계를 위해 이 키를 저장해 두세요.

Elasticsearch 추론 엔드포인트 설정

먼저, Elasticsearch Python 클라이언트를 선언해 보겠습니다.

다음으로, Hugging Face 모델을 사용하는 Elasticsearch 추론 엔드포인트를 생성해 보겠습니다. 이 엔드포인트를 통해 블로그 게시물과 모델에 전달된 프롬프트를 기반으로 응답을 생성할 수 있습니다.

데이터 세트

데이터 세트에는 전체 워크플로우에서 사용되는 다국어 콘텐츠 세트를 나타내는 쿼리될 블로그 게시물이 포함되어 있습니다.

Elasticsearch 매핑

데이터 세트가 정의되었으므로, 이제 블로그 게시물 구조에 적합한 데이터 스키마를 생성해야 합니다. 다음 인덱스 매핑은 Elasticsearch에 데이터를 저장하는 데 사용됩니다.

여기에서 데이터가 어떻게 구성되어 있는지 더욱 명확하게 확인할 수 있습니다. 자연어를 기반으로 결과를 검색하는 데 시맨틱 검색을 사용하고, copy_to 속성을 사용하여 필드 내용을 semantic_text 필드로 복사합니다. 또한 title 필드에는 두 개의 하위 필드가 있습니다. original 하위 필드는 기사의 원래 언어에 따라 영어 또는 스페인어로 제목을 저장하며, translated_title 하위 필드는 스페인어 기사에만 존재하고 원래 제목의 영어 번역을 포함합니다.

데이터 수집

다음 코드 스니펫은 벌크 API를 사용하여 블로그 게시물 데이터 세트를 Elasticsearch로 수집합니다.

이제 기사들이 Elasticsearch에 수집되었으니, semantic_text 필드에 대해 검색할 수 있는 함수를 만들어야 합니다.

추론 엔드포인트를 호출하는 함수도 필요합니다. 이 경우 chat_completion 작업 유형을 사용하여 엔드포인트를 호출하여 스트리밍 응답을 받습니다.

이제 의미 탐색 함수와 chat_completions 추론 엔드포인트, 추천 엔드포인트를 호출하여 카드에 할당될 데이터를 생성할 수 있습니다.

마지막으로, 정보를 추출하여 인쇄할 수 있도록 서식을 지정해야 합니다.

보안 블로그 게시물에 대해 질문하여 이를 테스트해 보겠습니다.

여기서 워크플로우가 생성한 콘솔의 카드를 볼 수 있습니다.

이 파일에서 모든 히트와 LLM 응답을 포함한 전체 결과를 확인하실 수 있습니다.

"보안 및 취약점"과 관련된 기사를 찾고 있습니다. 이 질문은 Elasticsearch에 저장된 문서에 대한 검색 쿼리로 사용됩니다. 검색된 결과는 모델로 전달되어 해당 콘텐츠를 기반으로 추천을 생성합니다. 보시다시피, 이 모델은 독자가 클릭하도록 동기를 부여할 수 있는 매력적인 짧은 텍스트를 훌륭하게 생성했습니다.

결론

이 예시는 Elasticsearch와 Hugging Face를 결합하여 AI 애플리케이션을 위한 빠르고 효율적인 중앙 집중식 시스템을 만드는 방법을 보여줍니다. 이 접근 방식은 수동 작업을 줄이고 Hugging Face의 광범위한 모델 카탈로그 덕분에 유연성을 제공합니다. SmolLM3-3B를 사용하면 특히 소형 다국어 모델이 시맨틱 검색과 결합될 때 여전히 의미 있는 추론과 콘텐츠 생성을 제공할 수 있음을 보여줍니다. 이러한 도구들을 함께 사용하면 지능형 콘텐츠 분석 및 다국어 애플리케이션 구축을 위한 확장성 있는 효과적인 기반을 마련할 수 있습니다.

이 콘텐츠가 얼마나 도움이 되었습니까?

도움이 되지 않음

어느 정도 도움이 됩니다

매우 도움이 됨

관련 콘텐츠

최첨단 검색 환경을 구축할 준비가 되셨나요?

충분히 고급화된 검색은 한 사람의 노력만으로는 달성할 수 없습니다. Elasticsearch는 여러분과 마찬가지로 검색에 대한 열정을 가진 데이터 과학자, ML 운영팀, 엔지니어 등 많은 사람들이 지원합니다. 서로 연결하고 협력하여 원하는 결과를 얻을 수 있는 마법 같은 검색 환경을 구축해 보세요.

직접 사용해 보세요