Elasticsearch는 업계 최고 수준의 생성형 AI 도구 및 다양한 공급업체와 기본적으로 연동됩니다. Elastic 벡터 데이터베이스를 활용해 진행 중인 RAG 기본 넘어서기 또는 프로덕션 수준 앱 구축 웨비나를 확인해 보세요.
사용 사례에 가장 적합한 검색 솔루션을 구축하려면 무료 클라우드 체험판을 시작하거나 로컬 기기에서 Elastic을 지금 사용해 보세요.
이 문서에서는 Ollama를 사용해 로컬 모델을 Elasticsearch 추론 모델에 연결한 다음 Playground를 사용해 문서에 질문하는 방법을 알아보세요.
Elasticsearch는 사용자가 Open Inference API를 사용하여 LLM에 연결할 수 있도록 지원하며, Amazon Bedrock, Cohere, Google AI, Azure AI Studio, HuggingFace 등 서비스형 제공업체를 지원합니다.
Ollama는 자체 인프라(로컬 머신/서버)를 사용하여 LLM 모델을 다운로드하고 실행할 수 있는 도구입니다. 여기에서 Ollama와 호환되는 사용 가능한 모델 목록을 확인할 수 있습니다.
각 모델을 설정해야 하는 다양한 방법이나 모델 기능에 액세스하기 위한 API를 만드는 방법에 대해 걱정할 필요 없이 다양한 오픈 소스 모델을 호스팅하고 테스트하려는 경우 Ollama가 모든 것을 처리하므로 훌륭한 옵션이 될 수 있습니다.
Ollama API는 OpenAI API와 호환되므로 추론 모델을 쉽게 통합하고 Playground를 사용하여 RAG 애플리케이션을 만들 수 있습니다.
필수 구성 요소
- Elasticsearch 8.17
- Kibana 8.17
- Python
단계
올라마 LLM 서버 설정
LLM 서버를 설정하여 Ollama를 사용하여 Playground 인스턴스에 연결하겠습니다. 그래야 합니다:
- 올라마를 다운로드하여 실행합니다.
- ngrok을 사용하여 인터넷을 통해 Ollama를 호스팅하는 로컬 웹 서버에 액세스합니다.
Ollama 다운로드 및 실행
Ollama를 사용하려면 먼저 다운로드해야 합니다. Ollama는 Linux, Windows, macOS를 지원하므로 여기에서 사용 중인 OS와 호환되는 Ollama 버전을 다운로드하세요. Ollama가 설치되면 지원되는 LLM 목록에서 모델을 선택할 수 있습니다. 이 예에서는 일반적인 다국어 모델인 llama3.2 모델을 사용하겠습니다. 설정 과정에서 Ollama용 명령줄 도구를 활성화합니다. 다운로드가 완료되면 다음 줄을 실행하면 됩니다:
출력됩니다:
설치가 완료되면 다음 명령으로 테스트할 수 있습니다:
질문해 보겠습니다:

모델이 실행되면 Ollama는 포트 "11434" 에서 기본적으로 실행되는 API를 활성화합니다. 공식 문서에 따라 해당 API를 요청해 보겠습니다:
이것이 저희가 받은 답변입니다:
이 엔드포인트의 구체적인 응답은 스트리밍이라는 점에 유의하세요.
ngrok을 사용하여 엔드포인트를 인터넷에 노출하기
엔드포인트는 로컬 환경에서 작동하기 때문에 인터넷을 통해 다른 지점(예: Elastic Cloud 인스턴스)에서 액세스할 수 없습니다. ngrok을 사용하면 공인 IP를 제공하는 포트를 노출할 수 있습니다. ngrok에서 계정을 만들고 공식 설정 가이드를 따르세요.
ngrok 에이전트가 설치 및 구성되면 Ollama가 사용 중인 포트를 노출할 수 있습니다:
참고: --host-header="localhost:11434"헤더는 요청의 "호스트" 헤더가 "localhost:11434와 일치하는지 확인합니다."
이 명령을 실행하면 ngrok과 Ollama 서버가 로컬에서 실행되는 한 작동하는 공개 링크가 반환됩니다.
"포워딩" 에서 ngrok이 URL을 생성한 것을 볼 수 있습니다. 나중에 사용할 수 있도록 저장하세요.
이제 ngrok에서 생성한 URL을 사용하여 엔드포인트에 HTTP 요청을 다시 해보겠습니다:
응답은 이전 응답과 비슷해야 합니다.
매핑 만들기
ELSER 엔드포인트
이 예제에서는 Elasticsearch 추론 API를 사용하여 추론 엔드포인트를 생성하겠습니다. 또한 임베딩을 생성하는 데 ELSER를 사용합니다.
이 예제에서는 두 가지 종류의 약을 판매하는 약국이 있다고 가정해 보겠습니다:
- 처방전이 필요한 의약품.
- 처방전이 필요하지 않은 의약품.
이 정보는 각 약품의 설명 필드에 포함됩니다.
LLM은 이 필드를 해석해야 하므로 이것이 우리가 사용할 데이터 매핑입니다:
text_description 필드에는 설명의 일반 텍스트가 저장되고 semantic_text 필드 유형인 semantic_field 필드에는 ELSER에서 생성한 임베딩이 저장됩니다.
copy_to 속성은 필드 이름 및 text_description 의 콘텐츠를 시맨틱 필드에 복사하여 해당 필드에 대한 임베딩을 생성합니다.
데이터 인덱싱
이제 _bulk API를 사용하여 데이터를 색인해 보겠습니다.
대응:
Playground를 사용하여 질문하기
Playground는 Elasticsearch 인덱스와 LLM 공급자를 사용해 RAG 시스템을 빠르게 생성할 수 있는 Kibana 도구입니다. 자세한 내용은 이 도움말을 참조하세요.
로컬 LLM을 플레이그라운드에 연결
먼저 방금 만든 공개 URL을 사용하는 커넥터를 만들어야 합니다. Kibana에서 >플레이그라운드를 검색한 다음 "LLM에 연결" 을 클릭합니다.

