추론 API와 함께 올라마 사용

Ollama API는 OpenAI API와 호환되므로 Ollama를 Elasticsearch와 매우 쉽게 통합할 수 있습니다.

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 애플리케이션을 만들 수 있습니다.

필수 구성 요소

  1. Elasticsearch 8.17
  2. Kibana 8.17
  3. Python

단계

  1. 올라마 LLM 서버 설정
  2. 매핑 만들기
  3. 데이터 인덱싱
  4. Playground를 사용하여 질문하기

올라마 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 모델을 다운로드하고 실행할 수 있는 도구입니다.

관련 콘텐츠

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

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

직접 사용해 보세요