MariaDBDocumentStore

MariaDBDocumentStore

MariaDB를 백엔드로 사용하는 Haystack Document Store예요.

출처: MariaDBDocumentStore

본문

MariaDB 11.7+는 MHNSW 인덱싱을 갖춘 네이티브 VECTOR 데이터 타입을 도입해서, 어떤 확장도 없이 데이터베이스 안에서 효율적인 벡터 유사도 검색을 가능하게 해요.

자세한 내용은 MariaDB Vector 문서를 참고하세요.

MariaDB Document Store는 임베딩 검색, 키워드 검색, 메타데이터 필터링을 모두 지원해요.

설치

MariaDB 11.7 인스턴스를 빠르게 설정하려면 Docker를 사용하면 돼요.

docker run -d -p 3306:3306 \
 -e MARIADB_ROOT_PASSWORD=secret \
 -e MARIADB_DATABASE=haystack \
 -e MARIADB_USER=haystack \
 -e MARIADB_PASSWORD=secret \
 mariadb:11.7

mariadb 커넥터는 소스에서 빌드되는 C 확장이므로, MariaDB Connector/C 시스템 라이브러리(mariadb_config)가 필요해요.

# Ubuntu / Debian
sudo apt-get install -y libmariadb-dev

# macOS
brew install mariadb-connector-c

Haystack에서 MariaDB를 쓰려면 mariadb-haystack 통합을 설치해요.

pip install mariadb-haystack

사용법

자격 증명

데이터베이스 자격 증명을 환경 변수로 설정해요.

export MARIADB_USER=haystack
export MARIADB_PASSWORD=secret

초기화

MariaDBDocumentStore 객체를 초기화하고 문서를 작성해요.

import os
from haystack_integrations.document_stores.mariadb import MariaDBDocumentStore
from haystack import Document

os.environ["MARIADB_USER"] = "haystack"
os.environ["MARIADB_PASSWORD"] = "secret"

document_store = MariaDBDocumentStore(
    port=3306,
    database="haystack",
    embedding_dimension=768,
    distance="cosine",
)

document_store.write_documents(
    [
        Document(content="This is first", embedding=[0.1] * 768),
        Document(content="This is second", embedding=[0.3] * 768),
    ],
)
print(document_store.count_documents())

초기화 파라미터에 대해 더 알아보려면 API 문서를 확인하세요.

테이블 생성 파라미터

embedding_dimension, distance, create_vector_index 파라미터는 테이블이 처음 생성될 때(또는 recreate_table=True일 때)만 적용돼요. 나중에 바꿔도 기존 테이블에는 영향이 없어요.

테이블 생성 때 create_vector_index=True로 설정하면 빠른 근사 최근접 이웃 검색용 MHNSW 벡터 인덱스를 활성화해요. 하지만 이 경우 모든 문서에 null이 아닌 임베딩이 필요해요 — 임베딩이 없는 문서는 작성 시 오류를 일으켜요.

문서의 임베딩을 제대로 계산하려면 Document Embedder를 사용하면 돼요(예: SentenceTransformersDocumentEmbedder).

지원되는 Retriever

  • MariaDBEmbeddingRetriever: 쿼리 임베딩을 바탕으로 Document Store에서 문서를 가져오는 임베딩 기반 Retriever.
  • MariaDBKeywordRetriever: MariaDB의 전문(full-text) 검색으로 쿼리와 일치하는 문서를 가져오는 키워드 기반 Retriever.

더 알아보기 (Learn more)