BizSpring.ai AI 모드

지식센터 / 레퍼런스

Elasticsearch 기반의 Vector Database 구성 - BizSpring BLOG

Elasticsearch 기반의 Vector Database 구성 - BizSpring BLOG 콘텐츠로 건너뛰기 내비게이션 메뉴 인사이트 테크 활용 방법/사례 활용 방법/사례 성공사례 성공 사례 일반 광고/마케팅 에이전시 이커머스 미디어/콘텐츠 금융/핀테크 의료

핵심 요약

  • RAG 구현을 위해 Elasticsearch를 벡터 데이터베이스로 구성하는 방법을 소개하는 테크 글입니다.
  • Docker로 Elasticsearch 8.17.1 버전을 실행하고 Python, ollama와 연동해 벡터 검색 환경을 구축합니다.
  • 임베딩 모델과 챗 모델은 허깅페이스에서 pull 받아 사용하며 인덱스 생성, 문서 저장, 문서 검색 예시를 다룹니다.
  • 코사인 유사도를 이용해 저장된 임베딩과 유사한 문서를 검색하는 방식을 설명합니다.

Elasticsearch 기반의 Vector Database 구성 - BizSpring BLOG

콘텐츠로 건너뛰기

내비게이션 메뉴

인사이트

테크

활용 방법/사례

활용 방법/사례

성공사례

성공 사례 일반

광고/마케팅 에이전시

이커머스

미디어/콘텐츠

금융/핀테크

의료/헬스케어

통신/인터넷

뉴스/트렌드

릴리즈 노트

인터넷트렌드 ↗

웹사이트 ↗

# Elasticsearch 기반의 Vector Database 구성

2025년 02월 20일 2025년 02월 20일

테크

LLM 모델의 응답 정확도를 향상시키기 위해서는 RAG 기술의 적용이 필수적입니다. RAG에 필요한 데이터를 저장하는 벡터 데이터베이스에는 Faiss, Chroma, Elasticserach 등이 있습니다.

이번 글에서는 Elasticsearch 기반의 벡터 데이터베이스를 구성하고 간단한 예시를 살펴 보겠습니다.

Requirements

Python

Elasticserach(docker)

ollama

Elasticsearch

version: "3.8"

services:

elasticsearch:

image: docker.elastic.co/elasticsearch/elasticsearch:8.17.1

container_name: elasticsearch

environment:

volumes:

ports:

networks:

Elasticserach를 벡터 데이터베이스로 사용하기 위해서는 8버전 이상의 Elasticserach가 필요합니다. 여기서는 8.17.1버전의 이미지를 사용했습니다.

8.x 버전 이후의 Elasticserach는 Authentication 설정이 필요합니다. Elasticserach의 사용자 이름과 패스워드를 지정해주어야 합니다.

도커에 Elasticsearch 컨테이너를 실행합니다.

Python

pip install elasticsearch ollama python-dotenv

Python Elasticserach 클라이언트를 이용해 벡터 데이터베이스를 요청을 수행합니다.

dotenv에 패스워드 같은 민감한 정보와 Elasticserach의 정보를 저장했습니다.

# .env

EMBEDDING_MODEL="jeffh/intfloat-multilingual-e5-large-instruct:f16"

CHAT_MODEL="hf.co/heegyu/EEVE-Korean-Instruct-10.8B-v1.0-GGUF:Q5_K_M"

ES_URL="http://localhost:9200"

ES_USERNAME="elastic"

ES_PASSWORD="changeme"

ES_INDEX_NAME="vector1"

임베딩 모델과 챗 모델을 허깅페이스에서 pull 받아 사용합니다.

Elasticserach의 인덱스명은 vector1으로 지정했습니다.

Python 클라이언트와 Elasticserach 도커를 모두 구성했습니다. 이제 localhost:9200에 요청을 보내면 Elasticserach를 벡터 데이터베이스로 사용할 수 있습니다.

Example

인덱스 생성

  1. 문서 저장

embedding은 1024차원의 float 배열입니다. embedding을 생성하기 위해서는 ollama의 embedding 모델을 사용합니다.

  1. 문서 검색

저장과 동일하게 embedding을 생성한 후 코사인 유사도를 이용해 유사 데이터를 검색합니다.

유사한 데이터가 없을 경우 빈 리스트([])가 반환됩니다.