이 작업을 수행하면 Kibana 인터페이스의 왼쪽에 메뉴가 표시됩니다. 거기에서 "OpenAI" 을 클릭합니다.

이제 OpenAI 커넥터 구성을 시작할 수 있습니다.
"커넥터 설정" 으로 이동하여 OpenAI 제공업체의 경우 "기타(OpenAI 호환 서비스)" 를 선택합니다:

이제 다른 필드를 구성해 보겠습니다. 이 예에서는 모델 이름을 "medicines-llm" 으로 지정합니다. URL 필드에는 ngrok에서 생성한 URL(/v1/chat/completions)을 사용합니다. "기본 모델" 필드에서 "llama3.2" 을 선택합니다. API 키를 사용하지 않으므로 임의의 텍스트를 입력하면 계속 진행할 수 있습니다:

"저장" 을 클릭하고 "데이터 소스 추가" 를 클릭하여 인덱스 의약품을 추가합니다:


좋아요! 이제 로컬에서 실행 중인 LLM을 RAG 엔진으로 사용하여 Playground에 액세스할 수 있습니다.

테스트하기 전에 상담원에게 더 구체적인 지침을 추가하고 모델에 전송되는 문서 수를 10개로 늘려서 답변에 사용 가능한 문서가 가장 많이 포함되도록 해 보겠습니다. 컨텍스트 필드는 semantic_field 이며, 여기에는 copy_to 속성 덕분에 약품의 이름과 설명이 포함됩니다.

이제 질문을 해보겠습니다: 처방전 없이 클로나제팜을 구입할 수 있나요? 를 클릭하고 어떤 일이 일어나는지 확인하세요:
예상대로 정답을 맞혔습니다.
다음 단계
다음 단계는 나만의 애플리케이션을 만드는 것입니다! Playground는 컴퓨터에서 실행하고 필요에 맞게 사용자 지정할 수 있는 Python 코드 스크립트를 제공합니다. 예를 들어, FastAPI 서버 뒤에 배치하여 UI에서 소비되는 QA 의약품 챗봇을 만들 수 있습니다.
이 코드는 Playground의 오른쪽 상단에 있는 코드 보기 버튼을 클릭하면 찾을 수 있습니다:

그리고 엔드포인트 & API 키를 사용하여 코드에 필요한 ES_API_KEY 환경 변수를 생성합니다.
이 특정 예제의 코드는 다음과 같습니다:
Ollama에서 작동하게 하려면 OpenAI 서버 대신 Ollama 서버에 연결하도록 OpenAI 클라이언트를 변경해야 합니다. 여기에서 OpenAI 예제 및 호환되는 엔드포인트의 전체 목록을 확인할 수 있습니다.
또한 완성 메서드를 호출할 때 모델을 llama3.2로 변경합니다:
질문을 추가해 보겠습니다: 처방전 없이 클로나제팜을 구입할 수 있나요? Elasticsearch 쿼리로 이동합니다:
또한 몇 번의 인쇄를 통해 완료 호출에도 Elasticsearch 결과를 질문 컨텍스트의 일부로 전송하고 있음을 확인할 수 있습니다:
이제 다음 명령을 실행해 보겠습니다.
pip install -qU elasticsearch openai
python main.py
다음과 같은 내용이 표시될 것입니다:
결론
이 글에서는 Ollama와 같은 도구를 Elasticsearch 추론 API 및 Playground와 함께 사용할 때 그 힘과 다양성을 확인할 수 있습니다.
몇 가지 간단한 단계를 거친 후, 자체 인프라에서 실행되는 LLM을 사용하는 채팅이 포함된 RAG 애플리케이션을 무료로 사용할 수 있게 되었습니다. 이를 통해 리소스와 민감한 정보를 더 잘 제어할 수 있을 뿐만 아니라 다양한 작업에 대한 다양한 모델에 액세스할 수 있습니다.
자주 묻는 질문
올라마란 무엇인가요?
Ollama는 자체 인프라(로컬 머신/서버)를 사용하여 LLM 모델을 다운로드하고 실행할 수 있는 도구입니다.