이 글에서는 Python과 Elasticsearch를 이용해 벡터 데이터베이스를 구성하는 방법에 대해서 알아보았습니다. Elasticsearch는 검색에 있어서 높은 성능을 보여 널리 사용되고 있기 때문에 RAG 구현을 위한 벡터 데이터베이스로 구성했을 때 높은 안정성을 얻을 수 있습니다.

문의 02-6919-5516 | ✉ sales@bizspring.co.kr

최신 마케팅/고객 데이터 활용 사례를 받아보실 수 있습니다.

비즈스프링 뉴스레터 구독하기 →

구글애즈가 정확검색·구문검색 키워드까지 AI 모드에 노출하기 시작했다 — 자동화 상품 없이 AI 답변 화면에 들어가는 첫 실험

AI가 React 앱을 직접 디버깅 – Agent 기반 디버깅

ChatGPT 광고가 픽셀·전환 API·맞춤 오디언스를 갖췄다 — 답변 화면이 측정 가능한 광고 매체가 되는 순간

AI 시대, 데이터도 설명이 필요합니다

MCP 클라이언트는 Authorization Server를 어떻게 찾는가: 공식 MCP TypeScript SDK와 VS Code 구현 비교

RAG 시대의 GEO: AI가 콘텐츠를 읽는 방식과 스키마의 진짜 역할

AI 에이전트로 웹 데이터 수집 가능 여부 자동 검증하기

GA4 Intraday 실시간 테이블, 대시보드 원천 데이터로 바로 사용할 수 있을까?

워크플로우 오케스트레이션 플랫폼 Temporal 알아보기

iOS 14.5부터 GA4까지, 환경 변화가 가져온 업무 폭증을 해결하는 실무 전략은…?

다음에 대해 검색하기...

최신 글 둘러보기

기존 SEO와 무엇이 같고 무엇이 다른가

콘텐츠가 답인 걸 모르는 사람은 없습니다 — 문제는 지속입니다

광고비를 늘리지 않고 매출을 늘린 회사들은 무엇을 했나

코호트로 비교하면 광고 예산 판단이 달라집니다

GEO를 위한 글쓰기를 위한 작은 노하우

(해외동향) 광고주가 광고플랫폼 리포트에서 자체 측정으로 옮겨가고 있다.

구글애즈가 정확검색·구문검색 키워드까지 AI 모드에 노출하기 시작했다 — 자동화 상품 없이 AI 답변 화면에 들어가는 첫 실험

AI가 React 앱을 직접 디버깅 – Agent 기반 디버깅

ChatGPT 광고가 픽셀·전환 API·맞춤 오디언스를 갖췄다 — 답변 화면이 측정 가능한 광고 매체가 되는 순간

마케팅 자동화, 무엇부터 자동화해야 할까?

출처: https://blog.bizspring.co.kr/%ed%85%8c%ed%81%ac/elasticsearch-%ea%b8%b0%eb%b0%98%ec%9d%98-vector-database-%ea%b5%ac%ec%84%b1/

자주 묻는 질문

Elasticsearch를 벡터 데이터베이스로 쓰려면 어떤 버전이 필요한가요?

8버전 이상의 Elasticsearch가 필요하며, 본문에서는 8.17.1 버전 이미지를 사용했습니다. 8.x 버전부터는 Authentication 설정이 필요해 사용자 이름과 패스워드를 지정해야 합니다.

필요한 준비물(Requirements)은 무엇인가요?

Python, Docker 기반 Elasticsearch, ollama가 필요합니다. Python 패키지로는 elasticsearch, ollama, python-dotenv를 설치합니다.

임베딩 모델과 챗 모델은 어디서 가져오나요?

임베딩 모델과 챗 모델은 허깅페이스에서 pull 받아 사용합니다. .env 파일에 EMBEDDING_MODEL과 CHAT_MODEL 값으로 지정합니다.

문서 검색은 어떻게 이루어지나요?

저장할 때와 동일하게 embedding을 생성한 후 코사인 유사도를 이용해 유사 데이터를 검색합니다. 유사한 데이터가 없을 경우 빈 리스트가 반환됩니다.

왜 Elasticsearch를 벡터 데이터베이스로 선택했나요?

Elasticsearch는 검색 성능이 높아 널리 사용되고 있기 때문에, RAG 구현을 위한 벡터 데이터베이스로 구성했을 때 높은 안정성을 얻을 수 있습니다.

다른 표현: Markdown · JSON · 최종 갱신 2026-09-06